机器学习——鸢尾花数据集

  • 数据集简介
  • 导入数据集
  • 可视化
  • 主成分分析

鸢尾花数据集即iris
iris数据集文件: https://pan.baidu.com/s/1saL_4Q9PbFJluU4htAgFdQ .提取码:1234

数据集简介

  • 数据集包含150个样本(数据集的行)
  • 数据集包含4个属性(数据集的列):Sepal Length,Sepal Width,Petal Length,Petal Width:‘feature_names’
  • 利用numpy.ndarray存储这150x4的数据:‘data’
  • 分类标签取自array[‘Setosa’,‘Versicolour’,‘Virginica’]:‘target_names’
    Setosa,Versicolour,Virginica是数据集所包含的3中品种的鸢尾花
    这3个分类标签(即150x1数据)用np.ndarray存储:‘target’
    总之,这个数据存储了150x4的特征数据和150x1的分类标签,其中特征数据又放在‘data’里,分类标签放在‘target’里

导入数据集

import matplotlib.pyplot as plt    #绘图
from mpl_toolkits.mplot3d import Axes3D   #可视化
from sklearn import datasets    #sklearn中包含很多数据集,其中就有鸢尾花数据集
from sklearn.decomposition import PCA    #主成分分析
import numpy as np   #机器学习中通常将数据以数组的形式存储,特别是这里包含了特征数据和分类数据iris = datasets.load_iris()   #利用load函数装载数据集print('鸢尾花数据集的数据类型是:',type(iris))  print('鸢尾花数据集的数据有:',dir(iris))
for i in dir(iris):eval('print(i,"/t",type(iris.'+i+'))')   #遍历数据集中的数据,查看每个数据的数据类型
print()    print('鸢尾花数据集中feature_names取值:',iris.feature_names)
print('鸢尾花数据集中数据的行列数:',iris.data.shape)
print('鸢尾花数据集中target取值:',np.unique(iris.target))
print('鸢尾花数据集中target_names的取值:',iris.target_names)

结果:

可视化

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

  • num:图像编号或名称,数字为编号 ,字符串为名称
  • figsize:指定figure的宽和高,单位为英寸;
  • dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
  • facecolor:背景颜色
  • edgecolor:边框颜色
  • frameon:是否显示边框

matplotlib中cla/clf/close用法及相关清除效果

  • 在使用matplotlib画图时,画完图之后需要进行一定的清理工作,否则后续画图的结果中可能混入前一幅图的数据,或者造成频繁创建绘图对象。下面解释一下matplotlib中的相关清理操作和效果。主要包括以下方法:

    • gca获取当前的axes,cla清理当前的axes
    • gcf获取当前的figure,clf清理当前的figure
    • close,关闭figure
a,b=0,1
X = iris.data[:,[a,b]]      #二维可视化,即只取两个属性,这里取的是全部行和前两列(sepal length和sepal width)
y = iris.target     #由上述程序结果可知取值为0,1,2,代表3种品种的鸢尾花x_min,x_max = X[:,0].min()-.5, X[:,0].max()+.5   #x值的最小值和最大值分别是第一列最小值和最大值-5和+5
y_min,y_max = X[:,1].min()-.5, X[:,1].max()+.5   #y值的最小值和最大值分别是第二列最小值和最大值-5和+5plt.figure(2,figsize=(8,6))
plt.clfplt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.Set1,edgecolor='w')  #绘制散点图,c即color,cmap是将y不同的值画出不同颜色,edgecolor为白色
plt.xlabel(iris.feature_names[a])   #x轴名称
plt.ylabel(iris.feature_names[b])   #y轴名称plt.xlim(x_min,x_max)    #x轴的作图范围
plt.ylim(y_min,y_max)    #y轴的作图范围
plt.xticks(())     #x轴的刻度内容的范围
plt.yticks(())     #y轴的刻度内容的范围

结果:

经过以上尝试,无论a,b取何值(即无论选择哪两列)进行二维绘图,都无法很好的区分红、橙、灰三色点(分布有重叠),所以尝试三维绘图

