簡體   English   中英

TypeError: fit() 缺少 1 個必需的位置參數:'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.

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