鱼C论坛

 找回密码
 立即注册
查看: 1475|回复: 0

[技术交流] 机器学习系列------鸢尾花数据

[复制链接]
发表于 2018-6-18 10:54:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        iris是最有名的数据集,这种花有3个不同的种类,植物学家用肉眼很难区分,就算用机器学习区分的概率也没有100%。今天我们用这个数据来学习逻辑回归模型,首先引入数据集,很简单:
  1. from sklearn import datasets

  2. iris=datasets.load_iris()
复制代码

        以上2行代码就把数据引入了,然后看一下数据里的键都有什么:
  1. list(iris.keys())
复制代码

        输出为:['feature_names', 'DESCR', 'data', 'target', 'target_names']。然后取出data里所有行的第4列,也就是花瓣的宽度:
  1. import numpy as np
  2. X=iris["data"][:,3:]
  3. y=(iris["target"]==2).astype(np.int)
复制代码

        以上代码里变量y是输出项(花的第三个种类)取最后一个类别,再把布尔值转换成整形0和1,1就代表真。然后建立逻辑回归模型:
  1. from sklearn.linear_model import LogisticRegression

  2. log_reg=LogisticRegression()
  3. log_reg.fit(X,y)
复制代码

        用模型预测出概率之后画图:
  1. X_new=np.linspace(0,3,1000).reshape(-1,1)
  2. y_proba=log_reg.predict_proba(X_new)

  3. %matplotlib inline
  4. import matplotlib
  5. import matplotlib.pyplot as plt

  6. plt.plot(X_new,y_proba[:,1],"g-",label="Iris-Virginica")
  7. plt.plot(X_new,y_proba[:,0],"b-",label="Not Iris-Virginica")
  8. plt.legend(loc="right")
复制代码

        以上代码第一行是从0到3取1000个点转换成列向量,预测出这所有点是Iris-Virginica这种花的概率来,输出图像为:
sadsabvbn.png
        上图横轴代表花瓣宽度(单位厘米),纵轴是概率。在1.6厘米这里是个交叉点,是大于1.6厘米的,逻辑回归模型就认为这是Iris-Virginica这种花。然后我们做个多项分类:
  1. X=iris["data"][:,(2,3)]
  2. y=iris["target"]

  3. softmax_reg=LogisticRegression(multi_class="multinomial",solver="lbfgs",C=10)
  4. softmax_reg.fit(X,y)
复制代码

        这就是用花瓣的长度和宽度来判断是哪种花,然后判断一下:
  1. softmax_reg.predict([[5,2]])
复制代码

        我们让模型帮我们预测一下5厘米长2厘米宽的花瓣是什么花,输出结果为:array([2])。就是第三种花。再看一下概率是多少:
  1. softmax_reg.predict_proba([[5,2]])
复制代码

        输出为:array([[  6.33134077e-07,   5.75276067e-02,   9.42471760e-01]])。显示就第三种的概率最大。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 03:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表