上下文
我使用像SVR
这样的sklearn
机器学习算法来执行回归任务。
from sklearn.svm import SVR
model = SVR(kernel='poly', degree=2, epsilon=.5)
model.fit(
features # Numpy array with features
, target # Numpy array with the target
)
然后,我使用.score()
-函数返回回归的分数。此外,我需要使用.predict()
的预测结果进行进一步处理。
some_data = [...] # Numpy array with some data to predict
correct_targets = [...] # Numpy array with targets according to some data
# Get R²
print("R²:", model.score(
some_data
, correct_targets
))
# Store prediction
pred = model.predict(some_data)
问题
当我在上面的版本中运行代码时,模型会计算两次——一次用于.score()
,一次用于.predict()
但是,我无法在保存的.predict()
上运行.score()
。这有点令人讨厌,因为计算需要一些时间。
是否可以在不重新计算的情况下存储预测并随后应用.score()
?
如果您已经有了预测值:
pred = model.predict(some_data)
和各自的基本事实correct_targets
,在不重新运行模型的情况下获得R^2分数是很简单的,因为scikit learn有一个专门的功能:
from sklearn.metrics import r2_score
r2_score(correct_targets, pred)