![](/img/trans.png)
[英]Logistic Regression TypeError: fit() missing 1 required positional argument: 'y'
[英]TypeError: fit() missing 1 required positional argument: 'y'
我正在嘗試使用高斯朴素貝葉斯“分類器”來預測經濟周期。
數據(輸入 X):
SPY Interest Rate Unemployment Employment CPI
Date
1997-01-02 56.05 7.82 9.7 3399.9 159.100
1997-02-03 56.58 7.65 9.8 3402.8 159.600
1997-03-03 54.09 7.90 9.9 3414.7 160.000
目標(輸出 Y):
Economy
0 Expansion
1 Expansion
2 Expansion
3 Expansion
下面是我的代碼:
from sklearn.naive_bayes import GaussianNB
from sklearn import metrics
from sklearn.cross_validation import train_test_split
X = data
Y = target
model = GaussianNB
X_train, X_test, Y_train, Y_test = train_test_split(X,Y)
model.fit(X_train, Y_train)
以下是錯誤:
TypeError Traceback (most recent call last)
<ipython-input-132-b0975752a19f> in <module>()
6 model = GaussianNB
7 X_train, X_test, Y_train, Y_test = train_test_split(X,Y)
----> 8 model.fit(X_train, Y_train)
TypeError: fit() missing 1 required positional argument: 'y'
我究竟做錯了什么? 我該如何解決這個問題/錯誤?
你忘記了括號“()”:
model = GaussianNB()
每當您嘗試初始化/定義類的對象時,您必須調用它自己的構造函數來為您創建一個對象。 構造函數可能有參數,也可能沒有。 在您的情況下, GaussianNB是來自 sklearn 的類,默認情況下具有非參數構造函數。
obj_model = GaussianNB()
因此,我們確實創建了一個帶有空括號的對象,這僅表示默認構造函數。
你忘了在你的模型gaussianNB
后面加上()
。 嘗試在第 6 行執行此操作:
model = GaussianNB()
我很確定它會解決問題。
以防萬一其他人偶然發現這一點,遭受與我相同的根本原因:當您嘗試將方法“fit”作為類上的靜態方法(classmethod)而不是調用它時,也會發生此錯誤類的實例化對象。 這也適用於其他框架中的其他分類器,例如 PySpark。
例如,這將不起作用:
model = LogisticRegression.fit(data)
但這將:
log_reg = LogisticRegression()
model = log_reg.fit(data)
您只需要為模型添加 ()。
from sklearn.naive_bayes import GaussianNB
from sklearn import metrics
from sklearn.cross_validation import train_test_split
X = data
Y = target
model = GaussianNB()
X_train, X_test, Y_train, Y_test = train_test_split(X,Y)
model.fit(X_train, Y_train)
這工作..
您只需要為模型添加()
。
model = GaussianNB()
你忘記了 GaussianNB 前面的括號符號,
正確的線是 Model = GaussianNB()<\/strong>
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.35, `
`random_state=100)
from sklearn.linear_model import LinearRegression
lm = LinearRegression
lm.fit(X_test,y_test)
祝你好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.