AI推薦模型的第一步-ok8_第1页
AI推薦模型的第一步-ok8_第2页
AI推薦模型的第一步-ok8_第3页
AI推薦模型的第一步-ok8_第4页
AI推薦模型的第一步-ok8_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AI推薦模型的第1步1第280章AI推薦模型的第1步280.0起步原始數據是儲存於CSV檔裡。為了呈現出來,成為2維的圖像。據儲存於CSV檔案裡。CSVK-means去分群。2By神鷹團隊280.1原始數據(來自客人的問卷)卷來作範例。例如,問卷裡有10個問題,每一個問題有4個答案:(A)、(B)、aAI推薦模型的第1步3準備把它儲存為*.csv檔案。首先點選<另存新檔>:然後,選取<*.csv>格式:4By神鷹團隊螢幕右下方,點選<工具/Web選項>:AI推薦模型的第1步5按下<確認>,返回:按下<儲存>,就存入於c:/ox_data/breakfirst.csv檔案裡。6By神鷹團隊手動打開這個*.csv檔案,呈現如下:已經把問卷內容,轉換為*.csv檔案了。AI推薦模型的第1步7280.2撰寫Python程式,讀取資料簡單程式,讀取*.csv檔案,看看其讀取的內容。。程式碼:##first_001.pyrtcsvimportnumpyasnpX=np.zeros((30,40),np.float32)withopen('c:/ox_data/breakfirst.csv')asf:myCsv=csv.reader(f)#headers=next(myCsv)forrowinmyCsv:#END輸出結果:8By神鷹團隊280.3讀取數據,將答案轉換為OHE編碼每一題的答案,都成為這位客人的一項特徵(Feature)。這是一種分類型特徵,所以轉換為OHE編碼。程式碼:##first_002.pyrtcsvimportnumpyasnpX=np.zeros((30,40),np.float32)withopen('c:/ox_data/breakfirst.csv')asf:myCsv=csv.reader(f)headers=next(myCsv)k0AI推薦模型的第1步9forforrowinmyCsv:printnrow])forjinrange(10):v=row[2+j]idxjif(v=='A'):X[k][idx]=1elif(v=='B'):X[k][idx+1]=1elif(v=='C'):X[k][idx+2]=1else:#'D'X[k][idx+3]=1k+=1if(k>=2):#END每一題的答案,都成為這位客人的一項特徵(Feature)。這是一種分類型特徵,所以轉換為OHE編碼。10By神鷹團隊於是,每一個客人,皆擴大為40項特徵。280.4建立AE模型,進行降維,並分群建立Autoencoder模型,每筆輸入40項特徵。輸入空間是40維的歐式空間。降為2維的隱藏空間(Latentspace)。vr訓練完成之後,其中間的隱藏層向量,就是降維的結果。最後將上述隱藏層向量,儲存於breakfirst_latent.csv檔案裡。程式碼:AIAI推薦模型的第1步11#first_003_latent.pyrtcsvimportnumpyasnpporttorchorchnnasnnfromtorch.autogradimportVariableimportmatplotlib.pyplotaspltX=np.zeros((30,40),np.float32)withopen('c:/ox_data/breakfirst.csv')asf:myCsv=csv.reader(f)headers=next(myCsv)k0forrowinmyCsv:forjinrange(10):v=row[2+j]idxjif(v=='A'):X[k][idx]=1elif(v=='B'):X[k][idx+1]=1elif(v=='C'):X[k][idx+2]=1else:#'D'X[k][idx+3]=1k+=1if(k>=30):112By神鷹團隊#==============================================tnSequentialnn.Sigmoid())self.Decoder=nn.Sequential()defforward(self,x):rhoptimizer_c=torch.optim.Adam(model_c.parameters(),lr=0.015)T=X.copy()numpyXfromnumpyTAIAI推薦模型的第1步13#放入變數裡vx=Variable(dx)vt=Variable(dt)train----ainepochs=500forepinrange(epochs):h,z=model_c(vx)optimizer_c.zero_grad()loss=lossFunc_c(z,vt)lossbackward()optimizer_c.step()if(ep%100==0):-printn\n')hiddenlayer-----------print('\n輸出Hidden向量\n')S=30h,z=model_c(vx)foriinrangeS:vhidetachnumpy14By神鷹團隊xtcoxdatabreakfirstlatentcsvhnpdelimiter-#END訓練500回合。訓練完成時,就會輸出:eakfirstlatentcsv案裡:AI推薦模型的第1步15完成<從40維下降到2維>了。內容是:完成了。16By神鷹團隊280.5使用plt來繪出<分群>情形tlatentcsv程式碼:##first_004_plt.pyrtcsvimportnumpyasnpimportmatplotlib.pyplotaspltfromnumpyimportgenfromtxtfish_csv_file='c:/ox_data/breakfirst_latent.csv'hh=genfromtxt(fish_csv_file,delimiter=',')shape=hh.shapeS=shape[0]N=shape[1]-kx=np.zeros((S),np.float32)ky=np.zeros((S),np.float32)foriinrangeS:feature=plt.scatter(kx,ky,color='b')pltxlimpltylim0,1.0)AI推薦模型的第1步17tshow-#END執行時,繪出:來呈現很明顯的3個群。18By神鷹團隊280.6使用K-means來分群展開分群,並且匯出圖形coxdatabreakfirstlatentcsv案讀取2維的向量數據。由於AE已經分群了,讓KMeans有一個很好的起始點,很快就完成程式碼:##first_005_kmean.pyimportnumpyasnpfromnumpyimportgenfromtxtfromsklearn.clusterimportKMeansimportmatplotlib.pyplotaspltfish_csv_file='c:/ox_data/breakfirst_latent.csv'h=genfromtxt(fish_csv_file,delimiter=',')shape=h.shapeAI推薦模型的第1步19SS=shape[0]N=shape[1]n_classes=3kmeans=KMeans(n_clusters=n_classes,random_state=0)#進行分群eansfith#預測labels=kmeans.predict(h)print\n----輸出各筆所屬群的標籤----\n')belsn#劃出各資料點plt.scatter(h[:,0],h[:,1],c=labels,s=50,cmap='viridis')#取出群心centers=kmeans.cluster_centers_#劃出群心plt.scatter(centers[:,0],centers[:,1],c='Red',s=200,alpha=0.5);tshow#END經由KMeans進行分群之後,輸出各筆資料所屬的<群標籤>。輸出20By神鷹團隊經由plt繪出如下:也繪出了群心(紅色)。繪出另一種圖形AI推薦模型的第1步21繼續使用matplotlib程式庫程式碼:#first_006_kmean.pyimportnumpyasnpfromnumpyimportgenfromtxtfromsklearn.clusterimportKMeansimportmatplotlib.pyplotaspltfish_csv_file='c:/ox_data/breakfirst_latent.csv'h=genfromtxt(fish_csv_file,delimiter=',')shape=h.shapeS=shape[0]N=shape[1]x=np.zeros((S),dtype=np.float32)y=np.zeros((S),dtype=np.float32)foriinrangeS:ihin_classes=3kmeans=KMeans(n_clusters=n_classes,random_state=0)#進行分群eansfith#預測labels=kmeans.predict(h)print\n----輸出各筆所屬群的標籤----\n')222By神鷹團隊belsnxa=np.zeros((S,2),dtype=32)foriinrangeS:labelsiai,1]=iteamgrouppointxy-------team=[]forninrange(n_classes):group=[]foriinrangeS:team.append(group)rintteam#取出群心centers=kmeans.cluster_centers_kx=np.array([0,0,0,0],dtype=np.float32)ky=np.array([0,0,0,0],dtype=np.float32)foriinrange(n_classes):AIAI推薦模型的第1步23sicentersi#k-means分群defdraw(team,fig):#plot:nodesconnecttoseedscygcaforindex,nodesinenumerate(team):fornodeinnodes:cx.append([node[0],kx[index]])cy.append([node[1],ky[index]])cxotcxicyicolorralphacy#繪圖feature=plt.scatter(x,y)iffig0):k_feature=plt.scatter(okx,oky)nk_feaure=plt.scatter(np.array(kx),np.array(ky),s=50)tshow draw(team,0) forindex,nodesinenumerate(team):printnindex)24By神鷹團隊forfornodeinnodes:xv=node[0]f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论