9. 监督学习实例——运动状态预测
2017-08-09 18:26
295 查看
代码
代码
""" 可穿戴式设备的流行,让我们可以更便利地使用传感器获取人体的各项数据,甚至是生理数据。 当传感器采集到大量数据后,我们就可以通过对数据进行分析和建模,通过各项特征的数值进行 用户状态的判断,根据用户所处的状态提供给用户更加精准、便利的服务。 我们现在收集了来自A,B,C,D,E 5位用户的可穿戴设备上的传感器数据,每位用户的数据集包含 一个特征文件(a.label)和一个标签文件(a.feature)。 特征文件中每一行对应一个时刻的所有传感器数值,标签文件中每行记录了和特征文件中对应时刻 的标记过的用户姿态,两个文件的行数相同,相同行之间互相对应。 """ import pandas as pd import numpy as np # 导入预处理模块 Imputer from sklearn.preprocessing import Imputer # 导入自动生成训练集和测试集的模块 train_test_split from sklearn.cross_validation import train_test_split # 导入预测结果评估模块 classification_report from sklearn.metrics import classification_report # K近邻分类器 from sklearn.neighbors import KNeighborsClassifier # 决策树分类器 from sklearn.tree import DecisionTreeClassifier # 高斯朴素贝叶斯函数 from sklearn.naive_bayes import GaussianNB def load_dataset(feature_paths, label_paths): """ :param feature_paths: 特征文件的列表 :param label_paths: 标签文件的列表 :return: 特征文件列表和标签文件列表中的内容 """ feature = np.ndarray(shape=(0, 41)) label = np.ndarray(shape=(0, 1)) for file in feature_paths: # 使用逗号分隔符读取特征数据,将问号替换标记为缺省值,文件中不含表头 df = pd.read_table(file, delimiter=',', na_values='?', header=None) # 使用平均值补全缺失值,然后将数据进行补全 imp = Imputer(missing_values='NaN', strategy='mean', axis=0) imp.fit(df) df = imp.transform(df) # 将新读入的数据合并到特征集合中 feature = np.concatenate((feature, df)) for file in label_paths: # 读取标签数据,文件不包含表头 df = pd.read_table(file, header=None) # 将新读入的数据合并到标签集合中 label = np.concatenate((label, df)) # 将标签规整为一维向量 label = np.ravel(label) return feature, label if __name__ == '__main__': ''' 数据路径 ''' featurePaths = ['Data/A/A.feature', 'Data/B/B.feature', 'Data/C/C.feature', 'Data/D/D.feature', 'Data/E/E.feature'] labelPaths = ['Data/A/A.label', 'Data/B/B.label', 'Data/C/C.label', 'Data/D/D.label', 'Data/E/E.label'] ''' 读入数据 ''' # 将前四个数据作为训练集读入 x_train, y_train = load_dataset(featurePaths[:4], labelPaths[:4]) # 将最后一个数据作为测试集读入 x_test, y_test = load_dataset(featurePaths[4:], labelPaths[4:]) # 使用全量数据作为训练集,借助train_test_split函数将训练数据打乱 # 通过设置测试比例test_size为0,将数据随机打乱,便于后续分类器的初始化和训练 x_train, x_, y_train, y_ = train_test_split(x_train, y_train, test_size=0.0) # knn print('Start training knn') knn = KNeighborsClassifier().fit(x_train, y_train) print('Training done') answer_knn = knn.predict(x_test) print('Prediction done') # DT print('Start training DT') dt = DecisionTreeClassifier().fit(x_train, y_train) print('Training done') answer_dt = dt.predict(x_test) print('Prediction done') # Bayes print('Start training Bayes') gnb = GaussianNB().fit(x_train, y_train) print('Training done') answer_gnb = gnb.predict(x_test) print('Prediction done') print('\n\nThe classification report for knn:') print(classification_report(y_test, answer_knn)) print('\n\nThe classification report for DT:') print(classification_report(y_test, answer_dt)) print('\n\nThe classification report for Bayes:') print(classification_report(y_test, answer_gnb))
相关文章推荐
- 人体运动状态预测-实例分析
- Python机器学习应用 | 人体运动状态预测
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 深度学习实例1-----利用深度学习keras工具包实现销量预测
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 监督学习1——房价预测(案例)--待补充
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 深度学习Caffe平台实例——CIFAR-10数据集在caffe平台上模型训练及实例使用模型进行预测
- activiti学习--05流程实例:查询流程状态+查询历史任务+查询历史流程实例
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- Oracle11g学习笔记_20170510_Oracle数据库实例的状态
- 状态模式的实例学习
- 如何将时间序列预测问题转换为python中的监督学习问题
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN