![](/img/trans.png)
[英]AttributeError: module 'sklearn.linear_model' has no attribute 'linearRegression'?
[英]Saving LinearRegression (from sklearn.linear_model) coefficients in a list
我陷入了一個應該非常簡單的問題。 我正在運行四個簡單的線性回歸(僅更改 x 變量),對於所有回歸,我需要將截距和 scope 系數存儲在一個列表中。
我認為這會很容易,但似乎我不擅長處理列表。 結果為列表中的所有四個模型存儲了相同的系數。
這是我的代碼:
from sklearn.linear_model import LinearRegression
variables = ['Number_of_likes','Number_of_comments','Number_of_followers','Number_of_repplies']
models = [None] * 4
lm = LinearRegression()
#Fit regressions
models[0] = lm.fit(X[[variables[0]]],y)
models[1] = lm.fit(X[[variables[1]]],y)
models[2] = lm.fit(X[[variables[2]]],y)
models[3] = lm.fit(X[[variables[3]]],y)
當我查看“模型”時,它似乎只將最后一次回歸的結果存儲在所有四個插槽中。
希望我能很好地解釋我的問題。
lm.fit()
將修改現有實例,而不是創建它的新副本。 此外, models
列表將通過引用存儲這些實例,從而產生您所看到的行為。
為了解決這個問題,您需要在每次想要將其擬合到新輸入時創建一個新的LogisticRegression
,而不是重復使用相同的舊 model。 例如:
models = [] # just an empty list; we will append our models to it one by one
for var in variables:
lm = LinearRegression() # create a new object
lm.fit(X[[var]], y) # fit it
models.append(lm) # add it to the list
或者,對您的原始代碼更忠實的版本是(使用sklearn.base.clone
):
from sklearn.base import clone # to create a new copy of the lm object
lm = LinearRegression()
#Fit regressions
models[0] = clone(lm).fit(X[[variables[0]]],y)
models[1] = clone(lm).fit(X[[variables[1]]],y)
models[2] = clone(lm).fit(X[[variables[2]]],y)
models[3] = clone(lm).fit(X[[variables[3]]],y)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.