下載本文檔
版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026青海西寧城西區(qū)西部礦業(yè)集團有限公司黨務工作部門業(yè)務崗位選聘5人參考考試試題附答案解析
- 酒廠生產(chǎn)廠長規(guī)章制度
- 2026湖南長沙市雨花區(qū)中雅培粹雙語中學合同制教師招聘參考考試題庫附答案解析
- 生產(chǎn)體系交付管理制度
- 生產(chǎn)企業(yè)招聘制度
- 2026甘肅白銀市平川區(qū)容通水務有限公司招聘9人備考考試題庫附答案解析
- 生產(chǎn)車間雙面膠管理制度
- 2026河南鄭州管城回族區(qū)嵩陽學校(小學部)招聘3人參考考試題庫附答案解析
- 造紙廠鍋爐安全生產(chǎn)制度
- 安全生產(chǎn)指揮官制度
- 2026年高考語文復習散文閱讀(四)
- 眼部艾灸課件
- 學堂在線 雨課堂 學堂云 實繩結(jié)技術(shù) 期末考試答案
- 乘務長崗位面試技巧與實戰(zhàn)經(jīng)驗分享
- 氣道濕化方法與指南
- 國家電力安全生產(chǎn)課件
- 2025年四川公務員面試真題及答案
- 安裝吊扇施工方案
- 分紅、年金、萬能保險測試題附答案
- GB/T 46456.3-2025信息技術(shù)設備互連智能家居互聯(lián)互通第3部分:局域互聯(lián)通用要求
- 國家基層高血壓防治管理指南 2025版圖文解讀
評論
0/150
提交評論