TypeError: 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

target (выход 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'

Что я делаю не так? Как я могу решить эту проблему/ошибку?

Ответ 1

Вы забыли паратез "()":

model = GaussianNB()

Ответ 2

Всякий раз, когда вы пытаетесь инициализировать/определить объект класса, вы должны вызвать его собственный конструктор, чтобы создать один объект для вас. Конструктор может иметь параметры или не иметь параметров. В вашем случае GaussianNB - это класс из sklearn, который по умолчанию имеет непараметрический конструктор.

obj_model =  GaussianNB()

Поэтому мы просто создаем объект с пустыми скобками, который просто означает конструктор по умолчанию.

Ответ 3

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)

Удачи