简体   繁体   中英

TypeError: fit() missing 1 required positional argument: 'y'

I am trying to predict economic cycles using Gaussian Naive Bayes "Classifier".

data (input 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

target (output Y):

    Economy
0   Expansion
1   Expansion
2   Expansion
3   Expansion

Below is my code:

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)

Below is Error:

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'

What am I doing wrong? How can I resolve this issue /error?

你忘记了括号“()”:

model = GaussianNB()

Whenever you try to initialize/ define an object of a class you must call its own constructor to create one object for you. The constructor may have parameters or none. In your case GaussianNB is a class from sklearn which has a non-parametric constructor by default.

obj_model =  GaussianNB()

So simply we do create an object with empty parenthesis which simply means default constructor .

You forgot to put () after your model, gaussianNB . Try doing this in line 6:

model = GaussianNB()

I am pretty sure it will solve the problem.

Just in case someone else stumbles over this, suffering from the same root cause as I did: This error can also occur when you are trying to call the method "fit" as a static method (classmethod) on the class instead of calling it on an instantiated object of the class. This applies also to other classifiers in other frameworks, eg PySpark.

Eg this won't work:

model = LogisticRegression.fit(data)

But this will:

log_reg = LogisticRegression()
model = log_reg.fit(data)

You just need to add () for the model.

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)

This works..

您只需要为模型添加()

model = GaussianNB()

You forgot the parentheses sign in front of GaussianNB,

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)

Good Luck

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM