Scikit LogisticRegression无法学习与或的布尔函数

3 投票
1 回答
930 浏览
提问于 2025-04-17 19:14

看起来在scikit-learn中实现的逻辑回归(Logistic Regression)无法学习简单的布尔函数,比如与(AND)或或(OR)。我能理解异或(XOR)会得出不好的结果,但与和或应该没问题啊。我是不是做错了什么?

from sklearn.linear_model import LogisticRegression, LinearRegression
import numpy as np

bool_and = np.array([0., 0., 0., 1.])
bool_or  = np.array([0., 1., 1., 1.])
bool_xor = np.array([0., 1., 1., 0.])


x = np.array([[0., 0.],
              [0., 1.],
              [1., 0.],
              [1., 1.]])

y = bool_and
logit = LogisticRegression()
logit.fit(x,y)

#linear = LinearRegression()
#linear.fit(x, y)

print "expected: ", y
print "predicted:", logit.predict(x)
#print linear.predict(x)

输出结果如下:

expected:  [0 0 0 1]
predicted: [0 0 0 0]

1 个回答

4

这个问题似乎和正则化有关。下面的代码让分类器正常工作:

logit = LogisticRegression(C=100)

不过,文档提供的信息有点少,所以我不太确定这个C参数的范围是多少。

撰写回答