随机森林训练

视频:https://www.bilibili.com/video/av50873926/

数据及源码:

我们对训练集采用随机森林模型,并评估模型效果

%pylab inline
# 导入训练集、验证集和测试集import pandas as pdsamtrain = pd.read_csv('samtrain.csv')
samval = pd.read_csv('samval.csv')
samtest = pd.read_csv('samtest.csv')# 使用 sklearn的随机森林模型,其模块叫做 sklearn.ensemble.RandomForestClassifier# 在这里我们需要将标签列 ('activity') 转换为整数表示,
# 因为Python的RandomForest package需要这样的格式。  # 其对应关系如下:
# 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')
Populating the interactive namespace from numpy and matplotlib
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) 来对模型的精确度进行评估.
rfc.oob_score_
输出
0.98174904942965779
# 用 "feature importance" 得分来看最重要的10个特征
fi = enumerate(rfc.feature_importances_)
cols = samtrain.columns
[(value,cols[i]) for (i,value) in fi if value > 0.04]
## 这个值0.4是我们通过经验选取的,它恰好能够提供10个最好的特征。
## 改变这个值的大小可以得到不同数量的特征。
## 下面这句命令是防止你修改参数弄乱了后回不来的命令备份。
## [(value,cols[i]) for (i,value) in fi if value > 0.04]
输出
[(0.048788075395111638, 'tAccMean'),(0.044887862923922571, 'tAccStd'),(0.044231502495174914, 'tJerkMean'),(0.04892499919665521, 'tGyroJerkMagSD'),(0.058161561399143025, 'fAccMean'),(0.0448666616780896, 'fJerkSD'),(0.14045995765086935, 'angleGyroJerkGravity'),(0.16538335816293095, 'angleXGravity'),(0.047154808012715918, 'angleYGravity')]

我们对验证集和测试集使用predict()方法,并得到相应的误差。

# 因为pandas的 data frame 在第0列增加了一个假的未知列,所以我们从第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)))
mean accuracy score for validation set = 0.834911
mean accuracy score for test set = 0.900337
# 使用混淆矩阵来观察哪些活动被错误分类了。
# 详细说明请看 [5]
import sklearn.metrics as skm
test_cm = skm.confusion_matrix(test_truth,test_pred)
test_cm
array([[293,   0,   0,   0,   0,   0],[  0, 224,  40,   0,   0,   0],[  0,  29, 254,   0,   0,   0],[  0,   0,   0, 197,  26,   6],[  0,   0,  16,   1, 173,  26],[  0,   0,   0,   3,  14, 183]])

# 混淆矩阵可视化

import pylab as pl
pl.matshow(test_cm)
pl.title('Confusion matrix for test data')
pl.colorbar()
pl.show()

# 计算一下其他的对预测效果的评估指标
# Accuracy
print("Accuracy = %f" %(skm.accuracy_score(test_truth,test_pred)))
Accuracy = 0.900337
# 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)))
Precision = 0.902996
Recall = 0.900337
F1 score = 0.900621

决策树、随机森林及代码实战相关推荐

  1. 决策树随机森林GBDTXGBoost学习笔记以及代码实现

    文章目录 1. 引入 1.1 决策树 1.2 随机森林 1.3 GBDT(Gradient Boosting Decision Tree)梯度提升决策树 1.4 XGBoost(eXtreme Gra ...

  2. spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  3. 人工智能之随机森林算法项目实战

    文章目录 (1)随机森林算法介绍 随机性体现 (2)随机森林应用场景 (3) Spark随机森林训练和预测过程 训练 预测 分类 回归 (4) Spark随机森林模型参数详解 (5) Spark随机森 ...

  4. 决策树 随机森林 xgboost_从决策树到随机森林理论篇从人话到鬼话:看不懂来找我麻烦...

    从决策树产生的一些列的问题,过度到随机森林: 全文大概要阅读10分钟: 随机森林算法范畴 监督学习分类算法,基模型是由决策树组成 决策树 决策树模型与学习 特征选择 决策树生成 决策树剪枝 CART算 ...

  5. 随机森林的java算法_spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  6. 【机器学习基础】(五):通俗易懂决策树与随机森林及代码实践

    与SVM一样,决策树是通用的机器学习算法.随机森林,顾名思义,将决策树分类器集成到一起就形成了更强大的机器学习算法.它们都是很基础但很强大的机器学习工具,虽然我们现在有更先进的算法工具来训练模型,但决 ...

  7. 机器学习实战之分类算法(K-近邻/朴素贝叶斯/决策树/随机森林)

    机器学习分类算法 1. 机器学习算法简介 1.1 按照学习方式分类 1.2 区别 1.3 关于监督学习中的分类与回归区别 1.4 机器学习开发流程 2. 数据集介绍与划分 2.1 sklearn数据集 ...

  8. 基于scikit-learn的随机森林调参实战

    写在前面 在之前一篇机器学习算法总结之Bagging与随机森林中对随机森林的原理进行了介绍.还是老套路,学习完理论知识需要实践来加深印象.在scikit-learn中,RF的分类类是RandomFor ...

  9. 集成算法-随机森林与案例实战-泰坦尼克获救预测

    集成算法-随机森林 Ensemble learning 目的:让机器学习效果更好,单个不行,群殴走起 Bagging:训练多个分类器取平均 f ( x ) = 1 / M ∑ m = 1 M f m ...

  10. 决策树随机森林GBDT

    决策树算法 这篇文章: https://zhuanlan.zhihu.com/p/26703300  对决策树算法说的非常深入浅出 决策树模型核心是下面几个部分: (1) 结点和有向边组成 (2) 结 ...

最新文章

  1. 非常详细的sift算法原理解析
  2. 实验六 html网页设计,网页设计.html · 谢泽华/面向对象与软件工程实验二:网页模仿 - Gitee.com...
  3. 打破数据统一的七大原则
  4. 在最长的距离二叉树结点
  5. UVA 10594 Data Flow
  6. Ubuntu Server 16.04 LTS上安装Docker(使用脚本的方式)
  7. NDK error Error 126 make: *** Deleting file
  8. 您真的需要instanceof吗?
  9. C++程序内存泄漏都与哪些方面有关,该如何处理和避免
  10. 如何安装python3.7.2_Python3.7与Python2.7在centos7下兼容并存
  11. Java-Set、Map
  12. postfix邮件系统之邮件客户端无法收邮件问题解析
  13. Slickedit 打开Qt工程
  14. 机器学习之协方差矩阵、黑塞矩阵、标准差椭圆和EM算法
  15. python Only timezones from the pytz library are supported
  16. 流程框图-各方框含义
  17. 滤波器原理及其作用计算机网络,三种滤波器的工作原理
  18. Pandas CSV 文件
  19. 六、银行会计核算(全是重点)
  20. OSEK直接网络管理软件开发

热门文章

  1. 智能鱼塘远程检测控制系统
  2. Python 关键字(keyword)
  3. Latex中的括号用法总结
  4. C/C++中取地址符的语义
  5. 莱维特LEWITT声卡驱动安装设置方法
  6. android 雷电模拟器 hook,133 对安卓雷电模拟器的折腾
  7. pwnable.kr 第一题fd
  8. 天泉证道四句教与价值观
  9. 计算机cpu和内存不足,电脑内存不足的解决方法
  10. 安装nodejs时:The error code is 2503.