机器学习(入门3 有监督学习算法之回归算法)
4 回归算法
4.1 线性回归:利用函数对一个或多个特征值和目标值之间关系进行建模分析的方式
回归问题:目标值------连续性函数
公式:h(W) = w1x1 + w2x1 + w3x3 + … +b 一般用矩阵形式表示
4.1.1 线性模型:自变量一次;参数一次(自变量高次方,非线性函数)y=w1x1+w2x2^2+…+b
4.1.2 线性回归的损失和优化 [目标:求模型参数]
损失函数cost(成本/目标函数):最小二乘法
优化方法:正规方程,梯度下降
1)正规方程:[直接求解],类似矩阵求导求极值
适合特征少的数据,特征过多过复杂速度太慢
2)梯度下降(Gradient Descent):[试错,改进]
【注:】迭代改进,减号右边分别表示学习速率即步长和下降方向
代码示例:
# 波士顿房价预测
# 1 数据获取
# 2 划分数据集
# 3 标准化
# 4 预估器
# 5 得出模型
# 6 模型评估
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
def Linear1():
boston = load_boston()
# print("tezheng :\n",boston.feature_names,boston.data.shape)
x_train,x_test,y_train,y_test=train_test_split(boston.data, boston.target,random_state=22)
tansfor = StandardScaler()
x_train = tansfor.fit_transform(x_train)
x_test = tansfor.transform(x_test)
estimator = LinearRegression()
estimator.fit(x_train,y_train)
print("正规方程权重系数为:\n",estimator.coef_)
print("偏置为\n",estimator.intercept_)
y_pred = estimator.predict(x_test)
#print("正规方程预测房价:\n", y_pred)
error = mean_squared_error(y_test, y_pred)
print("均方误差:\n", error)
return None
4.1.3 API:
Sklearn.linear_model.LinearRegression(fit_intercept=True)
正规方程优化
fit_intercept:是否计算偏置
LinearRegression.coef_:回归系数
LinearRegression.intercept_:偏置
Sklearn.linear_model.SGDRegressor(loss=”squared_loss”,max_iter=’’,fit_intercept=True,leaning_rate=’inviscaling’,eta0=0.01)
梯度下降
loss=”squared_loss”:默认最小二乘法
learning_rate:学习率,可选:constant常数,optimal ,invscaling:eta=eta0/pow(t,power_t)
SGDRegression.coef_:回归系数 权重系数 == 特征数量
max_iter:迭代次数
SGDRegr