You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:25:33