sklearn Perceptron 无法对 NAND 功能进行分类

问题描述 投票:0回答:1

我是机器学习新手。我正在实现一个感知器来查看哪些逻辑门函数是线性可分的。对于与非门,我得到了意想不到的结果。对于输入 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.]]
python scikit-learn google-colaboratory perceptron linearmodels
1个回答
0
投票

举更多例子,例如:

X= np.array([[0,0],[0,1],[1,0],[1,1]] * 2)
y = np.array([1,1,1,0] * 2)

这会将您的示例重复两次。我认为最初它并没有收敛。

© www.soinside.com 2019 - 2024. All rights reserved.