因变量是连续的,自变量可以是连续的,亦可以是离散的,回归线的性质是线型的,线型回归使用最佳拟合直线(回归线)在因变量Y在一个或多个自变量X之间建立的一种关系
实现思路根据样本值,生成回归拟合模型;给定自变量的值,通过模型计算出因变量的值
代码 import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False %matplotlib inline from sklearn.linear_model import LinearRegression rng = np.random.RandomState(10) # RandomState:随机种子,对于一个随机数发生器,指定了相同的随机数种子,产生的随机数序列就会相同 xtrain = 10 * rng.rand(30) ytrain = 8 + 4*xtrain + rng.rand(30)*20 # 样本关系:Y= 8 + 4X # 创建图例 fig = plt.figure(figsize=(12,3)) axl = fig.add_subplot(1,2,1) plt.scatter(xtrain,ytrain,marker='.',color='k') plt.grid() plt.title('样本数据散点图') # 生成模型 model = LinearRegression() model.fit(xtrain[:,np.newaxis],ytrain) # 查看模型斜率 print(model.coef_) # 查看模型截距 print(model.intercept_) # 给的测试自变量 xtest = np.linspace(0,10,1000) ytest = model.predict(xtest[:,np.newaxis]) # 给定x自变量,模型会生成y对应的值 ax2 = fig.add_subplot(1,2,2) plt.scatter(xtrain,ytrain,marker = '.',color = 'k') plt.plot(xtest,ytest,color='r') plt.grid() plt.title('线型回归拟合') # 样本数据x在拟合直线x上的值 ytest2 = model.predict(xtrain[:,np.newaxis]) # ytest散点图 plt.scatter(xtrain,ytest2,marker = 'x',color='g') # 误差线 plt.plot([xtrain,xtrain],[ytrain,ytest2],color='gray') plt.grid() 解释:1、样本关系:y=4x+8,生成的模型斜率为4.02725281,截距为8.363042691291145
2、model.fit(xtrain[:,np.newaxis],ytrain)需要传入一个列变量,因此xtrain[:,np.newaxis]是将航变量转变为列变量
3、xtext为测试自变量的值,通过调model.predict()方法生成因变量y的值。
4、为了能是误差明显一些,在模型生成的时候误差值进行了放大(ytrain = 8 + 4*xtrain + rng.rand(30)*20)20倍。