解决Python线性回归模型报错:'ValueError: Input y contains NaN.'
根据您提供的错误信息,错误是因为输入的因变量Y包含NaN值。为了解决这个问题,我们需要处理包含NaN值的数据。
请尝试以下修改:
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
data_shaoshui = pd.read_excel('D:\M_hua\shaoshui.xlsx', header=None)
X = data_shaoshui.iloc[:, 0].values.reshape(-1, 1)
Y = data_shaoshui.iloc[:, 1].values.reshape(-1, 1)
# 处理包含NaN值的行
nan_rows = data_shaoshui.isnull().any(axis=1)
X = X[~nan_rows]
Y = Y[~nan_rows]
X_tra, X_tes, Y_tra, Y_test = train_test_split(X, Y, test_size=0.25, random_state=7)
lr = LinearRegression()
lr_fit = lr.fit(X_tra, Y_tra)
print('{:.3f}'.format(lr_fit.score(X_tra, Y_tra)))
lr_coef = pd.DataFrame(lr_fit.coef_, columns=['Coefficient'], index=['A'])
lr_coef['Intercept'] = lr_fit.intercept_
lr_coef
在这个代码中,我们使用.isnull().any(axis=1)检查每一行是否包含NaN值,并创建一个布尔索引数组nan_rows。
然后,我们使用布尔索引来过滤X和Y中的行,删除包含NaN值的行。
最后,我们执行线性回归拟合和模型评估的代码。
请确保数据文件路径正确,并根据实际情况调整代码。如果问题仍然存在,请提供更多关于数据和错误的详细信息,以便我能够更好地帮助您解决问题。
原文地址: http://www.cveoy.top/t/topic/dqKe 著作权归作者所有。请勿转载和采集!