繁体   English   中英

scikit学习和绘图中OR操作的线性回归

[英]Linear regression for OR operation in scikit-learn and plotting

为了学习scikit-learn中的线性回归,我编写了一些代码来处理“或”运算并添加了可视化,但是可视化似乎并不能直观地解释正在发生的事情:

from sklearn import linear_model
X = [[0, 0], [1, 1], [0, 1], [1, 0]]
Y = [0, 1, 1, 1]
regr = linear_model.LinearRegression()
regr.fit(X, Y)

# check that the coeffients are the expected ones.
m = regr.coef_[0]
b = regr.intercept_
print(' y = {0} * x + {1}'.format(m, b))

print(regr.predict([[0,0]]))
print(regr.predict([[0,1]]))
print(regr.predict([[1,0]]))
print(regr.predict([[1,1]]))

阈值为0.5,我认为这可以按预期进行。 现在,我试图绘制这些图以可视化并了解正在发生的事情:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 2, 0.1)
fig, ax = plt.subplots()
ax.plot(x, m * x + b, color='red')

x = [0, 0, 1, 1]
y = [0, 1, 0, 1]
ax.scatter(x, y)

fig.show()

在此处输入图片说明

我希望斜率是负值,但不是。 我做错了什么?

(对不起,我不知道如何在答案中编辑数学符号)1,您的输入X是2D变量列表。 假设X [0] = x,X [1] = y,Y = z,则线性模型应为ax + by + c = z。 并且您需要3D来可视化该模型,因为它具有3个变量2,如果需要绘制2D图,则我们应该将z设置为0或1,只要您愿意,模型就会变成y = -c / b -(a / b)x,在此预测模型中为y = -0.5-x。 斜率是负的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM