样本:

使用的算法:

代码:

import numpy as np
import pandas as pd
import datetime from sklearn.impute import SimpleImputer #预处理模块
from sklearn.model_selection import train_test_split #训练集和测试集模块
from sklearn.metrics import classification_report #预测结果评估模块 from sklearn.neighbors import KNeighborsClassifier #K近邻分类器
from sklearn.tree import DecisionTreeClassifier #决策树分类器
from sklearn.naive_bayes import GaussianNB #高斯朴素贝叶斯函数 starttime = datetime.datetime.now() def load_datasets(feature_paths, label_paths):
feature = np.ndarray(shape=(0, 41)) #列数量和特征维度为41
label = np.ndarray(shape=(0, 1))
for file in feature_paths:
#逗号分隔符读取特征数据,将问号替换标记为缺失值,文件不包含表头
df = pd.read_table(file, delimiter=',', na_values='?', header=None)
#df = df.fillna(df.mean()) #若SimpleImputer无法处理nan,则用pandas本身处理
#使用平均值补全缺失值,然后将数据进行补全
imp = SimpleImputer(missing_values=np.nan, strategy='mean') #此处与教程不同,版本更新,需要使用最新的函数填充NAn,暂不明如何调用
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__':
#读取文件,根据本地目录文件夹而设定
path = 'D:\python_source\Machine_study\mooc_data\classification\dataset/'
featurePaths, labelPaths = [], []
for i in range(0, 5, 1): #chr(ord('A') + i)==B/C/D
featurePath = path + chr(ord('A') + i) + '/' + chr(ord('A') + i) + '.feature'
featurePaths.append(featurePath)
labelPath = path + chr(ord('A') + i) + '/' + chr(ord('A') + i) + '.label'
labelPaths.append(labelPath)
#将前4个数据作为训练集读入
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) #使用KNN算法进行训练
print('Training done')
answer_knn = knn.predict(x_test) 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') #对分类结果从 精确率precision 召回率recall f1值fl-score和支持度support四个维度进行衡量
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))
endtime = datetime.datetime.now()
print(endtime - starttime) #时间统计

效果图:

2019-08-01【机器学习】有监督学习之分类 KNN,决策树,Nbayes算法实例 (人体运动状态信息评级)的更多相关文章

  1. 吴裕雄 python 机器学习——半监督学习标准迭代式标记传播算法LabelPropagation模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import metrics from sklearn import d ...

  2. 【纪中集训】2019.08.01【NOIP提高组】模拟 A 组TJ

    T1 Description 给定一个\(N*N(N≤8)\)的矩阵,每一格有一个0~5的颜色.每次可将左上角的格子所在连通块变为一种颜色,求最少操作数. Solution IDA*=启发式迭代加深 ...

  3. 机器学习--最邻近规则分类KNN算法

    理论学习: 3. 算法详述        3.1 步骤:      为了判断未知实例的类别,以所有已知类别的实例作为参照      选择参数K      计算未知实例与所有已知实例的距离      选 ...

  4. 机器学习——十大数据挖掘之一的决策树CART算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第23篇文章,我们今天分享的内容是十大数据挖掘算法之一的CART算法. CART算法全称是Classification ...

  5. 【Todo】【转载】Spark学习 & 机器学习(实战部分)-监督学习、分类与回归

    理论原理部分可以看这一篇:http://www.cnblogs.com/charlesblc/p/6109551.html 这里是实战部分.参考了 http://www.cnblogs.com/shi ...

  6. Python 机器学习实战 —— 监督学习(下)

    前言 近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习.深度学习.神经网络等文章多不胜数.从智能家居.自动驾驶.无人机.智能机器人到人造卫星.安防军备,无论是国家级军事设备还是 ...

  7. Python 机器学习实战 —— 监督学习(上)

    前言 近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习.深度学习.神经网络等文章多不胜数.从智能家居.自动驾驶.无人机.智能机器人到人造卫星.安防军备,无论是国家级军事设备还是 ...

  8. python_机器学习_监督学习模型_决策树

    决策树模型练习:https://www.kaggle.com/c/GiveMeSomeCredit/overview 1. 监督学习--分类 机器学习肿分类和预测算法的评估: a. 准确率 b.速度 ...

  9. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

随机推荐

  1. 升级Kubernetes 1.18前,你不得不知的9件事

    本文来自Rancher Labs 昨天Kubernetes最新版本v1.18已经发布,其包含了38项功能增强,其中15项为稳定版功能.11项beta版功能以及12项alpha版功能.在本文中,我们将探 ...

  2. ThinkPHP5.0 漏洞测试

    ThinkPHP5.0 漏洞测试 自从ThinkPHP发布漏洞补丁以来,服务器不知道多少次受到了批量扫描漏洞来抓取肉鸡的请求 虽然官方早已发布补丁,还是想试一下TP漏洞,测试两个漏洞 一.全版本执行漏 ...

  3. 国际惯例,Hello World。

    c语言: #include<stdio.h> int main() { printf("Hello World!\n"); ; } C++: #include<i ...

  4. 类与对象 CG作业1. 复数类Comple 。

    问题描述]一个完整的复数由实数部分和序数部分构成,请定义一个复数类,含有两个私有属性realPart和imagPart分别表示复数的实部和虚部,三个成员函数:initComplex实现复数成员变量的初 ...

  5. linggle使用技巧

    Linggle 搜索引擎是一个可用于英语写作的语法.句子工具,可帮助学习者分析更准确的英文写作建议,能够根据词性来推测短句和句子,可精准的分享出完整英文句子如何撰写. Linggle 是台湾学术团队研 ...

  6. 给rm命令加保险

    众所周知,脑残可以学习,但是手残没法治.相信每一位喜欢用终端操作电脑的同学都曾手误使用 rm 命令把不该删除的文件删了.然而,使用 rm 删除的文件是不会进去回收站的. 所以,最好的方法就是我们自定义 ...

  7. python之常用模块ConfigParser

    这个常见于.conf,.ini等类型的配置文件 下面先看一下如果通过python生成一个.ini文件 import configparser #2.x is ConfigParserconfig = ...

  8. 理解MapReduce计算构架

    用Python编写WordCount程序任务 程序 WordCount 输入 一个包含大量单词的文本文件 输出 文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词 ...

  9. spring 事务源码赏析(二)

    我们在spring 事务源码赏析(一) 中分析了spring事务是如何找到目标方法,并如何将事务的逻辑织入到我们的业务逻辑中.本篇我们将会看到spring事务的核心实现: 1.事务传播机制的实现 2. ...

  10. ssh-add和ssh-agent

    注: 因为在ssh-agent异常关闭或者新开窗口是会导致ssh-add找不到私钥,导致添加的私钥无效,所以下面使用keychain管理 ssh-add 参数 -l 查看代理中的私钥 -L 查看代理中 ...