多元线性回归
从简单线性回归中,我们知道了,房价和面积可能有直接关系,除了面积还会有 地理位置,楼层,装修情况,周围商铺,学校。。。。非常多和房价有直接关系的属性。为了寻找这么多关系和房价的关系函数,多元线性回归就横空出世。
每一个属性都是一个x,对应的属性的权重是θ,b为θ0 如图
为了方便向量化,我们变成
注意:这里的x0恒等于1
那么就可以得出两个向量
i表示样本位置
这里我们为了方便矩阵点乘,将θ进行转置
最终变成
我们可以更直观的看一下
矩阵和向量点乘后得到我们要的结果矩阵
同样的,我们得到了结果矩阵后也需要对结果矩阵的误差做评定,然后计算或者使用梯度下降来得到最小的θ
我们直接对函数进行求导得到正规方程解,也就是最优的θ
计算正规方程解源码
X_b = np.hstack([np.ones((len(X_train), 1)), X_train])
theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)
使用scikit-learn的方法
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)
lin_reg.coef_ #θ
lin_reg.intercept_ #截距也就是θ0
lin_reg.score(X_test, y_test)
也可以使用KNN模型来解决线性回归的问题
from sklearn.neighbors import KNeighborsRegressor
knn_reg = KNeighborsRegressor()
knn_reg.fit(X_train_standard, y_train)
knn_reg.score(X_test_standard, y_test)