簡體   English   中英

在 sklearn logisticRegression 中,Fit_intercept=False 的含義是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM