LinearRegression 线性回归
线性回归
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计方法
线性回归利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模
这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归
线性回归:使如y=(w.T*x+b)的线性模型似合数据输入和输出之间的映射关系
线性回归的实际用途
1、如果目标是预测或者映射,线性回归可以用来对观测数据集的y和X的值拟合出一个预测模型,当完成这样一个模型后,对于一个新增X值,
在没有给定与它相配对的y的情况下,可以用这个拟合的模型预测出一个y值
2、给定一个变量y和一些变量x1,x2…xp,这些变量有可能与y相关,线性回归分析可以用来量化y与X,并识别出哪些Xi的子集包含了关于y的冗余信息
线性回归的应用
背景:
与房价密切相关的除了单位房价,还有房屋的尺寸,我们可以根据已知的房屋成交价和房屋的尺寸进行线性回归,继而可以对已知房屋尺寸,而未知房屋成交价格的实例进行成交价格的预测
目标:
对房屋成交信息建立回归方程,并依据回归方程对房屋价格进行预测
技术路线:
sklearn.linear_model.LinearRegression
可行性分析:
简单直观的方式是通过数据的可视化直接观察房屋成交价格与房屋尺寸间是否存在线性关系
对于本实验的数据来说,散点图可以很好的将其在二维平面中进行可视化表示
实验过程
使用算法:线性回归
实现步骤:
1、建立工程并导入sklearn包
2、加载训练数据,建立回归方程
3、可视化处理
函数参数
linear=linear_model.LinearRegression(fit_intercept=True,normalize==False,
copy_X=True,n_jobs=None)
fit_intercept:bool型,表示是否计算该模型截距
normalize:bool型,表示回归前是否需要归一化
linear.fit(x,y,sample_weight=None)
x:训练向量
y:x的目标向量
sample_weight:分配给各个样本的权重数组,可省略
查看回归方程系数:linear.coef_
查看回归方程截距:linear.intercept_
import matplotlib.pyplot as plt
from sklearn import linear_model
import numpy as np
dataset_x=[]
dataset_y=[]#加载数据
fr=open('prices.txt','r')
lines=fr.readlines()
#数据处理
for line in lines:items=line.strip().split(',')dataset_x.append(int(items[0]))dataset_y.append(int(items[1]))
length=len(dataset_x)
dataset_x=np.array(dataset_x).reshape([length,1]) #将数据转化为数组,增加列值=1,以符合线性回归函数参数要求
dataset_y=np.array(dataset_y)
minx=min(dataset_x)
maxx=max(dataset_x)
x=np.arange(minx,maxx).reshape([-1,1]) #以数据dataset_x的最大值和最小值,建立等差数列,方便后续画图
linear=linear_model.LinearRegression()
linear.fit(dataset_x,dataset_y)plt.scatter(dataset_x,dataset_y,color='red')
plt.plot(x,linear.predict(x),color='blue')
plt.xlabel('Area')
plt.ylabel('price')
plt.show()