Python實現(xiàn)機器學習算法的分類_第1頁
Python實現(xiàn)機器學習算法的分類_第2頁
Python實現(xiàn)機器學習算法的分類_第3頁
Python實現(xiàn)機器學習算法的分類_第4頁
Python實現(xiàn)機器學習算法的分類_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第Python實現(xiàn)機器學習算法的分類#標簽向量為labels,標簽向量的元素數(shù)目和矩陣dataSet的行數(shù)相同

#參數(shù)k表示選擇最近鄰居的數(shù)目

defclassify0(inx,data_set,labels,k):

"""實現(xiàn)k近鄰"""

data_set_size=data_set.shape[0]#數(shù)據(jù)集個數(shù),即行數(shù)

diff_mat=np.tile(inx,(data_set_size,1))-data_set#各個屬性特征做差

sq_diff_mat=diff_mat**2#各個差值求平方

sq_distances=sq_diff_mat.sum(axis=1)#按行求和

distances=sq_distances**0.5#開方

sorted_dist_indicies=distances.argsort()#按照從小到大排序,并輸出相應的索引值

class_count={}#創(chuàng)建一個字典,存儲k個距離中的不同標簽的數(shù)量

foriinrange(k):

vote_label=labels[sorted_dist_indicies[i]]#求出第i個標簽

#訪問字典中值為vote_label標簽的數(shù)值再加1,

#class_count.get(vote_label,0)中的0表示當為查詢到vote_label時的默認值

class_count[vote_label[0]]=class_count.get(vote_label[0],0)+1

#將獲取的k個近鄰的標簽類進行排序

sorted_class_count=sorted(class_count.items(),

key=operator.itemgetter(1),reverse=True)

#標簽類最多的就是未知數(shù)據(jù)的類

returnsorted_class_count[0][0]

deffunc_knn(X_train,X_test,y_train,y_test):

print("k近鄰:")

kk=[iforiinrange(3,30,5)]#k的取值

t_precision=[]

t_recall=[]

t_accuracy=[]

t_f1_score=[]

forninkk:

y_predict=[]

forxinX_test.values:

a=classify0(x,X_train.values,y_train.values,n)#調(diào)用k近鄰分類

y_predict.append(a)

t=classification_report(y_test,y_predict,target_names=['3','4','5','6','7','8'],output_dict=True)

print(t)

t_accuracy.append(t["accuracy"])

t_precision.append(t["weightedavg"]["precision"])

t_recall.append(t["weightedavg"]["recall"])

t_f1_score.append(t["weightedavg"]["f1-score"])

plt.figure("數(shù)據(jù)未處理k近鄰")

plt.subplot(2,2,1)

#添加文本#x軸文本

plt.xlabel('k值')

#y軸文本

plt.ylabel('accuracy')

plt.title('不同k值下的accuracy')

plt.plot(kk,t_accuracy,color="r",marker="o",line)

plt.yticks(np.arange(0,1,0.1))

plt.subplot(2,2,2)

#添加文本#x軸文本

plt.xlabel('k值')

#y軸文本

plt.ylabel('precision')

plt.title('不同k值下的precision')

plt.plot(kk,t_precision,color="r",marker="o",line)

plt.yticks(np.arange(0,1,0.1))

plt.subplot(2,2,3)

#添加文本#x軸文本

plt.xlabel('k值')

#y軸文本

plt.ylabel('recall')

plt.title('不同k值下的recall')

plt.plot(kk,t_recall,color="r",marker="o",line)

plt.yticks(np.arange(0,1,0.1))

plt.subplot(2,2,4)

#添加文本#x軸文本

plt.xlabel('k值')

#y軸文本

plt.ylabel('f1_score')

plt.title('不同k值下的f1_score')

plt.plot(kk,t_f1_score,color="r",marker="o",line)

plt.yticks(np.arange(0,1,0.1))

plt.show()

deffunc_randomforest(X_train,X_test,y_train,y_test):

print("隨機森林:")

t_precision=[]

t_recall=[]

t_accuracy=[]

t_f1_score=[]

kk=[10,20,30,40,50,60,70,80]#默認樹的數(shù)量

forninkk:

clf=RandomForestClassifier(n_estimators=n,max_depth=100,min_samples_split=2,random_state=10,verbose=True)

clf.fit(X_train,y_train)

predic=clf.predict(X_test)

print("特征重要性:",clf.feature_importances_)

print("acc:",clf.score(X_test,y_test))

t=classification_report(y_test,predic,target_names=['3','4','5','6','7','8'],output_dict=True)

print(t)

t_accuracy.append(t["accuracy"])

t_precision.append(t["weightedavg"]["precision"])

t_recall.append(t["weightedavg"]["recall"])

t_f1_score.append(t["weightedavg"]["f1-score"])

plt.figure("數(shù)據(jù)未處理深度100(隨機森林)")

plt.subplot(2,2,1)

#添加文本#x軸文本

plt.xlabel('樹的數(shù)量')

#y軸文本

plt.ylabel('accuracy')

plt.title('不同樹的數(shù)量下的accuracy')

plt.plot(kk,t_accuracy,color="r",marker="o",line)

plt.yticks(np.arange(0,1,0.1))

plt.subplot(2,2,2)

#添加文本#x軸文本

plt.xlabel('樹的數(shù)量')

#y軸文本

plt.ylabel('precision')

plt.title('不同樹的數(shù)量下的precision')

plt.plot(kk,t_precision,color="r",marker="o",line)

plt.yticks(np.arange(0,1,0.1))

plt.subplot(2,2,3)

#添加文本#x軸文本

plt.xlabel('樹的數(shù)量')

#y軸文本

plt.ylabel('recall')

plt.title('不同樹的數(shù)量下的recall')

plt.plot(kk,t_recall,color="r",marker="o",line)

plt.yticks(np.arange(0,1,0.1))

plt.subplot(2,2,4)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論