慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)

1. “人体运动状态信息评级”实例编写与对比

1.1 “人类运动状态信息评级”实例分析

慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第1张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第2张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第3张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第4张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第5张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第6张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第7张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第8张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第9张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第10张图片
既然已经有了训练集,是不是就可以寻找每一个类别对应的数据规律,进而得到姿态的类别与数据分布的关系模型了呢?
由此得出,这是一个分类问题;识别新的姿态特征(列),分到某一标签中(行)
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第11张图片

1.2 运动状态程序编写

慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第12张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第13张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第14张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第15张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第16张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第17张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第18张图片
在这里插入图片描述
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第19张图片
如何体现指定分隔符为逗号?
在read_table中使用delimiter=‘,’
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第20张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第21张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第22张图片
在这里插入图片描述
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第23张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第24张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第25张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第26张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第27张图片

#监督学习
#分类
#KNN——决策树——朴素贝叶斯
import pandas as pd 
import numpy as np   

#导入预处理模块Imputer
from sklearn.preprocessing import Imputer 
#导入自动生成训练集和测试集的模块train_teast_split
from sklearn.model_selection import train_test_split
#导入预测结果评估模块classification——report
from sklearn.metrics import classification_report

#导入三个分类器模块
from sklearn.neighbors import KNeighborsClassifier 
from sklearn.tree import DecisionTreeClassifier 
from sklearn.naive_bayes import GaussianNB 


#定义数据导入函数load_datasets
#这个函数中有两个参数
def load_datasets(feature_paths, label_paths):   
    #读取特征文件列表和标签文件列表中的内容,归并后返回
    '只有1行?因为这是一个初始值,在后面会进行更新'
    #创建数组
    feature = np.ndarray(shape=(0,41))     
    label = np.ndarray(shape=(0,1))      
    
    #预处理循环
    for file in feature_paths:      
        #调用pandas库中的read_table函数,读取一个特征文件的内容
        #使用逗号分隔符读取特征数据,将问号替换标记为缺失值,文件不包含表头
        df = pd.read_table(file, delimiter=',', na_values='?', header=None)   
        #Imputer函数,通过设定strategy参数为mean,使用平均值补全缺失数据,axis=0为第一列
        imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
        #使用平均值补全缺失值,然后将数据进行补全         
        #fit函数用于训练预处理器
        imp.fit(df)
        #transform函数用于生成预处理结果         
        df = imp.transform(df)         
        #将新读入的数据合并到特征集合中
        #将预处理后的数据加入feature,依次遍历完所有特征文件
        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 


#主函数——数据准备
#数据存放位置:D:/lolita/Machine learning/classfication
if __name__ == '__main__':     
    
    #设置数据路径,注意数据集存放的位置
    #将5个数据集以列表方式表征
    featurePaths = [
                    'D:/lolita/Machine learning/classfication/A.feature',
                    'D:/lolita/Machine learning/classfication/B.feature',
                    'D:/lolita/Machine learning/classfication/C.feature',
                    'D:/lolita/Machine learning/classfication/D.feature',
                    'D:/lolita/Machine learning/classfication/E.feature'
                    ]     
    labelPaths = [
            'D:/lolita/Machine learning/classfication/A.label',
            'D:/lolita/Machine learning/classfication/B.label',
            'D:/lolita/Machine learning/classfication/C.label',
            'D:/lolita/Machine learning/classfication/D.label',
            'D:/lolita/Machine learning/classfication/E.label'
            ]
     
    ''' 调用函数,读入数据  '''     
    #将前4个数据集作为训练集读入
    x_train,y_train = load_datasets(featurePaths[:4],labelPaths[:4])
     #将最后1个数据作为测试集读入
    x_test,y_test = load_datasets(featurePaths[4:],labelPaths[4:])     
    
    #使用全量数据作为训练集,借助train_test_split函数将训练数据打乱
    #test_size=0.0只会对数据集中的子集进行随机排列,size=0不会改变数组的原有size
    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')         
    
    
    #主函数——分类结果分析
    #使用classification_report函数计算准确率、召回率、f1值和支持度
    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))

慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第28张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第29张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第30张图片
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第31张图片
思考
慕课学习笔记——2.3机器学习(“人体运动状态信息评级”实例编写与对比)_第32张图片

你可能感兴趣的:(学习帖)