LinearRegression拟合含特征名但预测时无有效特征名报错求助
解决方法
方法一:保持特征名匹配(推荐)
训练时用的是带列名的DataFrame,预测时也传入结构一致的DataFrame,确保列名和顺序与训练数据完全相同:
import pandas as pd # 原代码不变,仅修改预测部分 sample = [10000, 1000] # 将样本转换成带列名的DataFrame sample_df = pd.DataFrame([sample], columns=['Personal income', 'Personal saving']) sample_pred = regr.predict(sample_df)
方法二:使用numpy数组拟合和预测
如果不需要依赖特征名,可以在拟合阶段就把训练数据转换成numpy数组,这样模型不会记录特征名,预测时直接传数组即可:
# 修改拟合部分的代码 regr = linear_model.LinearRegression().fit(X_train.values, y_train) # 预测部分无需修改,直接传数组 sample = [10000, 1000] sample_pred = regr.predict([sample])
关于你之前加.values仍报错的原因
大概率是只修改了X的定义,但train_test_split会保留DataFrame结构,X_train仍然是带列名的DataFrame,导致拟合时模型还是记录了特征名,预测传数组就会触发警告。要么在拟合时明确把X_train转成数组,要么预测时用DataFrame匹配特征名即可解决。
内容的提问来源于stack exchange,提问作者Ashlyxn
相关产品推荐
相关产品推荐

