随机森林:对UCI数据集的分类实现
生活随笔
收集整理的這篇文章主要介紹了
随机森林:对UCI数据集的分类实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
隨機森林:對UCI數據集的分類實現
關于隨機森林的原理網上有許許多多,這里不再贅述。sklearn中的RandomForestClassifier包即可滿足你對隨機森林的調用。
UCI數據集可在UCI官方頁面中進行下載并使用。
本文主要用于記錄筆者自己的代碼過程。
幾個簡易的數據集可從 sklearn.datasets中進行調用,如紅酒數據 wine,鳶尾花數據 iris,可參考知乎的這篇文章sklearn中的datasets數據集。
若數據中并非全部為數字,如有‘male’、‘female’等非數字數據,可調用sklearn.preprocessing進行transform。
關于參數的選擇可以進行迭代計算,然后進行可視化,如:
代碼結果如下圖所示,然后再進行調整。
RandomForest 有調參神器,在sklearn.model_selection中的GridSearchCV,可參考網頁。
代碼參考如下:
最后進行結果參數評估,如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]))其可視化結果如下:
以及最終的混淆矩陣可視化,代碼如下:
其結果如下:
具體的各類解釋可以在網上找到許許多多,本文不作詳細解釋,給出大致的代碼參考,遇到不懂的再去調查學習,最后記錄,成長。
總結
以上是生活随笔為你收集整理的随机森林:对UCI数据集的分类实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 检测蓝牙 rssi,树莓派开
- 下一篇: NAT(网络地址转换)技术与代理服务器原