第三章——第一个机器学习项目
一个机器学习项目的步骤:
1)导入数据;
2)概述数据;
3)数据可视化;
4)评估算法;
5)实施预测。

导入类库

from pandas import read_csv
from pandas import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

1)导入数据

filename='iris.data.csv'
names=['separ-length','separ-width','petal-length','petal-width','class']
dataset=read_csv(filename,names=names)

2)概述数据

数据的维度、查看数据自身、统计描述所有的数据特征、数据分类的分布情况。

print('数据维度:行%s,列 %s'% dataset.shape)   #显示数据维度
print(dataset.head(10))                      #查看数据的前10行
print(dataset.describe())                    #统计描述数据的行数、中位值、最大值、最小值、四分位值等
print(dataset.groupby('class').size())       #数据分类分布

3)数据可视化;

#箱线图(盒图)         #盒图
dataset.plot(kind='box',subplots=True, layout=(2,2), sharex=False, sharey=False)
pyplot.show()#直方图
dataset.hist()
pyplot.show()#散点矩阵图
scatter_matrix(dataset)
pyplot.show()

4)评估算法

1)分离出评估数据集
2)采用10折交叉验证来评估算法模型
3)生成6个不同的模型来预测新数据
4)选择最优模型。

分离出评估数据

#分离数据集
#80%用于训练,20%用于评估
array=dataset.values
X=array[:,0:4]
Y=array[:,4]
validation_size=0.2
seed=7
X_train,X_validation,Y_train,Y_validation=\train_test_split(X,Y,test_size=validation_size,random_state=seed)

创建模型、10折交叉验证

#算法审查
models={}
models['LR']=LogisticRegression()
models['LDA']=LinearDiscriminantAnalysis()
models['KNN']=KNeighborsClassifier()
models['CART']=DecisionTreeClassifier()
models['NB']=GaussianNB()
models['SVM']=SVC()#评估算法
results=[]
for key in models:kfold=KFold(n_splits=10, random_state=seed)cv_results=cross_val_score(models[key],X_train,Y_train,cv=kfold, scoring='accuracy')results.append(cv_results)print('%s: %f (%f)' %(key, cv_results.mean(), cv_results.std()))

选择最优模型

5)实施预测

选取最优的模型进行预测

#使用测试集来评估算法
svm=SVC()
svm.fit(X=X_train,y=Y_train)
predictions= svm.predict(X_validation)
print(accuracy_score(Y_validation,predictions))
print(confusion_matrix(Y_validation,predictions))
print(classification_report(Y_validation,predictions))

完整的python代码:

# -*- coding: utf-8 -*-
"""
Created on Mon Jun  4 09:42:41 2018@author: np
"""from pandas import read_csv
from pandas import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVCfilename='iris.data.csv'
names=['separ-length','separ-width','petal-length','petal-width','class']
dataset=read_csv(filename,names=names)#分离数据集
#80%用于训练,20%用于评估
array=dataset.values
X=array[:,0:4]
Y=array[:,4]
validation_size=0.2
seed=7
X_train,X_validation,Y_train,Y_validation=\train_test_split(X,Y,test_size=validation_size,random_state=seed)#算法审查
models={}
models['LR']=LogisticRegression()
models['LDA']=LinearDiscriminantAnalysis()
models['KNN']=KNeighborsClassifier()
models['CART']=DecisionTreeClassifier()
models['NB']=GaussianNB()
models['SVM']=SVC()#评估算法
results=[]
for key in models:kfold=KFold(n_splits=10, random_state=seed)cv_results=cross_val_score(models[key],X_train,Y_train,cv=kfold, scoring='accuracy')results.append(cv_results)print('%s: %f (%f)' %(key, cv_results.mean(), cv_results.std()))#箱线图比较算法
fig=pyplot.figure()
fig.suptitle("Algorithm Comparision")
ax=fig.add_subplot(111)
pyplot.boxplot(results)
ax.set_xticklabels(models.keys())
pyplot.show()#使用测试集来评估算法
svm=SVC()
svm.fit(X=X_train,y=Y_train)
predictions= svm.predict(X_validation)
print(accuracy_score(Y_validation,predictions))
print(confusion_matrix(Y_validation,predictions))
print(classification_report(Y_validation,predictions))

