人体运动状态预測-实例分析

背景介绍 :

? 可穿戴式设备的流行。让我们能够更便利地使用传感器获取人体的各项数据, 甚至生理数据。

? 当传感器採集到大量数据后。我们就能够通过对数据进行分析和建模。通过 各项特征的数值进行用户状态的推断。依据用户所处的状态提供给用户更加 精准、便利的服务。

数据介绍:

? 我们如今收集了来自 A, B, C, D, E 5 位用户的可穿戴设备上的传感器数据, 每位用户的数据集包括一个特征文件 (a.feature) 和一个标签文件 (a.label)。

? 特征文件里每一行相应一个时刻的全部传感器数值。标签文件里每行记录了 和特征文件里相应时刻的标记过的用户姿态。两个文件的行数同样。同样行 之间互相相应。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEwNDYxMzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

任务介绍

? 假设如今出现了一个新用户。但我们仅仅有传感器採集的数据。那么该怎样得到 这个新用户的姿态呢?

? 又或者对同一用户假设传感器採集了新的数据。怎么样依据新的数据推断当前 用户处于什么样的姿态呢?

在明白这是一个分类问题的情况下,我们能够选定某种分类模型(或者说是

算法),通过使用训练数据进行模型学习。然后对每一个測试样本给出相应的分类

结果。

机器学习的分类算法众多,在接下来的学习中我们将会具体介绍经典的分类 算法,如K近邻、决策树和朴素贝叶斯的原理和实现。

基本分类模型:

K近邻分类器(KNN)

KNN:通过计算待分类数据点。与 已有数据集中的全部数据点的距离。

取 距离最小的前K个点,依据“少数服从 多数“的原则,将这个数据点划分为出 现次数最多的那个类别。

sklearn 中的 K 近邻分类器

在 sklearn 库中,能够使用 sklearn.neighbors.KNeighborsClassifier 创建一个 K 近邻分类器,主要參数有:

? n_neighbors : 用于指定分类器中K的大小(默认值为 5,注意与 kmeans 的差别)

? weights : 设置选中的K个点对分类结果影响的权重( 默认值为平均 权重 “uniform”,能够选择 “distance” 代表越近的点权重越高, 或者传入自己编写的以距离为參数的权重计算函数 )

? algorithm : 设置用于计算临近点的方法,由于当数据量非常大的情况

下计算当前点和全部点的距离再选出近期的k各点,这个计算量是非常 费时的。所以(选项中有 ball_tree、kd_tree 和 brute,分别代表不 同的寻找邻居的优化算法,默认值为 auto,依据训练数据自己主动选择)

KNN的使用经验

在实际使用时,我们能够使用全部训练数据构成特征 X 和标签 y,使用 fit() 函数进行训练。在正式分类时。通过一次性构造測试集或者一个一个输入 样本的方式,得到样本相应的分类结果。有关 K 的取值:

? 假设较大。相当于使用较大邻域中的训练实例进行预測。能够减小预计误差,

可是距离较远的样本也会对预測起作用,导致预測错误。

? 相反地,假设 K 较小,相当于使用较小的邻域进行预測,假设邻居恰好是噪

? 普通情况下。K 会倾向选取较小的值,并使用交叉验证法选取最优 K 值。

决策树

决策树是一种树形结构的分类器,通过顺序询问分类点的属性决定分类点终于的类别。通常依据特征的信息增益或其它指标,构建一颗决策树。在分类时,仅仅须要依照决策树中的结点依次进行推断,就可以得到样本所属类别。

比如。依据下图这个构造好的分类决策树, 一个无房产。单身。年收入 55K 的人的会被归入无法偿还信用卡这个类别。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEwNDYxMzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

sklearn 中的决策树

在 sklearn 库中,能够使用 sklearn.tree.DecisionTreeClassifier 创建一个决策树用于分类,其主要參数有:

? criterion : 用于选择属性的准则。能够传入 “gini” 代表基尼 系数,或者 “entropy” 代表信息增益。

? max_features : 表示在决策树结点进行分裂时,从多少个特征 中选择最优特征。能够设定固定数目、百分比或其它标准。

