在sklearn中的predict()之后使用score(),而不重新计算



上下文

我使用像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)

最新更新