我是机器学习新手。我正在实现一个感知器来查看哪些逻辑门函数是线性可分的。对于与非门,我得到了意想不到的结果。对于输入 X 和输出 y,模型给出的分数为 0.5 ,y 预测为 [1,0,0,0] 而不是 [1,1,1,0]。谁能帮我解决我的模型有什么问题吗
import numpy as np
from sklearn.linear_model import Perceptron
clf = Perceptron(max_iter=100, random_state=0)
X= np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([1,1,1,0])
clf.fit(X, y)
score= clf.score(X, y)
print(score)
a=clf.predict(X)
print(a)
我得到了代码的输出
0.5
[1 0 0 0]
我尝试根据模型的权重和偏差计算 z(净输入),如下所示:
w = clf.coef_ ;b = clf.intercept_
z= np.dot(X,w.T) +b
print(z.T)
这给了我以下结果:
[[ 2. 0. 0. -2.]]
举更多例子,例如:
X= np.array([[0,0],[0,1],[1,0],[1,1]] * 2)
y = np.array([1,1,1,0] * 2)
这会将您的示例重复两次。我认为最初它并没有收敛。