湖南建设教育网站,博客可以放自己做的网站,电子商务网站建设基本流程图,板绘线下培训班回归算法-线性回归分析、回归实例和回归性能评估线性回归损失函数(误差大小)sklearn线性回归正规方程、梯度下降API线性回归实例回归#xff1a;目标值连续#xff1b;分类#xff1a;目标值离散。 预测回归和分类是不一样的。回归问题可以用于预测销售额#xff0c;比如公…
回归算法-线性回归分析、回归实例和回归性能评估线性回归损失函数(误差大小)sklearn线性回归正规方程、梯度下降API线性回归实例回归目标值连续分类目标值离散。 预测回归和分类是不一样的。回归问题可以用于预测销售额比如公司的收入、广告可以影响会对销售额进行预测。举个例子 期末成绩0.7×考试成绩0.3×平时成绩 西瓜好坏0.2×色泽0.5×根蒂0.3×敲声
import matplotlib.pyplot as plt
plt.figure(figsize(10,10))
plt.scatter([60,72,75,80,83],[126,151.2,157.5,168,174.3])
plt.show()横坐标为面积纵坐标为价格 分布关系为直线预测按其趋势预测就ok。 线性回归就是寻找一种能预测的趋势。 以上就是一种线性关系。二维直线。三维特征与目标值在一个平面上。 线性回归
定义线性回归通过一个或者多个自变量与因变量之间之间进行建模的回归分析。其中特点为一个或多个称为回归系数的模型参数的线性组合 一元线性回归涉及到的变量只有一个 多元线性回归涉及到的变量两个或两个以上 w为权重b为偏置通用公式 回归和神经网络都是迭代的算法。
损失函数(误差大小)
算法线性函数 策略损失函数误差的平方和最小二乘法 优化优化权重的过程 总损失定义 又称最小二乘法
如何去求模型当中的W使得损失最小目的是找到最小损失对应的W值
第一种方式最小二乘法之正规方程 缺点当特征过于复杂求解速度太慢对于复杂的算法不能使用正规方程求解(逻辑回归等)
损失函数直观图(单变量举例)直接求解到最小值 第二种方式最小二乘法之梯度下降(理解过程)
我们以单变量中的w0,w1为例子 表示方向
理解沿着这个函数下降的方向找最后就能找到山谷的最低点然后更新W值 使用面对训练数据规模十分庞大的任务 学习率下降的快慢。
sklearn线性回归正规方程、梯度下降API
sklearn.linear_model.LinearRegression
正规方程
sklearn.linear_model.SGDRegressor
梯度下降LinearRegression、SGDRegressor
sklearn.linear_model.LinearRegression()
普通最小二乘线性回归
coef_回归系数sklearn.linear_model.SGDRegressor( )
通过使用SGD最小化线性模型
coef_回归系数w就是回归系数 这里提下 sklearn优点封装好建立模型简单预测简单 缺点是算法过程有些参数都在算法API内部优化看不到 学习率不用指定 tensorflow封装低自己实现线性回归学习率可以自己手动指定
线性回归实例
1、sklearn线性回归正规方程、梯度下降API2、波士顿房价数据集分析流程
波士顿房价数据案例分析流程 1、波士顿地区房价数据获取 2、波士顿地区房价数据分割 3、训练与测试数据标准化处理 4、使用最简单的线性回归模型LinearRegression和梯度下降估计SGDRegressor对房价进行预测
回归性能评估 (均方误差(Mean Squared Error)MSE) 评价机制 sklearn回归评估API
sklearn.metrics.mean_squared_errormean_squared_error(y_true, y_pred)
均方误差回归损失
y_true:真实值
y_pred:预测值
return:浮点数结果注真实值预测值为标准化之前的值
LinearRegression与SGDRegressor评估特点线性回归器是最为简单、易用的回归模型。从某种程度上限制了使用尽管如此在不知道特征之 间关系的前提下我们仍然使用线性回归器作为大多数系统的首要选择。 小规模数据LinearRegression(不能解决拟合问题)以及其它 大规模数据SGDRegressor
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge, LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error, classification_report
from sklearn.externals import joblib
import pandas as pd
import numpy as npdef mylinear():线性回归直接预测房子价格:return: None# 获取数据lb load_boston()# 分割数据集到训练集和测试集x_train, x_test, y_train, y_test train_test_split(lb.data, lb.target, test_size0.25)print(y_train, y_test)# 进行标准化处理(?) 目标值处理# 特征值和目标值是都必须进行标准化处理, 实例化两个标准化APIstd_x StandardScaler()x_train std_x.fit_transform(x_train)x_test std_x.transform(x_test)# 目标值std_y StandardScaler()y_train std_y.fit_transform(y_train)y_test std_y.transform(y_test)# 预测房价结果model joblib.load(./tmp/test.pkl)y_predict std_y.inverse_transform(model.predict(x_test))print(保存的模型预测的结果, y_predict)# estimator预测# 正规方程求解方式预测结果# lr LinearRegression()## lr.fit(x_train, y_train)## print(lr.coef_)# 保存训练好的模型# joblib.dump(lr, ./tmp/test.pkl)# # 预测测试集的房子价格# y_lr_predict std_y.inverse_transform(lr.predict(x_test))## print(正规方程测试集里面每个房子的预测价格, y_lr_predict)## print(正规方程的均方误差, mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict))## # 梯度下降去进行房价预测# sgd SGDRegressor()## sgd.fit(x_train, y_train)## print(sgd.coef_)## # 预测测试集的房子价格# y_sgd_predict std_y.inverse_transform(sgd.predict(x_test))## print(梯度下降测试集里面每个房子的预测价格, y_sgd_predict)## print(梯度下降的均方误差, mean_squared_error(std_y.inverse_transform(y_test), y_sgd_predict))## # 岭回归去进行房价预测# rd Ridge(alpha1.0)## rd.fit(x_train, y_train)## print(rd.coef_)## # 预测测试集的房子价格# y_rd_predict std_y.inverse_transform(rd.predict(x_test))## print(梯度下降测试集里面每个房子的预测价格, y_rd_predict)## print(梯度下降的均方误差, mean_squared_error(std_y.inverse_transform(y_test), y_rd_predict))return None
if __name__ __main__:mylinear()