《机器学习Python实践》第3章——第一个机器学习项目相关推荐

  1. python第三章上机实践_《机器学习Python实践》读书笔记-第三章

    <机器学习Python实践>,第三章,第一个机器学习项目 以往目录:橘猫吃不胖:<机器学习Python实践>读书笔记-第一章​zhuanlan.zhihu.com 书中介绍了一 ...

  2. 机器学习 Python实践 第一天 18.11.08

    本人是某大学大二学生 专业是 软件工程. 由于大一贪玩,大二这学期才有所学习,目前只会C,Python.目前在本学校嵌入式开发实验室.但是我们实验室可以自选喜欢的东西.于是我指向了人工智能.询问了老师 ...

  3. 机器学习实战指南:如何入手第一个机器学习项目?

    点击上方"AI有道",选择"星标公众号" 重磅干货,第一时间送达! 本系列为<Scikit-Learn 和 TensorFlow 机器学习指南>的第 ...

  4. 猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目

    目录 前言 一.从目的出发 1.导入数据 二.项目开启 1.导入数据 2.预览数据 3.数据预处理 1.过采样 2.欠采样 4.数据可视化 单变量图表 多变量图表 5.训练模型 5.1划分数据集 5. ...

  5. 机器学习Python实践》——数据导入(CSV)

    一.CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样 ...

  6. 《机器学习Python实践》——数据导入(CSV)

    一,CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).字幕:纯意味着该文件的英文一个字符序列,不含必须像二进制数 ...

  7. Python入门第三章--第一节:条件判断语句

    从这一节开始,我们就进入到了进阶的阶段,这一章是在前一章的基础上进行提高扩展的,从本章开始,我会在每一节的结尾留下作业,大家可以将作业提交到我的邮箱或者直接将作业提交到QQ群的群文件中,我将在QQ群中 ...

  8. 写csv文件_机器学习Python实践——数据导入(CSV)

    一,CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).字幕:纯意味着该文件的英文一个字符序列,不含必须像二进制数 ...

  9. csv逗号分隔符转换_机器学习Python实践——数据导入(CSV)

    一,CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).字幕:纯意味着该文件的英文一个字符序列,不含必须像二进制数 ...

  10. python怎么导入csv文件数据-机器学习Python实践——数据导入(CSV)

    一,CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).字幕:纯意味着该文件的英文一个字符序列,不含必须像二进制数 ...

最新文章

  1. MS SQL Server存储过程
  2. [CQOI2011]动态逆序对
  3. 小ck活动机器人包包_别只知道小 CK!这 5 款小众包包更值得买
  4. d3.js 教程 模仿echarts legend功能
  5. net start zabbix agent 服务没有相应控制功能_一步到位,服务器监控就是这么简单...
  6. JM与h264标准中的关键字说明
  7. 关于Image创建的内存管理
  8. PyTorch 1.4 中文文档校对活动正式启动 | ApacheCN
  9. Python3常用字符串操作
  10. 词汇的积累 —— 同义反复、写景状物
  11. SimpleXML系列函数操作XML
  12. 终于给cs来了一次小整容
  13. 非平衡电桥电阻计算_微安表内阻值对热敏电阻温度计设计的影响
  14. 程序员工具箱--我常用的工具
  15. oracle 11g 重置,oracle数据库重置
  16. DSDT与SSDT提取
  17. 红蓝对抗---蓝队手册
  18. SpringBoot整合Mybatis-Plus
  19. 自己写一个微型数据库_“最国际化的微型机构:”两名伦敦训练营的毕业生如何建造了一个远程…...
  20. 分享个碧蓝航线脚本,自律捞船神器

热门文章

  1. calender获取日期前几月_iOS时间,日期,星期等相关获取
  2. Failed to start bean ‘documentationPluginsBootstrapper‘;
  3. android 调出键盘表情_Android--如何优雅的切换表情和键盘(原理)
  4. Python实现笑脸检测+人脸口罩检测
  5. 八皇后问题-python描述
  6. python bytes转int_Python学习进阶教程(11)—数值类型
  7. Go基础:数组、切片与指针
  8. mysql 1005 150_錯誤1005 errno:150與mysql
  9. Select2异步ajax方式加载数据
  10. 矩阵运算_Eigen使用_基本数据类型