sklearn LinearRegression报错predict()缺失必填参数'X':问题排查与解决
简单线性回归代码报错:TypeError: predict() missing 1 required positional argument: 'X' 解决方法
嘿,我一眼就看到你代码里的问题啦!咱们一步步来拆解:
错误原因分析
你在初始化线性回归模型和训练模型的步骤里犯了两个小错误:
- 第一,你没有正确创建
LinearRegression的实例:regressor = LinearRegression这行代码只是把类本身赋值给了变量,而不是创建一个可以使用的模型实例(需要加括号()来完成实例化)。 - 第二,训练模型的方式不对:
regressor(X_train, y_train)这行完全不符合sklearn的API规范,训练模型应该调用实例的fit()方法,而不是直接用类(或者未实例化的变量)来传参。
这两个错误叠加,导致后续调用predict()时,你其实是在调用类的方法,而不是实例的方法,所以才会提示缺少必要的参数X。
修正后的完整代码
# Importing the libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd # Importing the dataset dataset = pd.read_csv('Salary_Data.csv') X = dataset.iloc[:, :-1].values y = dataset.iloc[:, 1].values # Splitting the dataset into the Training set and Test set from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0) # Fitting Simple Linear Regression to the Training Set from sklearn.linear_model import LinearRegression # 修正1:创建LinearRegression的实例 regressor = LinearRegression() # 修正2:调用实例的fit方法训练模型 regressor.fit(X_train, y_train) # Predicting the Test set results Y_pred = regressor.predict(X_test)
关键修正点解释
regressor = LinearRegression():加了括号后,才真正创建了一个线性回归模型的实例,后续所有的方法调用都要基于这个实例。regressor.fit(X_train, y_train):使用实例的fit()方法传入训练数据,让模型学习工龄和薪资之间的线性关系,这才是sklearn训练模型的正确方式。
这样修改后,你再运行代码就能正常生成预测结果Y_pred啦!
内容的提问来源于stack exchange,提问作者Tirth Bharatiya
相关产品推荐
相关产品推荐

