线下回归模型是机器学习中入门级的算法模型。如果数据有n个特征,那么线性回归模型最终会训练出n个系数值,最终得到一个表达式y = a1f1 + a2f2 + …+ an*fn。而y则是模型预测的结果。周志华的《机器学习》中对与该模型有句话说的很好:训练出的n个系数直观的表达了各属性(特征)在预测中的重要性,因此线性模型有很好的可解释性。
模型的系数是通过对成本函数最小化求解的方法得到的。成本函数一般采用均方误差表示,即欧氏距离。再采用最小二乘法来求解。具体的推导过程当前是不学习的。
对于《opencv》中的预测boston房价,分成如下几个步骤:
1) 下载数据,sklearn直接提供的数据
boston = datasets.load_boston()
2) 对数据拆分成两部分,即训练数据和测试数据,比例为9:1
x_train, x_test, y_train, y_test = modsel.train_test_split(
boston.data, boston.target, test_size = 0.1, random_state = 42)
3)获取模型并通过训练数据进行训练,模型因为opencv没有提供,所以使用sklearn提供的线性回归模型
linear_reg = linear_model.LinearRegression()
res = linear_reg.fit(x_train, y_train)
4)预测房价
y_pred = linear_reg.predict(x_test)
5)预测的房价和真实的房价对比
图中是50个左右测试数据的预测房价和实际房价的对比图,可以看到结果还是比较准确的。需要注意的一个有意思的情况是模型在那些真实房价非常高或者非常低的情况下误差比较大。