线性回归
比KNN算法,线性回归的求解过程可解释性更好 我们这里是使用方程来求解,并没有使用梯度下降法
1. 简单线性回归
我们先研究的最小二乘法,然后在一次类推到多元线性回归
对于简单线性回归(y=ax+b)求导可以得出:
多元线性回归的正归化方程: 记住里面的x有一组1的列
下面介绍一些基本概念:
- mse
- rmse
- mae
这些都是线性回归的衡量产生,sklearn里面mse,rmse现在集成在一个方法里面
最好的衡量线性回归的性能:R^2
R方越大越好,因为可以把方差看成baseline model(即没有模型的预测值)我们训练过的model得到的值应该远远低于他才好
ps:在numpy里面求逆矩阵的方法:numpy.linalg.inv(),numpy.var
我们使用sklearn里面的linearRegressoion的fit是使用多元线性回归的正归化方程:
下面扩展一些KNNRegressor: 如我上篇文章所说:这里需要归一化数据
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler
standard_scaler=StandardScaler()
standard_scaler.fit(X_train)
X_train=standard_scaler.transform(X_train)
X_test=standard_scaler.transform(X_test)
param_id=[
{
"weights":["uniform"],
"n_neighbors":[i for i in range(1,11)]
},
{
"weights":["distance"],
"n_neighbors":[i for i in range(1,11)],
"p":[i for i in range(1,11)]
}
]
knnRes=KNeighborsRegressor()
grid_cv=GridSearchCV(param_grid=param_id,estimator=knnRes,n_jobs=-1,verbose=1)
grid_cv.fit(X_train,y_train)
print(grid_cv.best_params_)
print(grid_cv.best_estimator_.score(X_test,y_test))
我们看到KNN算法在回归中的利用,而且score的值还很好
|