Scikit learn scikit学习逻辑回归,而不是学习和功能

Scikit learn scikit学习逻辑回归,而不是学习和功能,scikit-learn,Scikit Learn,我做错了什么 from sklearn.linear_model import LogisticRegression as Lgr Lgr().fit([[1,0,0], [1,0,1], [1,1,0], [1,1,1]], [0,0,0,1]).predict([[1,0,0], [1,0,1], [1,1,0], [1,1,1]]) 这并没有像预期的那样给出[0,0,0,1]。给出[0,0,0,0]。predict_proba将返回所有小于0.5的输出。结果表明,正则化参数默认为一个导致

我做错了什么

from sklearn.linear_model import LogisticRegression as Lgr
Lgr().fit([[1,0,0], [1,0,1], [1,1,0], [1,1,1]], [0,0,0,1]).predict([[1,0,0], [1,0,1], [1,1,0], [1,1,1]])

这并没有像预期的那样给出[0,0,0,1]。给出[0,0,0,0]。predict_proba将返回所有小于0.5的输出。

结果表明,正则化参数默认为一个导致欠拟合的值。所以我在构造函数中添加了C=10(C是倒数,所以越高的值意味着正则化越少)。我正在做的另一个更改是删除第一个特征变量,因为除非在构造函数中传递“fit_intercept=False”,否则会自动添加偏差项。以下是工作原理和功能:

from sklearn.linear_model import LogisticRegression as Lgr
print(LgR(C=10).fit([[0,0], [0,1], [1,0], [1,1]], [0,0,0,1]).predict([[0,0], [0,1], [1,0], [1,1]]))

逻辑回归不是这个问题的正确工具。@juanpa.arrivillaga(尽管它的名字)是一个分类器。:)也许可以尝试超参数优化来检查默认参数是否影响质量。@VivekKumar我理解。那不是我指的。实际上,您可以学习AND和OR,但例如,XOR不是线性可分的。无论如何,逻辑回归受训练数据量、正负类的相对平衡等的影响。尝试
Lgr()。拟合([[1,0,0],[1,0,1],[1,1,0],[1,1,0],[1,1,1],[1,1,1],[1,1,1],[0,0,1,1])。预测([1,0,0],[1,0,1],[1,1])
,然后尝试添加更多的正面例子。你会发现它在应该预测0的时候开始预测1。@juanpa.arrivillaga哦,是的。很抱歉