python - 在 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()
以后应用而不重新计算?
解决方案
如果您已经有了预测值:
pred = model.predict(some_data)
和各自的基本事实correct_targets
,无需重新运行模型即可直接获得 R^2 分数,因为 scikit-learn 对此有专门的功能:
from sklearn.metrics import r2_score
r2_score(correct_targets, pred)
推荐阅读
- geoserver - 使用java以编程方式启动geoserver
- ios - 从另一个 vc 重新加载 vc 表视图支持的最佳方法
- c - 即使两个变量包含相同的字符串,sizeof() 也会返回不同的值
- kubernetes - 外部请求通过 Ingress 进入 k8s pod 的具体流程图是什么?
- java - 在 Java 运行时从数组中删除元素
- pyspark - org.apache.spark.SparkException:pyspark.daemon 的标准输出中没有端口号
- android - IPFS 从网络读取数据
- java - 处理必须在许多类中更改的导入
- python - PorterStemmer:在 Spyder 上运行时没有词干输出或错误
- angular - Angular 5:从拦截器中的 http 响应标头获取授权