• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于機器學習的在線學習者畫像的構(gòu)建與實現(xiàn)

    2023-01-15 09:23:06楊業(yè)壯
    無線互聯(lián)科技 2022年21期
    關(guān)鍵詞:樸素畫像貝葉斯

    陳 珂,湯 鑫,楊業(yè)壯

    (蘇州市職業(yè)大學,江蘇 蘇州 215004)

    0 引言

    隨著大數(shù)據(jù)、機器學習等技術(shù)的迅速發(fā)展,美國、英國、澳大利亞等國家已發(fā)布各自利用技術(shù)促進學習的相關(guān)計劃,《中國教育現(xiàn)代化2035》中也明確指出要努力推動信息技術(shù)與教育教學的深度融合,可見用信息技術(shù)改變教育已成為各國教育研究者關(guān)注的焦點。教育領(lǐng)域倡導以學習者為中心,為學習者提供精準化服務(wù),隨著網(wǎng)絡(luò)在線課程的發(fā)展和教育應(yīng)用軟件的升級,學習者畫像[1]的研究逐漸進入學界視野,與學習者畫像定義相關(guān)的更多是以“學習者畫像”“學生畫像”“數(shù)字畫像”“學習者肖像”等名詞呈現(xiàn),這使得學習者畫像在教育領(lǐng)域[2]的應(yīng)用更加貼切于教育教學的實際情境。

    本文對學習者畫像構(gòu)建[3]進行研究,將圍繞研究目標設(shè)計在線學習者畫像模型及其構(gòu)建流程,并在此基礎(chǔ)上將其應(yīng)用于在線學習過程,用于展現(xiàn)在線學習者的多維度特征[4],幫助學習者直觀明了地了解自己的整體學習情況,有利于促進學習者的參與度和學習效果。本研究獲取學習者學習過程中的行為數(shù)據(jù),并利用該行為數(shù)據(jù)和在線評測結(jié)果數(shù)據(jù)為學習者畫像,從而客觀地揭示學習者狀態(tài),對使用在線教學系統(tǒng)的學習者提高教學質(zhì)量、提高學習水平起到重要作用。

    1 數(shù)據(jù)預(yù)處理

    本文首先對在線學習者的學習行為痕跡進行了清洗和預(yù)處理,數(shù)據(jù)清洗主要包括去重、去空和刪除異常值等步驟,數(shù)據(jù)預(yù)處理是對清洗后的數(shù)據(jù)做處理匯總,得出分析處理后的數(shù)據(jù)。本文編寫MapReduce程序?qū)W習痕跡數(shù)據(jù)做清洗和預(yù)先處理,然后將學習行為數(shù)據(jù)導出為csv文件,以便為后續(xù)的學習者畫像分析做準備,這些學習行為數(shù)據(jù)的結(jié)構(gòu)包括用戶ID、學習天數(shù)、學習總時長、學習的章節(jié)數(shù)和在線測試成績等字段。具體的實現(xiàn)方法如下。

    1.1 Map()函數(shù)實現(xiàn)數(shù)據(jù)清洗

    Map()利用并行化思想來對數(shù)據(jù)進行有意義的篩選,去除csv文件中第1行的字段名和空值,提取登錄時間、學習時長、章節(jié)名稱等相關(guān)數(shù)據(jù)。Map輸出的鍵值對經(jīng)過shuffle過程,聚成后,會交給reduce()函數(shù)。

    if (key.get()==0){

    System.out.println(value.toString());

    return;//拋棄第一行數(shù)據(jù),

    }

    String rowvalue = value.toString();

    if (rowvalue.equals("") ∣∣ rowvalue =="") {

    return;//數(shù)據(jù)中存在空字符串

    }

    String[] strs = rowvalue.split("");

    //由登錄時間、學習時長、章節(jié)名稱組成的字符串

    String text =strs[1]+","+strs[2]+","+strs[3];

    key.set(strs[0]);//用戶id

    value.set(text);

    context.write(key,value);

    1.2 Reducer()函數(shù)統(tǒng)計學習者的登錄次數(shù),學習總時長和學習章節(jié)數(shù)

    Map過程輸出的鍵值對先經(jīng)過shuffle過程把key值相同的所有value值聚集起來形成values,此時values是對應(yīng)key字段的由登錄時間、學習時長、章節(jié)名稱組成的字符串的列表,然后將輸入reduce方法,reduce方法只要遍歷values后進行字符串分割后分別對學習時長求和以及求總天數(shù)、章節(jié)數(shù)求和、用戶名,即可得到某個學習者的行為數(shù)據(jù)。

    List logintime = new ArrayList();//存放登錄時間

    List duration = new ArrayList();//存放學習時長

    Set chaptername =new HashSet();//存放章節(jié)名稱,去除重復章節(jié)名

    List list = new ArrayList();

    for(Text t:values)

    list.add(t.toString());

    for(String str:list){

    String[] strs = str.split(",");

    logintime.add(strs[0]);

    duration.add(strs[1]);

    chaptername.add(strs[2]);

    }

    long dur_sum=0;

    for(String d :duration){

    dur_sum += Long.parseLong(d);//統(tǒng)計學習總時長

    }

    //用戶id、學習總時長、學習天數(shù)、學習的章節(jié)數(shù)、在線測試成績,組成一個字符串

    String recordstr = key.toString()+""+dur_sum+""+ dur_sum /24+""+chaptername.size()+""+score;

    text.set(recordstr);

    context.write(text,NullWritable.get());

    1.3 Job對象負責管理和運行MapReduce的一個計算任務(wù)

    在main()主函數(shù)中新建一個Job對象,負責管理和運行MapReduce的一個計算任務(wù),并設(shè)定任務(wù)的輸出和輸入路徑,將預(yù)處理后的數(shù)據(jù)保存為csv文件。

    2 建立機器學習模型

    經(jīng)過MapReduce清洗和預(yù)處理后的在線學習者的學習行為數(shù)據(jù)將用于構(gòu)建機器學習模型。為了挖掘?qū)W習行為與學業(yè)表現(xiàn)的相關(guān)性,本文運用Scikit-Learn庫中K-means模型,對學生各行為指標和學習績效指標進行相關(guān)分析[5]。學習者的參與程度和努力程度將會對學習者的學習質(zhì)量產(chǎn)生影響,因此了解學生的學習投入情況是至關(guān)重要的,并對學習投入程度過低的學習者進行有針對性的干預(yù)。本文確定了學習者2個特征指標,如表1所示。

    表1 學習者特征要素

    K-means是一種典型的聚類算法,該算法是基于不同對象特征值間的相似度,來確定對象的歸屬問題。本文使用K-means模型對預(yù)處理后的數(shù)據(jù)文件takypen.csv中數(shù)據(jù)進行聚類,以便分析成績與學習投入之間關(guān)系。takypen.csv文件包含有4個特征,分別如下:day_mean(學習天數(shù));play_mean(學習時長);chapters_mean(學習章節(jié)數(shù));score(在線測試成績)。前3個字段對應(yīng)學習投入指標,score字段對應(yīng)學習績效指標,通過KMeans模型訓練得到預(yù)測列type,該列即為預(yù)測出的學習投入度。

    2.1 Scikit-Learn庫中K-means模型的結(jié)構(gòu)

    sklearn.cluster.KMeans(n_clusters=8,init='k-means++',n_init=10,max_iter=300,tol=0.0001,

    precompute_distances='auto',verbose=0,random_state=None,

    copy_x=True,n_jobs=1,algorithm='auto')

    2.2 建立K-means聚類模型

    kmeans=KMeans(n_clusters=3,n_init=10,tol=0.0002, random_state=0).fit(X)

    2.3 模型評估

    #屬性Labels_是獲取每個點的分類

    labels=kmeans.labels_

    acc = float((labels==y).sum())/len(y)

    print('KMeans 準確率為:%.2f' %(acc))

    3 學習行為畫像的實現(xiàn)

    3.1 基于高斯樸素貝葉斯模型的學習者分類預(yù)測

    本文使用Scikit-Learn庫提供的高斯樸素貝葉斯模型構(gòu)建分類器,根據(jù)學習天數(shù)、學習時長、學習的章節(jié)數(shù)等行為特征來判斷學習者屬于哪一類,為學習者加一個分類標簽。takypen.csv文件中存放了學習行為特征數(shù)據(jù),使用GaussianNB類建立高斯樸素貝葉斯模型并進行學習者分類預(yù)測,實現(xiàn)方法如下。

    (1)數(shù)據(jù)歸一化處理,并建立訓練數(shù)據(jù)集。

    數(shù)據(jù)歸一化處理對于大部分機器學習算法而言都是一種常規(guī)要求,如果單個特征沒有或多或少地接近于標準正態(tài)分布,那么它可能并不能在模型中表現(xiàn)出很好的性能。利用preprocessing類的MinMaxScaler()提前對特征數(shù)據(jù)進行歸一化后再使用高斯樸素貝葉斯模型做訓練,模型準確率將會大大提升,即數(shù)據(jù)歸一化處理對模型評分會有一定程度的提升。

    data_csv = pd.read_csv('takypen.csv')

    X_train = preprocessing. MinMaxScaler (data_csv.drop(['type'],axis=1))

    y_train = np.ravel(data_csv[['type']])

    (2)通過訓練集,構(gòu)建高斯樸素貝葉斯模型。

    gb= GaussianNB()

    model_GaussinaNB = gb.fit(X_train,y_train)

    y_predict_GaussianNB= model_GaussinaNB.predict(X_test)

    print("y_predict_GaussianNB: ",y_predict_GaussianNB)

    (3)將一個新的測試數(shù)據(jù)(33,40,10)帶入模型得到預(yù)測結(jié)果如圖2所示,該模塊預(yù)測出學習者的標簽為簡單體驗者(Easy_learning),如圖1所示。

    圖1 運行結(jié)果

    z_data ={'day_mean':['33'],'play_mean':['40'],'chapters_mean':['10']}

    Z_data =pd.DataFrame(z_data,columns=['day_mean','play_mean','chapters_mean'])

    print('Test_data: ',Z_data)

    Z_model_predict=model_GaussinaNB.predict(Z_data)

    #每個標簽下樣本最大的概率

    Z_model_proba=model_GaussinaNB.predict_proba(Z_data)

    print('Test_predict:',Z_model_predict)

    print('Test_probability:',Z_model_proba)

    (4)預(yù)測結(jié)果的平均值和預(yù)測正確率,如圖1所示。

    y_test_mean=np.mean(y_predict_GaussianNB==y_test)

    print('y_test_GaussianNB_mean:%.2f '%y_test_mean)

    print('y_test_GaussianNB_ave_accuracy:%.2f '%gb.score(X_test,y_test))

    本研究以準確性、召回率和F1這3個指標對高斯樸素貝葉斯模型在分類任務(wù)上的性能進行評估,如圖2所示。

    圖2 分類任務(wù)評估

    由圖2可知,本研究通過高斯樸素貝葉斯分類器對測試樣本分類,可以得到平均準確率、平均召回率以及平均F1指標,分別為0.79,0.78和0.78。

    3.2 用戶畫像實現(xiàn)

    本文選取了用戶學習過程中12天的數(shù)據(jù)作為樣本進行研究,在前端JS文件中引用echarts.js來獲取學習者行為數(shù)據(jù),使用折線圖和柱狀圖進行展示。圖3可以很直觀地看出用戶訪問的次數(shù)和學習時長的總和及平均值分析結(jié)果。

    圖3 學習者畫像展示

    4 學習效果畫像的實現(xiàn)

    4.1 基于K-means算法的群體畫像分析

    采用構(gòu)建的K-means模型對takypen.csv中的數(shù)據(jù)進行訓練,得到的訓練結(jié)果中包含4個特征值列和1個目標值列。其中,目標值列包含了3個數(shù)字0,1,2,分別對應(yīng)的分類標簽為:Highl-yinvestment,Moderateinvestment,Lowinvestment。本文根據(jù)107個結(jié)果樣本數(shù)據(jù)中的這4個特征以及3類標簽來研究學習者的學習投入度與在線測試成績之間的關(guān)系[6],實現(xiàn)方法如下。

    4.1.1 導入數(shù)據(jù)并提取特征值和目標值

    訓練數(shù)據(jù)是由107個樣本和4列特征值組成,其中4列特征值為day_mean,play_mean,chapters_mean和score,學習投入度標簽Highlyinvestment,Moderatei-nvestment,Lowinvestment分別用數(shù)字0,1,2表示,type列是由標簽數(shù)組轉(zhuǎn)換成的數(shù)字數(shù)組。

    4.1.2 數(shù)據(jù)解析

    本研究通過describe()函數(shù)對每一個特征列數(shù)據(jù)進行統(tǒng)計,包括計數(shù)、均值、標準偏差、最小值、最大值、各個分位數(shù)等,執(zhí)行print(takypen.describe())后的運行結(jié)果如圖4所示。

    4.2 學習投入指標與學習表現(xiàn)

    本研究以三維散點圖分析各特征變量對學習成績的影響,并借助3個維度特征來反映學習者的學習效果,這三維特征分別是:在線測試成績、學習次數(shù)和學習時長。學習者群體畫像的三維散點圖如圖5所示。

    圖4 運行結(jié)果

    由圖5可知,學習者的學習投入偏高時,知識點掌握水平多為優(yōu)秀;學習投入中等偏低時,知識點掌握水平為中等水平;學習投入偏低時,知識點掌握水平則較差。綜上,聚類為高度投入的學習者整體學習情況優(yōu)秀,聚類為中度投入的學習者整體學習情況良好,聚類為低投入的學習者的整體學習情況較差。

    5 結(jié)語

    首先,本文通過MapReduce程序?qū)υ诰€學習者的痕跡數(shù)據(jù)進行數(shù)據(jù)清洗和預(yù)處理,從而得到了學習者的學習行為數(shù)據(jù)。其次,構(gòu)建K-means聚類模型為學習者生成學習投入度和學習效果的畫像信息,并根據(jù)學習天數(shù)、學習總時長、學習章節(jié)數(shù)等行為特征指標,使用高斯樸素貝葉斯模型構(gòu)建分類器對學習者分類,并采用K-means回歸方法對學習者進行了群體畫像分析,形成了3類學習者的群體畫像標簽。最后,本文使用Echarts和Seaborn生成相關(guān)數(shù)據(jù)圖表,以便對學習者畫像進行可視化展示。因為采集的學習者行為數(shù)據(jù)樣本數(shù)量不夠,所以本文選擇了高斯樸素貝葉斯的模型,該模型的特點就是對訓練數(shù)據(jù)量要求不大,如果訓練數(shù)據(jù)量比較大,還可以選擇其他的分類模型。

    圖5 群體畫像三維散點圖

    猜你喜歡
    樸素畫像貝葉斯
    威猛的畫像
    隔離樸素
    “00后”畫像
    畫像
    樸素的安慰(組詩)
    四川文學(2020年11期)2020-02-06 01:54:30
    他是那樣“笨拙”和樸素——30多年后,我們?yōu)槭裁催€需要讀路遙?
    當代陜西(2019年23期)2020-01-06 12:18:04
    最神奇最樸素的兩本書
    當代陜西(2019年9期)2019-05-20 09:47:38
    貝葉斯公式及其應(yīng)用
    基于貝葉斯估計的軌道占用識別方法
    一種基于貝葉斯壓縮感知的說話人識別方法
    電子器件(2015年5期)2015-12-29 08:43:15
    象州县| 海淀区| 镇远县| 陈巴尔虎旗| 类乌齐县| 佛坪县| 商都县| 赤城县| 朝阳县| 田阳县| 南华县| 兴隆县| 溧阳市| 德阳市| 鄂尔多斯市| 特克斯县| 旅游| 吴川市| 天气| 泽州县| 永嘉县| 宿松县| 龙胜| 竹溪县| 虹口区| 汽车| 莎车县| 安徽省| 湖北省| 邻水| 河源市| 吉木萨尔县| 瑞昌市| 湟中县| 山阳县| 神农架林区| 通榆县| 筠连县| 克拉玛依市| 娱乐| 安远县|