TypeError:fit()缺少1个必需的位置参数:'y'

时间:2016-03-14 20:02:36

标签: python-3.x pandas scikit-learn

我试图用高斯朴素贝叶斯“分类器”来预测经济周期。

数据(输入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'

我做错了什么?如何解决此问题/错误?

5 个答案:

答案 0 :(得分:34)

model = GaussianNB()。

你忘记了这个问题&#34;()&#34;

答案 1 :(得分:4)

每当您尝试初始化/定义类的对象时,您必须调用自己的构造函数为您创建一个对象。构造函数可能有参数或没有参数。在您的情况下, GaussianNB 是sklearn中的一个类,默认情况下具有非参数构造函数

obj_model = GaussianNB()

因此,我们只使用空括号创建一个对象,这意味着默认构造函数

答案 2 :(得分:1)

您忘记将()放在模型gaussianNB之后。 尝试在第6行中这样做:

model = GaussianNB()

我很确定它将解决问题。

答案 3 :(得分:0)

(function(){console.log(this)}).call(5) //Number {5}

祝你好运

答案 4 :(得分:0)

您只需要为模型添加 ()。

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)

这有效..