API

在这里插入图片描述

from sklearn.linear_model import LinearRegression
# 获取数据
x = [
    [80,86],
    [82,80],
    [85,78],
    [90,90],
    [86,82],
    [82,90],
    [78,80],
    [92,84]
    
]
y = [84.2,80.6,80.1,90,83.2,87.6,79.4,93.4]
# 模型训练
# 实例化一个估计器
estimator = LinearRegression()
estimator.fit(x,y)
# 结果输出
print("线性回归的系数:\n",estimator.coef_)
print("预测结果:\n",estimator.predict([[100,80]]))

在这里插入图片描述

损失和优化

在这里插入图片描述

损失函数(预测点到实际点的距离的平方和)

在这里插入图片描述

优化算法

在这里插入图片描述

正规方程

在这里插入图片描述

正规方程推导
推导方式一

在这里插入图片描述

推导方式二

在这里插入图片描述

正规方程求解例子

在这里插入图片描述
在这里插入图片描述

梯度下降

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于存在多个极小值的情况,梯度下降不能保证取到最小值

梯度下降例子
单变量函数梯度下降

在这里插入图片描述
在这里插入图片描述

多变量函数梯度下降

在这里插入图片描述
在这里插入图片描述

梯度下降详细介绍
相关概念

在这里插入图片描述

推导过程

在这里插入图片描述
在这里插入图片描述

梯度算法种类

在这里插入图片描述

全梯度下降算法(FG)

在这里插入图片描述

随机梯度下降算法(SG)

在这里插入图片描述

小批量梯度下降算法(mini-batch)

在这里插入图片描述

随机平均梯度下降算法(SAG)

在这里插入图片描述

线性回归API

在这里插入图片描述
设 Y=kX+b,可以理解为,k:回归系数,b:偏执

总结对比

在这里插入图片描述

算法选择依据

在这里插入图片描述

波士顿房价预测案例

数据介绍

在这里插入图片描述
在这里插入图片描述

回归性能分析

在这里插入图片描述

代码实现

正规方程实现
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
from sklearn.metrics import mean_squared_error

获取数据


boston = load_boston()
boston

在这里插入图片描述

# 数据基本处理
x_train,x_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.2)
## 特征工程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

# 机器学习-线性回归
estimator = LinearRegression()
estimator.fit(x_train,y_train)

print("这个模型的偏置是:\n",estimator.intercept_)
print("这个模型的系数是:\n",estimator.coef_)

在这里插入图片描述

# 模型评估
y_pre = estimator.predict(x_test)
print("预测值是:\n",y_pre)

#  均方误差 
ret = mean_squared_error(y_test,y_pre)
print("均方误差:\n",ret)

在这里插入图片描述

梯度下降实现
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import SGDRegressor
from sklearn.metrics import mean_squared_error

获取数据


boston = load_boston()
boston

在这里插入图片描述

# 数据基本处理
x_train,x_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.2)
## 特征工程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

# 机器学习-线性回归
estimator = SGDRegressor(max_iter=1000)
estimator.fit(x_train,y_train)

print("这个模型的偏置是:\n",estimator.intercept_)
print("这个模型的系数是:\n",estimator.coef_)

在这里插入图片描述

# 模型评估
y_pre = estimator.predict(x_test)
print("预测值是:\n",y_pre)

#  均方误差 
ret = mean_squared_error(y_test,y_pre)
print("均方误差:\n",ret)

在这里插入图片描述

欠拟合和过拟合

在这里插入图片描述

原因及解决方法

在这里插入图片描述

正则化

在这里插入图片描述
在这里插入图片描述

正则化类别

在这里插入图片描述

Ridge Regression 岭回归

在这里插入图片描述

Lasso Regression Lasso 回归

在这里插入图片描述

Elastic Net 弹性网络

在这里插入图片描述

如何选择

在这里插入图片描述

Early Stopping(了解)

在这里插入图片描述

使用岭回归改进线性回归

API

在这里插入图片描述
在这里插入图片描述

Ridge(岭回归)代码实现
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
# 获取数据
boston = load_boston()
# 数据基本处理
x_train,x_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.2)
## 特征工程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

# 机器学习-线性回归
estimator = Ridge(alpha=1.0)
estimator.fit(x_train,y_train)

print("这个模型的偏置是:\n",estimator.intercept_)
print("这个模型的系数是:\n",estimator.coef_)

# 模型评估
y_pre = estimator.predict(x_test)
print("预测值是:\n",y_pre)

#  均方误差 
ret = mean_squared_error(y_test,y_pre)
print("均方误差:\n",ret)

在这里插入图片描述

RidgeCV 代码实现
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import RidgeCV
from sklearn.metrics import mean_squared_error
# 获取数据
boston = load_boston()
# 数据基本处理
x_train,x_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.2)
## 特征工程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

# 机器学习-线性回归
estimator = RidgeCV(alphas=[0.1, 1.0, 10.0])
estimator.fit(x_train,y_train)


print("这个模型的偏置是:\n",estimator.intercept_)
print("这个模型的系数是:\n",estimator.coef_)

# 模型评估
y_pre = estimator.predict(x_test)
print("预测值是:\n",y_pre)

#  均方误差 
ret = mean_squared_error(y_test,y_pre)
print("均方误差:\n",ret)

在这里插入图片描述

sklearn模型保存和加载

API

在这里插入图片描述

案例

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import RidgeCV
from sklearn.metrics import mean_squared_error
from sklearn.externals import joblib


# 获取数据
boston = load_boston()
# 数据基本处理
x_train,x_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.2,random_state=22)
## 特征工程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

# 机器学习-线性回归
estimator = RidgeCV(alphas=[0.1, 1.0, 10.0])
estimator.fit(x_train,y_train)

# 模型保存
joblib.dump(estimator,"./test.pkl")


print("这个模型的偏置是:\n",estimator.intercept_)
print("这个模型的系数是:\n",estimator.coef_)

# 模型评估
y_pre = estimator.predict(x_test)
print("预测值是:\n",y_pre)

#  均方误差 
ret = mean_squared_error(y_test,y_pre)
print("均方误差:\n",ret)

在这里插入图片描述

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import RidgeCV
from sklearn.metrics import mean_squared_error
from sklearn.externals import joblib

# 获取模型
estimator = joblib.load("./test.pkl")

print("这个模型的偏置是:\n",estimator.intercept_)
print("这个模型的系数是:\n",estimator.coef_)

# 模型评估
y_pre = estimator.predict(x_test)
print("预测值是:\n",y_pre)

#  均方误差 
ret = mean_squared_error(y_test,y_pre)
print("均方误差:\n",ret)

在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