在Pandas分组DataFrame上执行Linear Regression结果重复的问题咨询
问题分析与解决方法
核心问题
- 函数未使用分组数据:你的
lregression函数里直接引用了全局的df,完全没用到groupby传入的分组后data参数,导致每次都是用整个数据集训练模型,所以所有分组返回的都是全局得分。 groupby.apply传参错误:你额外传递了X、y参数,但实际上apply会自动把每个分组的DataFrame传给函数的第一个参数,不需要额外传这两个值。
修正后的代码
首先修改回归函数:
def lregression(data): # 从当前分组的data中提取特征和目标变量 X = data['sales'].values.reshape(-1, 1) y = data['target'] model = LinearRegression() model.fit(X, y) return model.score(X, y)
然后调用分组应用:
df.groupby('brand').apply(lregression)
修正逻辑说明
- 函数现在接收每个分组的
data作为参数,从data里提取当前分组的sales和target,这样每个分组都会单独训练自己的线性回归模型。 - 去掉了多余的
X、y参数,groupby.apply会自动把每个分组的DataFrame传入函数,无需手动传递。
内容的提问来源于stack exchange,提问作者chr
相关产品推荐
相关产品推荐

