首页 > 解决方案 > 在 sklearn 中 predict() 之后使用 score() 而无需重新计算

问题描述

语境

我将sklearn机器学习算法SVR用于回归任务。

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()之后我使用-function返回回归的分数。此外,我需要.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)

问题

当我在上述版本中运行代码时,模型会计算两次——一次 for.score()和一次 for .predict()
但是,我无法.score()在已保存的.predict(). 这有点讨厌,因为计算需要一些时间。

是否可以存储预测并在.score()以后应用而不重新计算?

标签: pythonmachine-learningscikit-learn

解决方案


如果您已经有了预测值:

pred = model.predict(some_data)

和各自的基本事实correct_targets,无需重新运行模型即可直接获得 R^2 分数,因为 scikit-learn 对此有专门的功能

from sklearn.metrics import r2_score

r2_score(correct_targets, pred)

推荐阅读