1.5.1 线性回归模型评估

对于线性回归训练生成的模型,如何评价模型的优劣呢?通常的评估方法是用“R方”进行评估,R方也叫确定系数(coefficient of determination),表示模型对现实数据拟合的程度。

计算R方的方法有几种。一元线性回归中R方等于皮尔逊积矩相关系数(Pearson product moment correlation coefficient或Pearson's r)的平方。这种方法计算的R方一定介于0~1之间的正数。其他计算方法,包括scikit-learn中的方法,不是用皮尔逊积矩相关系数的平方计算的,因此当模型拟合效果很差的时候R方会是负值。

$$ SS{tot} = \sum{i=1}^n (y_i - \bar y)^2 $$

$$ SS{res} = \sum{i=1}^n (y_i - f(x_i))^2 $$

所以,$$ R^2 = 1 - \dfrac {SS_{res}} {SS_{tot}} $$

在scikit-learn中的用法示例如下:

from sklearn.linear_model import LinearRegression
X = [[6, 2], [8, 1], [10, 0], [14, 2], [18, 0]]
y = [[7], [9], [13], [17.5], [18]]
model = LinearRegression()
model.fit(X, y)
X_test = [[8, 2], [9, 0], [11, 2], [16, 2], [12, 0]]
y_test = [[11], [8.5], [15], [18], [11]]
predictions = model.predict(X_test)
for i, prediction in enumerate(predictions):
    print('Predicted: %s, Target: %s' % (prediction, y_test[i]))
print('R-squared: %.2f' % model.score(X_test, y_test))

运行结果如下:

Predicted: [ 10.06250019], Target: [11]
Predicted: [ 10.28125019], Target: [8.5]
Predicted: [ 13.09375019], Target: [15]
Predicted: [ 18.14583353], Target: [18]
Predicted: [ 13.31250019], Target: [11]
R-squared: 0.77

results matching ""

    No results matching ""