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

时间:2018-08-29 10:22:15

标签: python machine-learning scikit-learn logistic-regression

import numpy as np
import pandas as pd

dataset=pd.read_csv("/Users/rushirajparmar/Downloads/Social_network_Ads.csv",error_bad_lines = False)


X = dataset.iloc[:,[2,3]].values.  
Y = dataset.iloc[:,4].values

from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size =  0.25,random_state = 0) 

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X_train,Y_train)

y_pred = classifier.fit(X_test)

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(Y_test, y_pred)

我刚开始练习LogisticRegression时遇到此错误。我不明白出了什么问题。我尝试在Internet上搜索它,但没有帮助

y_pred = classifier.fit(X_test).values.ravel()

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

以下是数据集的链接:

https://github.com/Avik-Jain/100-Days-Of-ML-Code/blob/master/datasets/Social_Network_Ads.csv

谢谢!

2 个答案:

答案 0 :(得分:2)

您正尝试使用测试数据再次拟合您的分类器:

y_pred = classifier.fit(X_test)

这当然也需要不传递标签(因此,缺少y的错误);我假设您真正想做的是为测试数据获取预测,在这种情况下,您应该使用predict,而不是fit

y_pred = classifier.predict(X_test)

答案 1 :(得分:2)

您已经将训练数据拟合到classifier.fit(X_train,Y_train)中。 classifier是您的模型,现在您要预测测试y数据的y_pred值(X)。因此,您需要做的是

y_pred = classifier.predict(X_test)

但是您正在做的是

y_pred = classifier.fit(X_test)

因此,您会收到错误fit() missing 1 required positional argument: 'y',因为在拟合期间,您还需要在这里使用因变量y

只需在上述行中将.fit替换为.predict