《机器学习Python实践》第3章——第一个机器学习项目
第三章——第一个机器学习项目
一个机器学习项目的步骤:
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章——第一个机器学习项目相关推荐
- python第三章上机实践_《机器学习Python实践》读书笔记-第三章
<机器学习Python实践>,第三章,第一个机器学习项目 以往目录:橘猫吃不胖:<机器学习Python实践>读书笔记-第一章zhuanlan.zhihu.com 书中介绍了一 ...
- 机器学习 Python实践 第一天 18.11.08
本人是某大学大二学生 专业是 软件工程. 由于大一贪玩,大二这学期才有所学习,目前只会C,Python.目前在本学校嵌入式开发实验室.但是我们实验室可以自选喜欢的东西.于是我指向了人工智能.询问了老师 ...
- 机器学习实战指南:如何入手第一个机器学习项目?
点击上方"AI有道",选择"星标公众号" 重磅干货,第一时间送达! 本系列为<Scikit-Learn 和 TensorFlow 机器学习指南>的第 ...
- 猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目
目录 前言 一.从目的出发 1.导入数据 二.项目开启 1.导入数据 2.预览数据 3.数据预处理 1.过采样 2.欠采样 4.数据可视化 单变量图表 多变量图表 5.训练模型 5.1划分数据集 5. ...
- 机器学习Python实践》——数据导入(CSV)
一.CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样 ...
- 《机器学习Python实践》——数据导入(CSV)
一,CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).字幕:纯意味着该文件的英文一个字符序列,不含必须像二进制数 ...
- Python入门第三章--第一节:条件判断语句
从这一节开始,我们就进入到了进阶的阶段,这一章是在前一章的基础上进行提高扩展的,从本章开始,我会在每一节的结尾留下作业,大家可以将作业提交到我的邮箱或者直接将作业提交到QQ群的群文件中,我将在QQ群中 ...
- 写csv文件_机器学习Python实践——数据导入(CSV)
一,CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).字幕:纯意味着该文件的英文一个字符序列,不含必须像二进制数 ...
- csv逗号分隔符转换_机器学习Python实践——数据导入(CSV)
一,CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).字幕:纯意味着该文件的英文一个字符序列,不含必须像二进制数 ...
- python怎么导入csv文件数据-机器学习Python实践——数据导入(CSV)
一,CSV 逗号分隔值(逗号分隔值,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).字幕:纯意味着该文件的英文一个字符序列,不含必须像二进制数 ...
最新文章
- MS SQL Server存储过程
- [CQOI2011]动态逆序对
- 小ck活动机器人包包_别只知道小 CK!这 5 款小众包包更值得买
- d3.js 教程 模仿echarts legend功能
- net start zabbix agent 服务没有相应控制功能_一步到位,服务器监控就是这么简单...
- JM与h264标准中的关键字说明
- 关于Image创建的内存管理
- PyTorch 1.4 中文文档校对活动正式启动 | ApacheCN
- Python3常用字符串操作
- 词汇的积累 —— 同义反复、写景状物
- SimpleXML系列函数操作XML
- 终于给cs来了一次小整容
- 非平衡电桥电阻计算_微安表内阻值对热敏电阻温度计设计的影响
- 程序员工具箱--我常用的工具
- oracle 11g 重置,oracle数据库重置
- DSDT与SSDT提取
- 红蓝对抗---蓝队手册
- SpringBoot整合Mybatis-Plus
- 自己写一个微型数据库_“最国际化的微型机构:”两名伦敦训练营的毕业生如何建造了一个远程…...
- 分享个碧蓝航线脚本,自律捞船神器
热门文章
- calender获取日期前几月_iOS时间,日期,星期等相关获取
- Failed to start bean ‘documentationPluginsBootstrapper‘;
- android 调出键盘表情_Android--如何优雅的切换表情和键盘(原理)
- Python实现笑脸检测+人脸口罩检测
- 八皇后问题-python描述
- python bytes转int_Python学习进阶教程(11)—数值类型
- Go基础:数组、切片与指针
- mysql 1005 150_錯誤1005 errno:150與mysql
- Select2异步ajax方式加载数据
- 矩阵运算_Eigen使用_基本数据类型