ML之RF:基于RF算法实现案例(数据集samtrain.csv、samval.csv、samtest.csv)
?
ML之RF:基于RF算法實(shí)現(xiàn)案例(數(shù)據(jù)集samtrain.csv、samval.csv、samtest.csv)
?
?
?
目錄
輸出結(jié)果
核心代碼
參考
?
?
?
輸出結(jié)果
核心代碼
#我們對(duì)訓(xùn)練集采用隨機(jī)森林模型,并評(píng)估模型效果%pylab inline # 導(dǎo)入訓(xùn)練集、驗(yàn)證集和測(cè)試集import pandas as pdsamtrain = pd.read_csv('samtrain.csv') samval = pd.read_csv('samval.csv') samtest = pd.read_csv('samtest.csv')# 使用 sklearn的隨機(jī)森林模型,其模塊叫做 sklearn.ensemble.RandomForestClassifier# 在這里我們需要將標(biāo)簽列 ('activity') 轉(zhuǎn)換為整數(shù)表示, # 因?yàn)镻ython的RandomForest package需要這樣的格式。 # 其對(duì)應(yīng)關(guān)系如下: # laying = 1, sitting = 2, standing = 3, walk = 4, walkup = 5, walkdown = 6 # 其代碼在 library randomforest.py 中。import randomforests as rf samtrain = rf.remap_col(samtrain,'activity') samval = rf.remap_col(samval,'activity') samtest = rf.remap_col(samtest,'activity')import sklearn.ensemble as sk rfc = sk.RandomForestClassifier(n_estimators=500, oob_score=True) train_data = samtrain[samtrain.columns[1:-2]] train_truth = samtrain['activity'] model = rfc.fit(train_data, train_truth)# 使用 OOB (out of band) 來對(duì)模型的精確度進(jìn)行評(píng)估. rfc.oob_score_# 用 "feature importance" 得分來看最重要的10個(gè)特征 fi = enumerate(rfc.feature_importances_) cols = samtrain.columns [(value,cols[i]) for (i,value) in fi if value > 0.04] ## 這個(gè)值0.4是我們通過經(jīng)驗(yàn)選取的,它恰好能夠提供10個(gè)最好的特征。 ## 改變這個(gè)值的大小可以得到不同數(shù)量的特征。 ## 下面這句命令是防止你修改參數(shù)弄亂了后回不來的命令備份。 ## [(value,cols[i]) for (i,value) in fi if value > 0.04]#我們對(duì)驗(yàn)證集和測(cè)試集使用predict()方法,并得到相應(yīng)的誤差。 # 因?yàn)閜andas的 data frame 在第0列增加了一個(gè)假的未知列,所以我們從第1列開始。 # not using subject column, activity ie target is in last columns hence -2 i.e dropping last 2 colsval_data = samval[samval.columns[1:-2]] val_truth = samval['activity'] val_pred = rfc.predict(val_data)test_data = samtest[samtest.columns[1:-2]] test_truth = samtest['activity'] test_pred = rfc.predict(test_data)#輸出誤差 print("mean accuracy score for validation set = %f" %(rfc.score(val_data, val_truth))) print("mean accuracy score for test set = %f" %(rfc.score(test_data, test_truth)))# 使用混淆矩陣來觀察哪些活動(dòng)被錯(cuò)誤分類了。 # 詳細(xì)說明請(qǐng)看 [5] import sklearn.metrics as skm test_cm = skm.confusion_matrix(test_truth,test_pred) test_cm# 混淆矩陣可視化 import pylab as pl pl.matshow(test_cm) pl.title('Confusion matrix for test data') pl.colorbar() pl.show()# 計(jì)算一下其他的對(duì)預(yù)測(cè)效果的評(píng)估指標(biāo) # 詳細(xì)內(nèi)容請(qǐng)看 [6],[7],[8],[9] # Accuracy print("Accuracy = %f" %(skm.accuracy_score(test_truth,test_pred))) # Precision print("Precision = %f" %(skm.precision_score(test_truth,test_pred))) # Recall print("Recall = %f" %(skm.recall_score(test_truth,test_pred)))# F1 Score print("F1 score = %f" %(skm.f1_score(test_truth,test_pred)))?
?
參考
[1] Original dataset as R data?https://spark-public.s3.amazonaws.com/dataanalysis/samsungData.rda
[2] Human Activity Recognition Using Smartphones
?http://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+Smartphones
[3] Android Developer Reference?http://developer.android.com/reference/android/hardware/Sensor.html
[4] Random Forests?http://en.wikipedia.org/wiki/Random_forest
[5] Confusion matrix?http://en.wikipedia.org/wiki/Confusion_matrix?
[6] Mean Accuracy?
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1054102&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D1054102
[7] Precision?http://en.wikipedia.org/wiki/Precision_and_recall?
[8] Recall?http://en.wikipedia.org/wiki/Precision_and_recall?
[9] F Measure?http://en.wikipedia.org/wiki/Precision_and_recall
總結(jié)
以上是生活随笔為你收集整理的ML之RF:基于RF算法实现案例(数据集samtrain.csv、samval.csv、samtest.csv)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成功解决Please use the N
- 下一篇: ML之SVM:基于sklearn的svm