Python 为什么我在使用sklearn R2函数时得到nan?
我总是用Python 为什么我在使用sklearn R2函数时得到nan?,python,python-3.x,machine-learning,scikit-learn,Python,Python 3.x,Machine Learning,Scikit Learn,我总是用sklearn模型预测下一个值 y1_test, y2_test, y3_test, y4_test = get_test_targets(df) ypred1, ypred2, ypred3, ypred4 = ml_model(df, ElasticNet()) 我想使用sklearn来测量y\u true和y\u predicted的r2分数 np.array([y2_test]) >> array([6.75233645]) np.array([ypred2[0
sklearn
模型预测下一个值
y1_test, y2_test, y3_test, y4_test = get_test_targets(df)
ypred1, ypred2, ypred3, ypred4 = ml_model(df, ElasticNet())
我想使用sklearn来测量y\u true
和y\u predicted
的r2分数
np.array([y2_test])
>> array([6.75233645])
np.array([ypred2[0]])
array([6.75233645])
使用r2_分数(np.array([y2_测试]),np.array([ypred2[0]])
给出nan
我不明白为什么我会收到
nan
有一条警告告诉您出了什么问题:
import numpy as np
from sklearn.metrics import r2_score
x = np.array([2.3])
y = np.array([2.1]) # exact values do not matter
r2_score(x, y)
结果:
UndefinedMetricWarning: R^2 score is not well-defined with less than two samples.
warnings.warn(msg, UndefinedMetricWarning)
nan
这并不奇怪:R^2的
R^2 = 1 - (total_sum_squares)/(residual_sum_squares)
但是只有一个样本,分数的命名和分母都是0,导致0/0
除法,这实际上是nan
(计算上和数学上)
底线:您不应该只使用一对数据来计算R^2;为了得到有意义的R^2结果,将更多对预测和地面真相样本批处理在一起