马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
iris是最有名的数据集,这种花有3个不同的种类,植物学家用肉眼很难区分,就算用机器学习区分的概率也没有100%。今天我们用这个数据来学习逻辑回归模型,首先引入数据集,很简单:from sklearn import datasets
iris=datasets.load_iris()
以上2行代码就把数据引入了,然后看一下数据里的键都有什么: 输出为:['feature_names', 'DESCR', 'data', 'target', 'target_names']。然后取出data里所有行的第4列,也就是花瓣的宽度:import numpy as np
X=iris["data"][:,3:]
y=(iris["target"]==2).astype(np.int)
以上代码里变量y是输出项(花的第三个种类)取最后一个类别,再把布尔值转换成整形0和1,1就代表真。然后建立逻辑回归模型:from sklearn.linear_model import LogisticRegression
log_reg=LogisticRegression()
log_reg.fit(X,y)
用模型预测出概率之后画图:X_new=np.linspace(0,3,1000).reshape(-1,1)
y_proba=log_reg.predict_proba(X_new)
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.plot(X_new,y_proba[:,1],"g-",label="Iris-Virginica")
plt.plot(X_new,y_proba[:,0],"b-",label="Not Iris-Virginica")
plt.legend(loc="right")
以上代码第一行是从0到3取1000个点转换成列向量,预测出这所有点是Iris-Virginica这种花的概率来,输出图像为:
上图横轴代表花瓣宽度(单位厘米),纵轴是概率。在1.6厘米这里是个交叉点,是大于1.6厘米的,逻辑回归模型就认为这是Iris-Virginica这种花。然后我们做个多项分类:X=iris["data"][:,(2,3)]
y=iris["target"]
softmax_reg=LogisticRegression(multi_class="multinomial",solver="lbfgs",C=10)
softmax_reg.fit(X,y)
这就是用花瓣的长度和宽度来判断是哪种花,然后判断一下:softmax_reg.predict([[5,2]])
我们让模型帮我们预测一下5厘米长2厘米宽的花瓣是什么花,输出结果为:array([2])。就是第三种花。再看一下概率是多少:softmax_reg.predict_proba([[5,2]])
输出为:array([[ 6.33134077e-07, 5.75276067e-02, 9.42471760e-01]])。显示就第三种的概率最大。
|