fig = plt.figure(1,figsize=(8,6))
ax = Axes3D(fig,elev=-150,azim=110)   #???????????????
X_reduced = iris.data[:,:3]   #可以改变列看图形分布X_reduced = iris.data[:,[0,2,3]]ax.scatter(X_reduced[:, 0],X_reduced[:, 1],X_reduced[:, 2],c=y,cmap=plt.cm.Set1,edgecolor='w',s=40)
ax.set_title('Iris 3D')ax.set_xlabel(iris.feature_names[0])
ax.w_xaxis.set_ticklabels([])
ax.set_ylabel(iris.feature_names[1])
ax.w_yaxis.set_ticklabels([])
ax.set_zlabel(iris.feature_names[2])
ax.w_zaxis.set_ticklabels([])plt.show()

结果:

进行三维作图也没有很好的区分三种点,所以鸢尾花数据集还要进行四维作图才能区分三种数据,但是四维很难可视化,因此采用主成分分析

主成分分析

  • 主成分分析(PCA)是降维方法,利用正交变换将以线性相关变量表示的观测数据转化为少数几个以线性无关变量表示的数据,这些线性无关的量称为主成分
  • 这里就是将四维数据降为三维
fig = plt.figure(1,figsize=(8,6))
ax = Axes3D(fig,elev=-150,azim=110)
X_reduced = PCA(n_components=3).fit_transform(iris.data)   #n_components是PCA算法中所要保留的主成分个数n,也即保留下来的特征个数n,这里四维降三维n_components=3#fit_transform 对数据先拟合 fit,找到数据的整体指标,如均值、方差、最大值最小值等,然后对数据集进行转换transform,从而实现数据的标准化、归一化操作ax.scatter(X_reduced[:,0],X_reduced[:,1],X_reduced[:,2],c=y,cmap=plt.cm.Set1,edgecolor='w',s=40)
ax.set_title('First three PCA directions')ax.set_xlabel('1st eigen vector')
ax.w_xaxis.set_ticklabels([])
ax.set_ylabel('2nd eigen vector')
ax.w_yaxis.set_ticklabels([])
ax.set_zlabel('3rd eigen vector')
ax.w_zaxis.set_ticklabels([])plt.show()

结果:


这时候,三种颜色的区分比较明显,还可以试试降为二维

a,b=0,1
X_reduced = PCA(n_components=2).fit_transform(iris.data)
X = X_reduced[:,[a,b]]      #二维可视化,即只取两个属性,这里取的是全部行和前两列(sepal length和sepal width)
y = iris.target     #由上述程序结果可知取值为0,1,2,代表3种品种的鸢尾花x_min,x_max = X[:,0].min()-.5, X[:,0].max()+.5   #x值的最小值和最大值分别是第一列最小值和最大值-5和+5
y_min,y_max = X[:,1].min()-.5, X[:,1].max()+.5   #y值的最小值和最大值分别是第二列最小值和最大值-5和+5plt.figure(2,figsize=(8,6))
plt.clfplt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.Set1,edgecolor='w')  #绘制散点图,c即color,cmap是将y不同的值画出不同颜色,edgecolor为白色
plt.xlabel(iris.feature_names[a])   #x轴名称
plt.ylabel(iris.feature_names[b])   #y轴名称plt.xlim(x_min,x_max)    #x轴的作图范围
plt.ylim(y_min,y_max)    #y轴的作图范围
plt.xticks(())     #x轴的刻度内容的范围
plt.yticks(())     #y轴的刻度内容的范围

结果:

