笔记·线性回归(属于监督学习)
课程地址:
https://www.bilibili.com/video/BV1ctQzYUEbz/?spm_id_from=333.788.videopod.episodes&vd_source=2261ace2f13d8ad621d5f659b716ea10&p=6
回归分析(Regression Analysis)
回归分析:根据数据,确定一个或多个因变量和一个或多个自变量之间的定量关系,然后用它们来预测未知数据的值。
y=f(x1,x2,……xn)
分类:
变量数
一元回归
多元回归
函数关系
线性回归
非线性回归
线性回归
定义
回归分析中,变量与因变量存在线性关系
函数表达式
y=ax+b
回归问题求解
面积110平米售价150万是否值得投资?
面积(A) | 售价(P) |
79 | 404,976 |
92 | 948,367 |
…… | …… |
解决步骤(三步):
确定P、A定量关系 ⭐
P=f(A)
根据关系预测合理价格
P{(A=110)}=f(110)
做出判断
确定P、A间的定量关系
线性模型: y=ax+b
损失函数
如何找到合适的a和b? 使模型输出结果尽量y`接近实际结果y
损失函数越小越好
损失函数(成本函数)表示预测值与实际值之间的差异。
举例(损失函数):
第一条拟合更好(即黑色的一条)
怎么样找出a和b?
梯度下降法
梯度下降法是一种用于求解无约束最优化问题的迭代算法,其核心思想是沿着目标函数梯度的反方向更新变量,从而逐步接近函数的最小值点。
梯度下降法举例(待理解)
线性回归实战
Scikit-learn 机器学习库
Scikit-learn是一种免费的Python机器学习库,并与Python的NumPy和SciPy库协同工作,提供各种分类、回归和聚类算法,例如括支持向量机、随机森林、梯度提升、k-平均聚类和DBSCAN算法。
用scikit-learn求解线性回归问题
评估模型表现
图形展示
延伸资料
sklearn官网 线性回归问题的资料
单因子线性回归实战
# load the data import pandas as pd data=pd.read("csv文件")#确认数据 data.head()x=data.loc[:,'x'] y=data.loc[:,'y']#可视化 #绘制散点图 from matplotlib import pyplot as plt plt.figure(figsize(20*20)) #设置size plt.scatter(x,y) plt.show()#建立回归模型 import sklearn.linear_model import LinearRegression lr_model=LinearRegression() #把x,y转化成二维数组 import numpy as np x=np.reshape(-1,1) y=np.reshape(-1,1) #确认类型 print(type(x),x.shape,type(y),y.shape) #运行 lr_model.fit(x,y)#预测 y_predict=lr_model.predict(x) #预测x=3.5的值 y_3=lr_model.predict([[3.5]])a//b打印 a=lr_model.coef_ b=lr_model.intercept_ print(a,b)#评估 from sklearn.metrics import mean_squared_error.r2_score MSE=mean_squred_error(y.y_predict) R2=r2_score(y.y_predict) print(MSE,R2)plt.figure() plt.plot(y,y_predict) plt.show()
多因子线性回归实战
多因子房价预测
集中度好