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

Kaggle房价数据集非线性回归r2_score为负的原因咨询

问题:非线性回归R²得分为负数的原因分析

我用Kaggle的kc_house_data数据集做分析,构建了非线性回归模型,用sklearn.metrics的r2_score评估时得到-59.51的结果,正常R²应该在0到1之间,想知道原因。

实现代码

df["combined"] = bedrooms_norm + bathrooms_norm + sqftliving_norm + sqftabove_norm + long_norm + lat_norm + sqftliving15_norm +yrbuilt_norm + grade_norm + floors_norm + sqftbasement_norm+condition_norm
cdf = df[["combined", "price"]]

def log(a, Beta_1, Beta_2, Beta_3):
    y = (Beta_1 * (np.power(Beta_2, a)) + Beta_3)
    return y
beta_3 = 0.10
beta_2 = 1.5
beta_1 = 1
x_data, y_data = (df["combined"].values, df["price"].values)
x_data_norm = x_data / max(x_data)
y_data_norm = y_data / max(y_data)
y_pred = log(x_data_norm, beta_1, beta_2, beta_3)
from scipy.optimize import curve_fit
popt, pcov = curve_fit(log, x_data_norm, y_data_norm)
x = np.linspace(4, 12, 21613)
x = x / max(x)
plt.figure(figsize=(8,5))
y = log(x, *popt)
plt.plot(x_data_norm, y_data_norm, 'ro', label='data')
plt.plot(x, y, linewidth=3.0, label='fit')
plt.legend(loc='best')
plt.ylabel('price')
plt.xlabel('combined')
plt.show()

from sklearn.metrics import r2_score
print("R2-score: %.2f" % r2_score(y_data_norm , y))

运行结果

R2-score: -59.51

原因分析

R²为负的核心问题是预测值和真实值的对应关系完全错位,具体拆解:

  1. 计算R²时用错了预测数据
    你用np.linspace(4,12,21613)生成了一套全新的x序列,基于这个x算出的拟合曲线y,和原始数据的y_data_norm(对应原始的x_data_norm)完全不匹配——相当于拿一条拟合线的点去和原始散点硬凑,结果必然偏离到离谱。

  2. 模型拟合环节的其他问题

    • 你定义的log函数实际是指数形式(Beta_1 * Beta_2^a + Beta_3),和函数名的“log”无关,模型形式可能完全不符合房价数据的分布规律;
    • 手动初始化的beta值可能离最优解太远,导致curve_fit拟合失败,得到的popt参数根本无法贴合数据;
    • 把多个归一化特征直接相加得到combined,这种简单拼接会丢失特征间的交互信息,也会让模型难以捕捉有效规律。

修复步骤

  1. 修正R²计算的对应关系
    用原始的x_data_norm代入拟合后的模型生成预测值,再和y_data_norm对比:

    # 替换原来的y和r2计算代码
    y_pred = log(x_data_norm, *popt)
    print("R2-score: %.2f" % r2_score(y_data_norm, y_pred))
    
  2. 优化模型与特征

    • 验证模型形式:如果坚持用非线性模型,先通过可视化确认数据是否符合你定义的指数形式,或者换用更适配房价数据的模型(比如对数变换后的线性回归、多项式回归);
    • 改进特征处理:不要直接相加特征,考虑保留多特征输入(非线性模型也支持多特征),或者尝试特征交叉、PCA降维等方式组合特征。

内容的提问来源于stack exchange,提问作者fateme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:23:13