ML之RF:基于RF算法实现案例(数据集samtrain.csv、samval.csv、samtest.csv)

简介: ML之RF:基于RF算法实现案例(数据集samtrain.csv、samval.csv、samtest.csv)

输出结果

image.png



核心代码


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

%pylab inline

# 导入训练集、验证集和测试集

import pandas as pd

samtrain = 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')

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_

# 用 "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]

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

# 因为pandas的 data frame 在第0列增加了一个假的未知列,所以我们从第1列开始。

# not using subject column, activity ie target is in last columns hence -2 i.e dropping last 2 cols

val_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)))

# 使用混淆矩阵来观察哪些活动被错误分类了。

# 详细说明请看 [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()

# 计算一下其他的对预测效果的评估指标

# 详细内容请看 [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



相关文章
|
5月前
|
数据采集 机器学习/深度学习 算法
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
142 4
|
3月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
80 0
|
3月前
|
存储 算法 搜索推荐
这些算法在实际应用中有哪些具体案例呢
【10月更文挑战第19天】这些算法在实际应用中有哪些具体案例呢
68 1
|
3月前
|
算法 数据可视化 新制造
Threejs路径规划_基于A*算法案例完整版
这篇文章详细介绍了如何在Three.js中完整实现基于A*算法的路径规划案例,包括网格构建、路径寻找算法的实现以及路径可视化展示等方面的内容。
105 0
Threejs路径规划_基于A*算法案例完整版
|
3月前
|
存储 算法 机器人
Threejs路径规划_基于A*算法案例V2
这篇文章详细介绍了如何在Three.js中使用A*算法进行高效的路径规划,并通过三维物理电路的实例演示了路径计算和优化的过程。
95 0
|
5月前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
126 2
|
13天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
146 80
|
2天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
2天前
|
算法
基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
本设计基于龙格库塔算法对锅炉单相受热管进行建模与MATLAB数值仿真,简化为喷水减温器和末级过热器组合,考虑均匀传热及静态烟气处理。使用MATLAB2022A版本运行,展示自编与内置四阶龙格库塔法的精度对比及误差分析。模型涉及热传递和流体动力学原理,适用于优化锅炉效率。

热门文章

最新文章