【人工智能基础】逻辑回归实验分析-五、多参数逻辑回归

时间:2024-04-29 08:42:32

参数获取

# 截取两个维度的参数
x = iris['data'][:,(2,3)]
# 目标值
y = (iris['target'] == 2).astype(np.int32)

训练模型

# 训练逻辑回归模型
from sklearn.linear_model import LogisticRegression
log_res = LogisticRegression()
log_res.fit(x,y)

额外:如何构建一个点阵

我们选取了两个x参数和一个目标值y,即形成的结果需要有三个轴,对于x0,x1所在的平面上选取到一个点,可以找到与之对应的y值。所以为了绘制y轴上的图像(我们最终使用x0ox1平面上的等高线投影来代表y),我们需要找到众多的点(x0,x1)

可以使用如下的方式来获取这样的(x0,x1)点阵

x0,x1 = np.meshgrid(np.linspace(1,2,2).reshape(-1,1),
           np.linspace(10,12,3).reshape(-1,1))
# 构建列相同数据
print('x0',x0)
print()
# 构建行相同数据
print('x1',x1)
print()
# 拉长数据后拼接
print(np.c_[x0.ravel(),x1.ravel()])

我们可以发现meshgrid
返回的第一个值x0就是一个根据入参1得到的列相同矩阵,
返回的第二个值x1就是一个根据入参2得到的行相同矩阵
当我们使用ravel函数把矩阵拉长(平铺成一维数组),再拼接起来,就可以得到一个点阵

点阵构建演示

选取x0ox1面上的点以及对应的预测值

x0,x1 = np.meshgrid(np.linspace(2.9,7,500).reshape(-1,1),
           np.linspace(0.8,2.7,200).reshape(-1,1))
x_test = np.c_[x0.ravel(),x1.ravel()]

y_proba = log_res.predict_proba(x_test)

绘制概率等高线图

plt.figure(figsize=(10,4))
# Not Virginica的参数用蓝色方块表示
plt.plot(x[y==0,0],x[y==0,1],'bs')
# Virginica的参数用三角形表示
plt.plot(x[y==1,0],x[y==1,1],'g^')
# 绘制等高线,等高线表示概率
z = y_proba[:,1].reshape(x0.shape)
contour = plt.contour(x0,x1,z,cmap=plt.cm.brg)
plt.clabel(contour, inline=1)

plt.axis([2.9,7,0.8,2.7])
plt.text(3.5,1.5,'NOT Vir',fontsize=16, color='b')
plt.text(6.5,2.3,'Vir',fontsize=16, color='g')

多参数概率等高线图