[英]sklearn TheilSenRegressor ValueError when setting fit_intercept=False for 1d regressors
[英]In sklearn logisticRegression, what is the Fit_intercept=False MEANING?
我試圖將 statsmodel 的邏輯回歸結果與 sklearn logisticRegression 結果進行比較。 實際上我也嘗試與 R 結果進行比較。 我做了選項 C=1e6(無懲罰),但除了截距外,我得到了幾乎相同的系數。
model = sm.Logit(Y, X).fit()
print(model.summary())
==>攔截= 5.4020
model = LogisticRegression(C=1e6,fit_intercept=False)
model = model.fit(X, Y)
===>截距= 2.4508
所以我閱讀了用戶指南,他們說指定是否應將常量(又名偏置或截距)添加到決策 function 中。這是什么意思? 因此,sklearn logisticRegression 給出了不同的截距值?
請幫我
LogisticRegression 在某些方面類似於 Perceptron Model 和 LinearRegression。 您將權重與數據點相乘並將其與閾值b進行比較:
w_1 * x_1 + ... + w_n*x_n > b
這可以重寫為:
-b + w_1 * x_1 + ... + w_n*x_n > 0
或者
w_0 * 1 + w_1 * x_1 + ... + w_n*x_n > 0
對於線性回歸,我們保留它,對於感知器,我們將其提供給選定的 function,而對於邏輯回歸,我們將其傳遞給邏輯 function。
現在學習n+1個參數,而不是學習n 個參數。 對於感知器,它稱為偏差,用於回歸截距。
對於線性回歸,從幾何學上很容易理解。 在 2D 情況下,您可以將此視為在 y 方向上將決策邊界移動 w_0**。
或y = m*x
vs y = m*x + c
所以現在決策邊界不再是 go 通過 (0,0)。
對於后勤 function 它是類似的,它將它轉移到原點。
實施明智的情況是,您將一個權重和一個常量 1 添加到 X 值。 然后你照常進行。
if fit_intercept:
intercept = np.ones((X_train.shape[0], 1))
X_train = np.hstack((intercept, X_train))
weights = np.zeros(X_train.shape[1])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.