鸢尾花python分类_鸢尾花分类——Python机器学习起步
引言
一直对AI有着莫大的兴趣,最近买了周志华先生的西瓜书,也是干货满满,最近也想从实战方面入手,了解一下机器学习,本文以《Python机器学习基础教程》为指导。
环境
Sublimetext 3 和 Jupter Notebook;
ML库:scikit-learn
项目:鸢尾花分类
已知,鸢尾花可以被分为setosa、versicolor、virginica三个品种,现在我们要建立一个模型,输入特定数据判定它是属于哪一类。
一、数据集导入:
数据集在scikit-learn的datasets中,调用load_iris()导入:
from sklearn.datasets import load_iris
iris_dataset=load_iris()
二、训练集和测试集
导入的数据集我们要分为训练集和测试集,一般我们采用3:1的随机分配办法;
而拆分时为了数据分布均匀,我们先要对数据进行随机达伦,确保测试数据和训练数据的全面性;
在scikit-learn中,我们可以调用train_test_split函数实现划分,利用random_state指定随机数生成种子即可。
X_train, X_test, y_train,y_test=train_test_split(iris_dataset['data'],
iris_dataset['target'],random_state=0)
三、数据观察
数据的好坏直接影响你模型构建成功与否,现实中我们的数据可能存在许多问题(单位不统一,部分数据缺失等),所以我们要提前观察下数据集,观察最好的方法就是看图,pandas为我们提供了一个绘制散点图矩阵的函数,叫做scatter_matrix。
iris_dataframe=pd.DataFrame(X_train,columns=iris_dataset.feature_names)
grr=pd.plotting.scatter_matrix(iris_dataframe,c=y_train,figsize=(15,15),marker="o",hist_kwds={'bins':20},s=60,alpha=.8,cmap=mglearn.cm3)
四、构建模型
算法:K近邻算法
scikit-learn中所有的机器学习模型都在各自的类中实现,统称为Estimator类。
K近邻算法是在neighbours模块中的KNeighboursClassifier类中实现,我们设置邻居参数为1。
from sklearn.neighbors import KNeighborsClassifier
knn=KNeighborsClassifier(n_neighbors=1)
因为knn对算法进行了封装,既包括构建模型的算法,也包括预测的算法,我们只需要调用fit方法来训练数据即可。
knn.fit(X_train,y_train)
五、训练模型评估
我们训练完一个模型,这个模型是否值得我们信任?这时我们就要用测试集去测试这个模型的准确度。
y_pred=knn.predict(X_test)
print("Test set predictions:\n{}".format(y_pred))
print("Test set score:{:.2f}".format(knn.score(X_test,y_test))
数据评估,我们只要将测试集的预测结果(y_pred)和测试集标签(y_test)对比,算出准确率即可。
六、预测
如果评估模型的准确率很高,那么我们就有理由相信这个模型预测地很准,所以我们可以放心去预测,反之,我们则要重新地构建一下模型。
IN:
X_new = np.array([[5,2.9,1,0.2]])
prediction = knn.predict(X_new)
print("Predicted target name:{}".format(iris_dataset['target_names'][prediction]))
OUT:
Predicted target name:['setosa']
泛化、欠拟合和过拟合
泛化:即让这个模型具有普适的预测性,但拥有自己的归纳偏好,形成模型自己的“价值观”。
欠拟合:提取特征太少,事物共性提取不够,导致预测方向歪斜。
将花分类为草(错误认为绿色的都是草)
过拟合:事物特征提取过多,在共性之上加入了太多个性。
带锯齿的树叶不是树叶(错误的认为树叶必须有锯齿)
在笔者总结,泛化就是要在数据集里面最大限度找到共性,尽量忽略不能反映数据本质的个性。
欠拟合比较容易克服,例如在决策树中扩展分支,在神经网络学习中增加训练轮数等。而过拟合则很麻烦,在后面的学习中,我们将看到,过拟合是机器学习面临的关键障碍。
——《机器学习》,周志华
鸢尾花python分类_鸢尾花分类——Python机器学习起步相关推荐
- 大数据基石python学习_资源 | 177G Python/机器学习/深度学习/算法/TensorFlow等视频,涵盖入门/中级/项目各阶段!...
原标题:资源 | 177G Python/机器学习/深度学习/算法/TensorFlow等视频,涵盖入门/中级/项目各阶段! 这是一份比较全面的视频教程,基本上包括了市面上所有关于机器学习,统计学习, ...
- 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程
学习python课程 Python is a popular, versatile and easy-to-learn language. It's the go-to language for AI ...
- 2018年python薪资_最好的Python:2017和2018年至今我最喜欢的文章集
2018年python薪资 我打算发布此收藏集 (My intention with publishing this collection) Last year I only used Medium ...
- 比python好_这就是为什么Python比R更好的原因
目录 介绍 这就是为什么 摘要 介绍 虽然说Python比R更好对我而言是正确的,但对您来说可能并非如此. 当然,您可能会因为各种原因认为R比Python更有用. 即使您反对我的声明,我仍然希望开始进 ...
- python 堆排序_堆排序用python
Python天天美味(30) - python数据结构与算法之快速排序 快速排序的原理是将取出第一个数,将整个数组分为两波,一拨都大于这个数,另一波都小于这个数,然后递归用同样的方法处理第一波数字和第 ...
- 第一个python解释器_第一个python程序
回顾昨日重点(需记住5*) 三大核心: cpu--运行程序 内存--基于电,存取速度快,断电丢失数据 硬盘--基于磁,存取速度远远慢于内存,断电不丢失数据 操作系统 应用程序 操作系统 (window ...
- 少儿编程python教材_少儿编程|Python环境安装
一.为什么要学Python? 小学 山东,浙江,北京地区小学已将Python内容纳入教材 高中 浙江省已将信息技术教材编程语言替换为Python 大学 计算机二级考试加入"Python 语言 ...
- 微软发布的python教程_微软发布Python 教程《Develop with Python on Windows》
微软近日上线了一套 Python 教程<Develop with Python on Windows>,文档内容包括设置 Python 开发环境.在 Windows 与 WSL 子系统中安 ...
- python 切片_全面解读Python高级特性切片
大家好,欢迎来到Crossin的编程教室! 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组-)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slic ...
- 哪个专业学python语言_想学Python编程?你真的适合吗?
原标题:想学Python编程?你真的适合吗? 有的人说我想学什么.我想干什么,很多时候都是头脑发热,单凭一腔热血,可是这样的路即便走上去你又能坚持多久呢?所以,每每有人问我学Python编程怎么样,我 ...
最新文章
- Android 4.0中振动控制
- 大约xib连接错误bug正确
- nodeJS — 学习的笔记
- 聚焦数字化智慧安防的新型社区
- boost线程(二)
- python国内源很慢_软件下载太慢,为linux,R,python,conda配置国内源,让你快速下载安装大量国外软件...
- sql 在存储过程中使用事务(转)
- html常用标签总结
- Matlab电路仿真
- 南天PR系列存折打印机驱动程序
- pe中怎么卸载服务器系统更新,方法四: 使用专用工具卸载系统更新补丁(和方法三类同...
- 打印DPI如何与计算机DPI一致,ps打印尺寸怎么设置和实际纸张一致? -电脑资料
- opencv小游戏(05):小车的运动
- 微信小程序扫描小程序码进入,模拟器模拟进入
- 背景图片与图片对盒子的影响
- Lumia 1020 诞生:诺基亚拍照技术的一次狂欢
- 百度灵医智惠明星案例获人民日报点赞:智慧医疗让看病更便捷
- matlab中 cos(pi/2) sin(pi)不等于0怎么办
- Mac电脑程序员常用软件集锦
- 可将医学计算机应用课程,医学专业大学生计算机理论研究
热门文章
- VM options常用设置
- 关于单词:On-premises的含义
- 安装 VMware tools时报错:不在 sudoers 文件中。此事将被报告。
- TDengine时序数据库FAQ系列1:JDBCDriver找不到动态链接库(no taos in java.library.path)
- 最详细的宝塔青龙面板搭建教程
- 使用css3和h5实现幻灯片,点击切换图片效果
- 在Linux上搭建私有云
- 计算机网络CPT简单应用
- PS制作三原色叠加效果教程
- 阅读笔记|Retrieve and Refine: Exemplar-based Neural Comment Generation