sklearn.metrics中r2_score返回异常值的技术咨询
关于sklearn中r2_score结果异常的问题解答
你完全用错了
r2_score的参数逻辑:这个函数的标准调用是r2_score(y_true, y_pred),第一个参数必须是真实标签值,第二个是模型输出的预测值,不是随便把x和y两个数组互换传入。你之前的两次调用都是把特征和真实值直接当真实值/预测值传,完全不符合R²的计算场景,结果自然无意义。线性回归模型的
score()方法是正确的:它内部会自动用输入的特征x生成预测值y_pred,然后计算r2_score(y, y_pred),这和Excel趋势线的R²计算逻辑一致,所以得到的0.5778是合理的。正确的
r2_score调用示例:
from sklearn.linear_model import LinearRegression from sklearn.metrics import r2_score # 假设x是特征数据,y是真实标签 model = LinearRegression() model.fit(x, y) y_pred = model.predict(x) # 正确计算R² proper_r2 = r2_score(y, y_pred) # 这个结果会和model.score(x, y)完全一致,也就是你看到的0.5778
- 你之前两次调用的问题解析:
r2_score(y, x):把y当真实值,x当预测值,相当于用特征x去拟合标签y,这和你的建模目标完全相反,拟合度极低所以R²只有0.0148r2_score(x, y):把x当真实值,y当预测值,拟合效果远差于均值基准,所以R²为负(R²为负表示模型性能不如直接用均值预测,完全不符合数据规律)
内容的提问来源于stack exchange,提问作者Stefan_E
相关产品推荐
相关产品推荐

