使用決策樹算法預(yù)測手機(jī)價格_第1頁
使用決策樹算法預(yù)測手機(jī)價格_第2頁
使用決策樹算法預(yù)測手機(jī)價格_第3頁
使用決策樹算法預(yù)測手機(jī)價格_第4頁
使用決策樹算法預(yù)測手機(jī)價格_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

頁共31頁附錄A程序代碼importpandasaspdimportseabornassnsfromsklearn.treeimportDecisionTreeClassifier,plot_treeimportmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_splitfromsklearn.treeimportDecisionTreeClassifierfromsklearn.metricsimportclassification_reportfromsklearn.model_selectionimportcross_val_scorefromsklearn.metricsimportf1_scorefromsklearn.metricsimportaccuracy_scorefromsklearn.metricsimportconfusion_matriximportwarningswarnings.filterwarnings('ignore')data=pd.read_csv('train.csv')#數(shù)據(jù)集print(data.T)#數(shù)據(jù)集倒置print(data.isna().sum())#檢查缺失值print(data.describe())#統(tǒng)計信息(非空,平均,標(biāo)準(zhǔn)差,最小,下四分位,中位,上四分位,最大)print(())#訓(xùn)練集的基本信息plt.figure(figsize=(20,12))sns.heatmap(data.corr(),annot=True)plt.show()#數(shù)值之間相關(guān)熱性圖x=data.drop(['price_range'],axis=1)#特征集y=data.price_range.values.reshape(-1,1)#目標(biāo)變量集x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)#劃分訓(xùn)練集,測試集#嘗試不同的深度參數(shù)depths=[1,2,3,4,5,6,7,8,9,10,None]#None表示不限制深度best_accuracy=0best_depth=Nonefordepthindepths:clf=DecisionTreeClassifier(max_depth=depth,random_state=42)clf.fit(x_train,y_train)y_pred=clf.predict(x_test)#預(yù)測測試集accuracy=accuracy_score(y_test,y_pred)#計算準(zhǔn)確率print(f"Depth:{depth},Accuracy:{accuracy}")#更新最佳準(zhǔn)確率和最佳深度ifaccuracy>best_accuracy:best_accuracy=accuracybest_depth=depthprint(f"Bestdepthfound:{best_depth}withaccuracy:{best_accuracy}")model=DecisionTreeClassifier(max_depth=8)#決策樹分類器,深度為8model.fit(x_train,y_train)#訓(xùn)練集訓(xùn)練決策樹分類器y_pred_train=model.predict(x_train)accuracy_train=accuracy_score(y_train,y_pred_train)print(f'Accuracyontrainingset:{accuracy_train:.2f}')#決策樹模型訓(xùn)練集中的準(zhǔn)確率y_pred=model.predict(x_test)print("_________________________________")print(accuracy_score(y_test,y_pred))#測試集的準(zhǔn)確率print("________________________________")print(classification_report(y_test,y_pred))#模型性能的主要分類指標(biāo)(精確度(Precision)召回率(Recall)F1分?jǐn)?shù)(F1-score)支持?jǐn)?shù)(Support)print("_____________________________________")print(confusion_matrix(y_test,y_pred))#每個類別的精確度(precision)、召回率(recall)、F1分?jǐn)?shù)以及支持?jǐn)?shù)(即該類別的樣本數(shù))#繪制混淆矩陣熱圖cm=confusion_matrix(y_test,y_pred)plt.figure(figsize=(10,7))sns.heatmap(cm,annot=True,cmap='coolwarm',fmt='d')#使用'coolwarm'色彩映射,并設(shè)置fmt='d'來顯示整數(shù)plt.xlabel('PredictedLabel')#X軸標(biāo)簽plt.ylabel('TrueLabel')#Y軸標(biāo)簽plt.title('ConfusionMatrix')#添加標(biāo)題plt.show()#顯示熱圖f1_macro=f1_score(y_test,y_pred,average='macro')#'micro'計算全局的F1分?jǐn)?shù)(所有類別的TP,FP,FN之和)f1_micro=f1_score(y_test,y_pred,average='micro')#'macro'計算每個類別的F1分?jǐn)?shù),然后取平均值(不考慮類別樣本數(shù)量)f1_weighted=f1_score(y_test,y_pred,average='weighted')#'weighted'計算每個類別的F1分?jǐn)?shù),然后取平均值,權(quán)重是各類別樣本數(shù)量的比例print('MacroF1Score:',f1_macro)print('MicroF1Score:',f1_micro)print('WeightedF1Score:',f1_weighted)#通過限制樹的最大深度來剪枝clf=DecisionTreeClassifier(max_depth=8,random_state=42)#訓(xùn)練模型clf.fit(x_train,y_train)#將類標(biāo)簽從整數(shù)轉(zhuǎn)換為字符串class_names=[str(cls)forclsinmodel.classes_]fig,ax=plt.subplots(figsize=(10,5))#調(diào)整畫布大小以適應(yīng)樹的大小plot_tree(model,feature_names=x_train.columns,#特征名稱class_names=class_names,#類標(biāo)簽名稱,轉(zhuǎn)換為字符串列表filled=True,#是否填充顏色來表示

溫馨提示

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

評論

0/150

提交評論