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



相关文章
|
2月前
|
数据采集 机器学习/深度学习 算法
|
2月前
|
数据采集 机器学习/深度学习 算法
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
本文通过K-Means聚类算法对NBA球员数据进行聚类分析,旨在揭示球员间的相似性和差异性,为球队管理、战术决策和球员评估提供数据支持,并通过特征工程和结果可视化深入理解球员表现和潜力。
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
|
2月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
101 1
|
2月前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
56 2
|
2月前
|
机器学习/深度学习 算法 数据可视化
决策树算法介绍:原理与案例实现
决策树算法介绍:原理与案例实现
|
2月前
|
数据采集 机器学习/深度学习 算法
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
|
3月前
|
算法
Raid5数据恢复—Raid5算法简介&raid5磁盘阵列数据恢复案例
Raid5算法也被称为“异或运算”。异或是一个数学运算符,它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。异或的运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。 异或也叫半加运算,其运算法则相当于不带进位的二进制加法。二进制下用1表示真,0表示假。异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。 异或略称为XOR、EOR、EX-OR,程序中有三种演算子:XOR、xor、⊕。使用方法如下z = x ⊕ y z
Raid5数据恢复—Raid5算法简介&raid5磁盘阵列数据恢复案例
|
3天前
|
传感器 算法 C语言
基于无线传感器网络的节点分簇算法matlab仿真
该程序对传感器网络进行分簇,考虑节点能量状态、拓扑位置及孤立节点等因素。相较于LEACH算法,本程序评估网络持续时间、节点死亡趋势及能量消耗。使用MATLAB 2022a版本运行,展示了节点能量管理优化及网络生命周期延长的效果。通过簇头管理和数据融合,实现了能量高效和网络可扩展性。
|
1月前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
|
1月前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
下一篇
无影云桌面