它 的默认值是使用全部特征个数。

? 决策树本质上是寻找一种对特征空间上的划分,旨在构建一个训练数据拟合的 好,而且复杂度小的决策树。

? 在实际使用中,须要依据数据情况,调整 DecisionTreeClassifier 类中传入的 參数。比方选择合适的 criterion,设置随机变量等。

朴素贝叶斯

朴素贝叶斯分类器是一个以贝叶斯定理为基础的多分类的分类器。

对于给定数据。首先基于特征的条件独立性假设,学习输入输出的联合概率分布,然后基于此模型,对给定的输入 x。利用贝叶斯定理求出后验概率最大的输出 y。

sklearn 中的朴素贝叶斯

在 sklearn 库中,能够使用 sklearn.naive_bayes.GaussianNB 创建一个高斯朴素贝叶斯分类器,其參数有:

? priors : 给定各个类别的先验概率。假设为空,则按训练数据的实际情况 进行统计; 假设给定先验概率,则在训练过程中不能更改。

朴素贝叶斯是典型的生成学习方法,由训练数据学习联合概率分布,并求得

后验概率分布。

朴素贝叶斯一般在小规模数据上的表现非常好,适合进行多分类任务。

程序编写

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEwNDYxMzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat May 27 07:52:08 2017

@author: xiaolian
"""

import pandas as pd
import numpy as np  

from sklearn.preprocessing import Imputer
from sklearn.cross_validation import train_test_split
from sklearn.metrics import classification_report

from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import GaussianNB

def load_datasets(feature_paths, label_paths):

    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)
        #print(df)
        imp = Imputer(missing_values = ‘NaN‘, strategy = ‘mean‘, axis = 0)
        imp.fit(df)
        #print(df)
        df = imp.transform(df)
       # print(‘df type :‘, type(df))
        #print(df)
        feature = np.concatenate((feature, df))
        #print(‘feature‘)
        #print(feature)

    for file in label_paths:
        df = pd.read_table(file, header = None)
        #print(‘df :‘, df)
        label = np.concatenate((label, df))
        #print(‘label‘, label)

    label = np.ravel(label)
    #print(‘label‘, label)
    return feature, label

if __name__ == ‘__main__‘:
    ‘‘‘data path‘‘‘
    featurePaths = [‘A/A.feature‘, ‘B/B.feature‘, ‘C/C.feature‘, ‘D/D.feature‘, ‘E/E.feature‘]
    labelPaths = [‘A/A.label‘,‘B/B.label‘, ‘C/C.label‘, ‘D/D.label‘, ‘E/E.label‘]
    load_datasets(featurePaths[:4], labelPaths[:4])

    ‘‘‘ load data ‘‘‘
    x_train, y_train = load_datasets(featurePaths[:4],labelPaths[:4])
    x_test, y_test = load_datasets(featurePaths[4:],labelPaths[4:])
    x_train, x_, y_train, y_ = train_test_split(x_train, y_train, test_size = 0.0)

    print(‘Start training knn‘)
    knn = KNeighborsClassifier().fit(x_train, y_train)
    print(‘Training done‘)
    answer_knn = knn.predict(x_test)
    print(‘Prediction done‘)

    print(‘Start training DT‘)
    dt = DecisionTreeClassifier().fit(x_train, y_train)
    print(‘Training done‘)
    answer_dt = dt.predict(x_test)
    print(‘Prediction done‘)

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEwNDYxMzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

原文地址:https://www.cnblogs.com/llguanli/p/8622875.html

时间: 2024-11-08 21:00:59

人体运动状态预測-实例分析的相关文章

KNIMI数据挖掘建模与分析系列_004_利用KNIMI做客户流失预測

利用KNIMI做客户流失预測 老帅 20150801 http://blog.csdn.net/shuaihj 一.測试数据 中国移动客服数据 须要測试数据,请留下邮箱 二.统计已流失客户 1.读取移动客服数据(客户流失.xlsx) 2.统计已流失客户 參数设置 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"

体系结构复习2——指令级并行(分支预測和VLIW)

第五章内容较多,接体系结构复习1 5.4 基于硬件猜測的指令级并行 动态分支预測是在程序运行时.依据转移的历史信息等动态确定预測分支方向.主要方法有: 基于BPB(Branch Prediction Buffer)和BHT(Branch History Table)的方法 高性能指令发送(High Performance Instruction Delivery) 5.4.1 基于BPB和BHT的方法 (1)1-bit BHT 分支指令PC的低位索引1位记录上一次转移是否成功(不是预測是否正确)

Camera图像处理原理及实例分析-重要图像概念

Camera图像处理原理及实例分析 作者:刘旭晖  [email protected]  转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rgbbones.googlepages.com/ 做为拍照手机的核心模块之一,camera sensor 效果的调整,涉及到众多的参数,如果对基本的光学原理及 sensor 软/硬件对图像处理的原理能有深入的理解和把握的话,对我们的工作将会起到事半功倍的效果.否则,缺乏了理论的指导,只能是凭感觉和经

【Energy Forecasting】能源预測的发展和展望

说明 本文的内容来自Tao Hong博士的Energy Forecasting: Past, Present and Future一文的翻译和整理. 引入 能源预測包括了电力行业中有关预測的广泛的内容,比方短期负荷预測.长期负荷预測.局部负荷预測.电价预測.需求响应预測还有可再生能源发电预測等. 因为电力存储的限制和社会对于电力的需求造成了几个能源预測的有趣性质,比方复杂的季节性模式.24/7的电网数据收集.对精确度的需求等. 高级的能源预測依赖于严格的測试数据集.对于商业需求的理解,从统计学.

基于SVM的数据分类预測——意大利葡萄酒种类识别

update:把程序源代码和数据集也附上http://download.csdn.net/detail/zjccoder/8832699 2015.6.24 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- w

【天池竞赛系列】资金流入流出预測思路

赛题地址:http://tianchi.aliyun.com/competition/information.htm?spm=5176.100067.5678.2.VZW16k&raceId=3 登录就可以下载数据 题目一句话:依据13年7月到14年8月的申购赎回数据预測14年9月每一天的申购赎回数据. 算法问题:此题能够使用线性回归和时间序列预測,仅仅要特征好效果都还能够.我们使用的是R以下的随机森林+LM  .决赛仅仅有4次提交机会,第一次我们26名,后面每天都降,这些火箭简直太可怕了,最后

吉首大学_编译原理实验题_基于预測方法的语法分析程序的设计【通过代码】

一.实验要求 实验二 基于预測方法的语法分析程序的设计 一.实验目的 了解预測分析器的基本构成及用自顶向下的预測法对表达式进行语法分析的方法,掌握预測语法分析程序的手工构造方法. 二.实验内容 1.了解编译程序的基于预測方法的语法分析过程. 2.依据预測分析原理设计一个基于预測方法的语法分析程序. 三.实验要求 对给定文法G[S]: S->AT       A->BU     T->+AT|$      U->*BU|$    B->(S)|m 当中,$表示空串. 1.推断上

Android漫游记(5)---ARM GCC 内联汇编烹饪书(附实例分析)

原文链接(点击打开链接) 关于本文档 GNU C编译器针对ARM RISC处理器,提供了内联汇编支持.利用这一非常酷炫的特性,我们可以用来优化软件代码中的关键部分,或者可以使用针对特定处理的汇编处理指令. 本文假定,你已经熟悉ARM汇编语言.本文不是一篇ARM汇编教程,也不是C语言教程. GCC汇编声明 让我们从一个简单的例子开始.下面的一条ARM汇编指令,你可以添加到C源码中. /* NOP example-空操作 */ asm("mov r0,r0"); 上面的指令,讲r0寄存器的

Camera图像处理原理及实例分析

Camera图像处理原理及实例分析 作者:刘旭晖  [email protected]  转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rgbbones.googlepages.com/ 做为拍照手机的核心模块之一,camera sensor 效果的调整,涉及到众多的参数,如果对基本的光学原理及 sensor 软/硬件对图像处理的原理能有深入的理解和把握的话,对我们的工作将会起到事半功倍的效果.否则,缺乏了理论的指导,只能是凭感觉和经