类型错误: fit() 缺少 1 个必需的位置参数: '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()

所以简单地说,我们创建一个带有空括号的对象,它只是意味着默认构造函数

以防万一其他人绊倒了这一点,遭受与我相同的根本原因: 当您尝试将方法"fit"作为类上的静态方法(类方法)调用而不是在类的实例化对象上调用它时,也会发生此错误。这也适用于其他框架中的其他分类器,例如 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)

这行得通..

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)

祝你好运

相关内容

  • 没有找到相关文章

最新更新