Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这是sklearn逻辑回归的错误吗?_Python_Numpy_Scikit Learn - Fatal编程技术网

Python 这是sklearn逻辑回归的错误吗?

Python 这是sklearn逻辑回归的错误吗?,python,numpy,scikit-learn,Python,Numpy,Scikit Learn,我是新来的,请原谅我的错误 因此,我有以下问题:我用一个独立变量(X)和一个响应变量Y模拟一个逻辑回归数据集。然后我创建两个设计矩阵:一个包含X,另一个包含X和X,即相同变量的两倍。然后,我使用两个不同的设计矩阵拟合两个模型。显然,系数估计应该是“相同”的,即截距_1=截距_2,coef_1=总和(coef_2)。但事实并非如此。同样,似然比测试应返回p值=1,但情况并非如此。为什么会这样 我的代码: import numpy as np from sklearn.linear_model im

我是新来的,请原谅我的错误

因此,我有以下问题:我用一个独立变量(X)和一个响应变量Y模拟一个逻辑回归数据集。然后我创建两个设计矩阵:一个包含X,另一个包含X和X,即相同变量的两倍。然后,我使用两个不同的设计矩阵拟合两个模型。显然,系数估计应该是“相同”的,即截距_1=截距_2,coef_1=总和(coef_2)。但事实并非如此。同样,似然比测试应返回p值=1,但情况并非如此。为什么会这样

我的代码:

import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import log_loss
from scipy.stats import chi2
N = 100
X = np.random.randn(N)
XX = np.array([X, X]).T
probs = np.exp(X)/(1+np.exp(X))
Y = np.random.binomial(1, probs, N)
myLogReg = LogisticRegression(solver = 'newton-cg', max_iter=1000, fit_intercept=True, random_state=1)
myLogReg.fit(X.reshape(-1, 1), Y)
y_prob = myLogReg.predict_proba(X.reshape(-1, 1))
currentMinusTwoLogLik = 2*len(Y)*log_loss(Y, y_prob)
print(myLogReg.intercept_)
print(myLogReg.coef_)
print("")
myLogRegUpdateCandidate = LogisticRegression(solver = 'newton-cg', max_iter=1000, fit_intercept=True, random_state=1)
myLogRegUpdateCandidate.fit(XX, Y)
y_probCandidate = myLogRegUpdateCandidate.predict_proba(XX)
candidateMinusTwoLogLik = 2*len(Y)*log_loss(Y, y_probCandidate)
print(myLogRegUpdateCandidate.intercept_)
print(myLogRegUpdateCandidate.coef_)
print("")
print(chi2.sf(currentMinusTwoLogLik-candidateMinusTwoLogLik, 1))

您无法训练具有多个输入且具有完美线性相关性的线性模型。这是逻辑回归,不是sklearn所以。。。在与LogisticReturnal函数斗争了很长时间后,我意识到问题是如何发生的!默认情况下,它有一个惩罚class='l2',这是系数估计的正则化,一个“脊状”或套索状惩罚。如果我设置了惩罚class='none',我会得到预期的结果!