背景介绍
- 可穿戴式设备的流行,让我们可以更便利地使用传感器获取人体的各项数据,甚至生理数据。
- 当传感器采集到大量数据后,我们就可以通过对数据进行分析和建模,通过各项特征的数值进行用户状态的判断,根据用户所处的状态提供给用户更加精准、便利的服务。
数据介绍
- 我们现在收集了来自A,B,C,D,E 5位用户的可穿戴设备上的传感器数据,每位用户的数据集包含一个特征文件(a.feature)和一个标签文件(a.label)。
- 特征文件中每一行对应一个时刻的所有传感器数值,标签文件中每一行记录了和特征文件中对应时刻的标记过的用户姿态,两个文件的行数相同,相同行之间互相对应。
数据介绍- feature
我们的特征文件共包含41列特征,数据内容。
特征文件的各项特征,如下表所示:
数据介绍- label
标签文件内容如图所示,每一个代表与特征文件中对应行的用户姿态类别。总共有0-24种共25种身体姿态,如,无活动状态、坐态、跑态等。标签文件作为训练集的标准参考准则,可以进行特征的监督学习。
任务介绍
- 假设现在出现了一个新用户,但我们只有传感器采集的数据,那么该如何得到这个新用户的姿态呢?
- 又或者对同一个用户如果传感器采集了新的数据,怎么样根据新的数据判断当前用户处于什么样的姿态呢?
- 在明确这是一个分类问题的情况下,我们可以选定某种分类模型(或者说是算法),通过使用训练数据进行模型学习,然后对每个测试样本给出对应的分类结果。
- 机器学习的分类算法众多,在接下来的学习中我们将会详细介绍经典的分类算法,如K近邻、决策树和朴素贝叶斯的原理和实现。
K近邻分类器(KNN)
原理:
通过计算待分类数据点,与已有数据集中的所有数据点的距离。取距离最小的前k个点,根据“少数服从多数”的原则,将这个数据点划分为出现次数最多的那个类别。
sklearn中的KNN
在sklearn库中,可以使用sklearn.neighbors.KNeighborsClassifier创建一个K近邻分类器,主要参数有:
- n_neighbors:用于指定分类器中K的大小(默认值为5)
- weights:设置选中的K个点对分类结果影响的权值(默认值为平均权值“uniform”,可以选择“distance”代表越近的点权重越高,或者传入自己编写的以距离为参数的权重计算函数)。
KNN的使用
- 使用import语句导入K近邻分类器:
from sklearn.neighbors