背景
我在回归任务中使用sklearn
机器学习算法,如SVR
。
from sklearn.svm import SVRmodel = 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 predictcorrect_targets = [...] # Numpy array with targets according to some data# Get R²print("R²:", model.score( some_data , correct_targets))# Store predictionpred = model.predict(some_data)
问题
当我运行上述版本的代码时,模型被计算了两次——一次用于.score()
,一次用于.predict()
。
然而,我无法在保存的.predict()
上运行.score()
。这有点麻烦,因为计算需要一些时间。
是否可以存储预测结果并在之后应用.score()
而无需重新计算?
回答:
如果你已经有了预测值:
pred = model.predict(some_data)
以及相应的真实值correct_targets
,可以直接使用scikit-learn提供的专用函数来获取R^2得分,而无需重新运行模型:
from sklearn.metrics import r2_scorer2_score(correct_targets, pred)