日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

随机森林:对UCI数据集的分类实现

發布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 随机森林:对UCI数据集的分类实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
隨機森林:對UCI數據集的分類實現

關于隨機森林的原理網上有許許多多,這里不再贅述。sklearn中的RandomForestClassifier包即可滿足你對隨機森林的調用。
UCI數據集可在UCI官方頁面中進行下載并使用。
本文主要用于記錄筆者自己的代碼過程。
幾個簡易的數據集可從 sklearn.datasets中進行調用,如紅酒數據 wine,鳶尾花數據 iris,可參考知乎的這篇文章sklearn中的datasets數據集。
若數據中并非全部為數字,如有‘male’、‘female’等非數字數據,可調用sklearn.preprocessing進行transform。
關于參數的選擇可以進行迭代計算,然后進行可視化,如:

# 大致測試 n_estimators 的最優范圍 score1 = []for i in range(0, 150, 10):clf = RandomForestClassifier(n_estimators=i+1,n_jobs=-1,random_state=90)score = cross_val_score(clf, wine.data, wine.target, cv=5).mean()score1.append(score) print(max(score1)) print((score1.index(max(score1))*10)+1) plt.figure(figsize=[20,5]) plt.plot(range(1,151,10),score1) plt.show()

代碼結果如下圖所示,然后再進行調整。

RandomForest 有調參神器,在sklearn.model_selection中的GridSearchCV,可參考網頁。
代碼參考如下:

#調整 min_samples_leaf param_grid={'min_samples_leaf':np.arange(1, 4, 1)}rfc = RandomForestClassifier(n_estimators=14,random_state=90) GS = GridSearchCV(rfc,param_grid,cv=10) GS.fit(wine.data,wine.target)print(GS.best_params_)print(GS.best_score_)

最后進行結果參數評估,如acc, precision, recall等評估指標,代碼如下:

clf = RandomForestClassifier(n_estimators=14,random_state=90,min_samples_leaf=1,min_samples_split=9,criterion='gini') clf.fit(train_data, train_label) # 進行學習 train_pred_results=clf.predict(train_data) print('acc_train = ' + str(np.round(accuracy_score(train_pred_results, train_label), 5))) test_pred_results=clf.predict(test_data) print('acc_test = ' + str(np.round(accuracy_score(test_pred_results, test_label), 5))) print(classification_report(test_label, test_pred_results))

最后進行數據維度重要性可視化,參考代碼如下:

features = ['alcohol', 'malic_acid', 'ash', 'alcalinity_of_ash', 'magnesium', 'total_phenols', 'flavanoids', 'nonflavanoid_phenols','proanthocyanins', 'color_intensity', 'hue','od280/od315_of_diluted_wines', 'proline'] importances = clf.feature_importances_ indices = np.argsort(importances)[::-1] num_features = len(importances) print(num_features) #將特征重要度以柱狀圖展示 plt.figure() plt.title("Feature importances") plt.bar(range(num_features), importances[indices], color="g", align="center") plt.xticks(range(num_features), [features[i] for i in indices], rotation='45') plt.xlim([-1, num_features]) plt.show()#輸出各個特征的重要度 for i in indices:print ("{0} - {1:.3f}".format(features[i], importances[i]))

其可視化結果如下:

以及最終的混淆矩陣可視化,代碼如下:

import seaborn as sns import matplotlib as plt %matplotlib inline import matplotlib.pyplot as pltconf_mat = confusion_matrix(test_label, test_pred_results) sns.set(font_scale=3) plt.figure(figsize=(16,14)) sns.heatmap(conf_mat, annot=True, fmt="d", annot_kws={"size": 20}); plt.title("Confusion matrix", fontsize=30) plt.ylabel('True label', fontsize=25) plt.xlabel('Predict label', fontsize=25) plt.show()

其結果如下:

具體的各類解釋可以在網上找到許許多多,本文不作詳細解釋,給出大致的代碼參考,遇到不懂的再去調查學習,最后記錄,成長。

總結

以上是生活随笔為你收集整理的随机森林:对UCI数据集的分类实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。