import numpy as np
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
iris = datasets.load_iris() #获取鸢尾花数据集
#获取数据集的全部行,但只取其第四列即花瓣长度
X = iris['data'][:, 3:]
#获取数据集的目标值
y = iris['target']
#实例化一个逻辑回归对象
log_reg = LogisticRegression(multi_class='ovr', solver='sag')
#传入数据训练
log_reg.fit(X, y)
#生成一个长度为1000的等差序列,其值在0,3之间均匀分布,用于模拟测试数据
X_new = np.linspace(0, 3, 1000).reshape(-1, 1)
y_proba = log_reg.predict_proba(X_new) #预测概率值
y_hat = log_reg.predict(X_new) #预测分类号
#绘制花瓣长度和各类别之间的关系曲线
plt.plot(X_new, y_proba[:, 2], 'g-', label='Iris-Virginica')
plt.plot(X_new, y_proba[:, 1], 'r-', label='Iris-Versicolour')
plt.plot(X_new, y_proba[:, 0], 'b--', label='Iris-Setosa')
plt.show()
#预测花瓣长度为1.7和1.5的鸢尾花类别
print(log_reg.predict([[1.7], [1.5]]))
绘制图形如下:
输出结果如下:
[2 1]
Process finished with exit code 0