引言

一直对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机器学习起步相关推荐

  1. 大数据基石python学习_资源 | 177G Python/机器学习/深度学习/算法/TensorFlow等视频,涵盖入门/中级/项目各阶段!...

    原标题:资源 | 177G Python/机器学习/深度学习/算法/TensorFlow等视频,涵盖入门/中级/项目各阶段! 这是一份比较全面的视频教程,基本上包括了市面上所有关于机器学习,统计学习, ...

  2. 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程

    学习python课程 Python is a popular, versatile and easy-to-learn language. It's the go-to language for AI ...

  3. 2018年python薪资_最好的Python:2017和2018年至今我最喜欢的文章集

    2018年python薪资 我打算发布此收藏集 (My intention with publishing this collection) Last year I only used Medium ...

  4. 比python好_这就是为什么Python比R更好的原因

    目录 介绍 这就是为什么 摘要 介绍 虽然说Python比R更好对我而言是正确的,但对您来说可能并非如此. 当然,您可能会因为各种原因认为R比Python更有用. 即使您反对我的声明,我仍然希望开始进 ...

  5. python 堆排序_堆排序用python

    Python天天美味(30) - python数据结构与算法之快速排序 快速排序的原理是将取出第一个数,将整个数组分为两波,一拨都大于这个数,另一波都小于这个数,然后递归用同样的方法处理第一波数字和第 ...

  6. 第一个python解释器_第一个python程序

    回顾昨日重点(需记住5*) 三大核心: cpu--运行程序 内存--基于电,存取速度快,断电丢失数据 硬盘--基于磁,存取速度远远慢于内存,断电不丢失数据 操作系统 应用程序 操作系统 (window ...

  7. 少儿编程python教材_少儿编程|Python环境安装

    一.为什么要学Python? 小学 山东,浙江,北京地区小学已将Python内容纳入教材 高中 浙江省已将信息技术教材编程语言替换为Python 大学 计算机二级考试加入"Python 语言 ...

  8. 微软发布的python教程_微软发布Python 教程《Develop with Python on Windows》

    微软近日上线了一套 Python 教程<Develop with Python on Windows>,文档内容包括设置 Python 开发环境.在 Windows 与 WSL 子系统中安 ...

  9. python 切片_全面解读Python高级特性切片

    大家好,欢迎来到Crossin的编程教室! 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组-)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slic ...

  10. 哪个专业学python语言_想学Python编程?你真的适合吗?

    原标题:想学Python编程?你真的适合吗? 有的人说我想学什么.我想干什么,很多时候都是头脑发热,单凭一腔热血,可是这样的路即便走上去你又能坚持多久呢?所以,每每有人问我学Python编程怎么样,我 ...

最新文章

  1. Android 4.0中振动控制
  2. 大约xib连接错误bug正确
  3. nodeJS — 学习的笔记
  4. 聚焦数字化智慧安防的新型社区
  5. boost线程(二)
  6. python国内源很慢_软件下载太慢,为linux,R,python,conda配置国内源,让你快速下载安装大量国外软件...
  7. sql 在存储过程中使用事务(转)
  8. html常用标签总结
  9. Matlab电路仿真
  10. 南天PR系列存折打印机驱动程序
  11. pe中怎么卸载服务器系统更新,方法四: 使用专用工具卸载系统更新补丁(和方法三类同...
  12. 打印DPI如何与计算机DPI一致,ps打印尺寸怎么设置和实际纸张一致? -电脑资料
  13. opencv小游戏(05):小车的运动
  14. 微信小程序扫描小程序码进入,模拟器模拟进入
  15. 背景图片与图片对盒子的影响
  16. Lumia 1020 诞生:诺基亚拍照技术的一次狂欢
  17. 百度灵医智惠明星案例获人民日报点赞:智慧医疗让看病更便捷
  18. matlab中 cos(pi/2) sin(pi)不等于0怎么办
  19. Mac电脑程序员常用软件集锦
  20. 可将医学计算机应用课程,医学专业大学生计算机理论研究

热门文章

  1. VM options常用设置
  2. 关于单词:On-premises的含义
  3. 安装 VMware tools时报错:不在 sudoers 文件中。此事将被报告。
  4. TDengine时序数据库FAQ系列1:JDBCDriver找不到动态链接库(no taos in java.library.path)
  5. 最详细的宝塔青龙面板搭建教程
  6. 使用css3和h5实现幻灯片,点击切换图片效果
  7. 在Linux上搭建私有云
  8. 计算机网络CPT简单应用
  9. PS制作三原色叠加效果教程
  10. 阅读笔记|Retrieve and Refine: Exemplar-based Neural Comment Generation