机器学习——鸢尾花数据集相关推荐

  1. 机器学习--鸢尾花数据集实战

    Iris数据集实战 本次主要围绕Iris数据集进行一个简单的数据分析, 另外在数据的可视化部分进行了重点介绍. 环境 win8, python3.7, jupyter notebook 目录 1. 项 ...

  2. knn鸢尾花数据集java_机器学习——鸢尾花数据集(Knn分类)

    Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理.Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集.数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个 ...

  3. 机器学习(1)机器学习基础 鸢尾花数据集

    目录 一.机器学习基础理论 1.机器学习过程 2.机器学习分类 3.数据集返回值介绍 二.鸢尾花数据集(实战) 1.首先是获取数据集 2.显示数据集信息(可以不要) 三.数据集划分 1.数据集划分AP ...

  4. python鸢尾花数据集_鸢尾花经典机器学习分类Python实现案例

    作者|Nature 出品|AI机器思维 由Fisher在1936年整理的Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例. 其数据集变量包含4个特征(Sepal.Len ...

  5. 机器学习入门案例:鸢尾花数据集分类 绘制PR曲线

    案例使用鸢尾花数据集进行分类预测,并绘制评价分类性能的PR曲线图 认识分类任务和数据集 Iris(鸢尾花)数据集 案例演示中使用的是有监督的机器学习算法:SVM 支持向量机 建立模型的流程如下: 训练 ...

  6. 机器学习之有监督学习实例_01 —— 鸢尾花数据集的分类

    Iris 数据集简介 : Iris Data Set(鸢尾属植物数据集)首次出现在著名的英国统计学家和生物学家Ronald Fisher 1936年的论文<The use of multiple ...

  7. python机器学习之门之sklearn的使用(使用鸢尾花数据集)

    sklearn全称为scikit learn 专门提供了python机器学习的模块 是一个高效的数据分析算法工具 建议在numpy scipy matplotlib上 对于大多数机器学习 通常有以下四 ...

  8. 机器学习案例——鸢尾花数据集分析

        前几天把python基础知识过了一遍,拿了这个小例子作为练手项目,这个案例也有师兄的帮助,记录完,发现代码贴的很多,文章有点长,为了节省篇幅,有一些说明就去掉了,毕竟鸢尾花数据集比较经典,网上 ...

  9. 《机器学习》分析鸢尾花数据集

    转载地址:https://www.cnblogs.com/mandy-study/p/7941365.html 分析鸢尾花数据集 下面将结合Scikit-learn官网的逻辑回归模型分析鸢尾花示例,给 ...

  10. 机器学习--python代码实现基于Fisher的线性判别(鸢尾花数据集的分类)

    一.线性分类–判断该函数属于哪一类 先上例题,然后我会通过两种方法来判断该函数属于哪一类 1.图解法 定义 对于多类问题:模式有 ω1 ,ω2 , - , ωm 个类别,可分三种情况: 第一种情况:每 ...

最新文章

  1. js去空格的三种方法
  2. mongodb学习笔记(2)--curd
  3. 蓝桥杯-打印十字图-java
  4. JavaScript 引擎和 Just-in-Time 编译概念,Hot Function 的简单介绍
  5. BGP——重分发注意点(总结+配置)
  6. 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单
  7. vs查询mysql返回数据_vs与数据库连接查询
  8. Web开发之django(二Admin)
  9. HeadFirst jsp 08 无脚本JSP
  10. “华为杯”中国研究生数学建模竞赛 记录
  11. 在windows 2008下面使用dynamipsgui
  12. 电商营销新思路:CPS分销推广模式
  13. 今天给大家分享的案例就是关于电影的啦,我们一起来看看IMDBtop10000的电影排行榜数据
  14. Pvr_ControllerModuleInit代码分析
  15. 配置GeeM2传奇登陆器详细图文教程
  16. es根据字段长度过滤_es根据字段长度过滤_如何进行elasticsearch查询以过滤字段的最大值?...
  17. Vue、elmentUI国际化 vue-i18n项目实行简繁体切换
  18. web课程设计网页规划与设计:文化网站设计——中国水墨风书画艺术网站(12个页面)
  19. 基于PHP的网上鲜花销售系统
  20. 自己整理的关于随机信号分析的思维导图

热门文章

  1. 查询高校名【Python习题】(保姆级图文+实现代码)
  2. java表情字符怎么判断_判断字符串中是否包含Emoji表情代码
  3. 使用python调用浏览器实现自动转发微博
  4. [回溯法] 求n个元素的集合的幂集 - 递归实现 - C语言
  5. echarts官网demo
  6. CDA LEVELⅠ2021新版模拟题一(附答案)
  7. 计算机财务管理中表格的应用,excel在财务管理中的应用学习心得
  8. ➤mobi➢azw3➢epub⇨电子书阅读器 转换器
  9. 74HC595串口转并口芯片学习
  10. 删除无法读取源文件或磁盘的文件 删除系统找不到指定路径的文件