精华内容
下载资源
问答
  • 一元线性回归数据案例
    2022-05-17 12:22:01
    #将pyplot字体转化成中文
    matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
    plt.rcParams['font.size'] = 12  # 设置字体大小
    plt.rcParams['axes.unicode_minus'] = False  # 设置正常显示负号
    

    案例背景:寻找房屋面积与价格的关系并进行预测图

    #需要的包
    import matplotlib.pyplot as plt
    from matplotlib import font_manager
    import matplotlib 
    import numpy as np
    import pandas as pd 
    
    # 读取数据函数
    data = pd.read_csv(r"C:\Users\A\Desktop\python\上课用\数据挖掘案例\回归分析\预测房屋面积.csv")
    X = [] #空列表用于接收数据
    Y = []
    for single_square_feet ,single_price_value in zip(data['平方英尺'],data['价格(元/平方英尺)']): #遍历数据
        X.append([float(single_square_feet)]) #存储在相应的list列表中
        Y.append(float(single_price_value))  #存储在相应的list列表中
    X,Y
    
    #将pyplot字体转化成中文
    matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
    plt.rcParams['font.size'] = 12  # 设置字体大小
    plt.rcParams['axes.unicode_minus'] = False  # 设置正常显示负号
    
    #画图判断
    def runplt(size=None):
        plt.figure(figsize=size)#figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
        plt.title('散点图')
        plt.xlabel('平方英尺')
        plt.ylabel('价格')
        plt.axis([50, 800, 6450, 20000])
        plt.grid(True)
        return plt
    plt = runplt()
    X=X #赋值
    y=Y
    plt.plot(X, y,"k.")#"k."表示散点图,否则为折线
    plt.show()

    图像为: 

     

    #调用sklearn中的linear_model模块进行线性回归。
    from sklearn import linear_model   
    model = linear_model.LinearRegression()
    model.fit(X, y) #训练模型
    intercept=display(model.intercept_)  #截距
    coefficient=display(model.coef_)  #线性模型的系数
    predict_outcome = model.predict(np.array(predict_value).reshape(1, -1)) #预测数据,此处传入数据必须是数组
    predicted_value=700
    predict_outcome

    结果为:

    进行拟合效果检验:

    #图形检验
    regr = linear_model.LinearRegression().fit(X, y) 
    plt.scatter(X,y,color='blue') #散点图,设置颜色
    plt.plot(X,regr.predict(X),color='red',linewidth=4) #拟合曲线
    plt.xticks(())
    plt.yticks(())
    plt.show() 

     

    更多相关内容
  • 基于spss的一元线性回归与多元线性回归案例,个人整理出的,包含了部分案例、实验报告、题目,及部分题目答案,适合作为spss、MATLAB等软件数据分析题目联系
  • 一元线性回归的Python代码测试数据,主要是包含一个属性值和label的测试数据
  • 一元线性回归案例(Python)

    千次阅读 热门讨论 2022-04-11 13:42:53
    1 一元线性回归简介 2 一元线性回归数学形式 3案例:不同行业工龄与薪水的线性回归模型 3.1案例背景 3.2具体代码 3.3模型优化 4总体展示 5线性回归模型评估 6模型评估的数学原理 6.1 R-squared 6.2Adj.R-...

    目录

    1 一元线性回归简介

    2 一元线性回归数学形式

    3 案例:不同行业工龄与薪水的线性回归模型

    3.1 案例背景

    3.2 具体代码

    3.3 模型优化

    4 总体展示

    5 线性回归模型评估

    6 模型评估的数学原理

    6.1 R-squared

    6.2 Adj.R-squared

    6.3 P值

    参考书籍


    1 一元线性回归简介

    线性回归模型是利用线性拟合的方式探寻数据背后的规律。如下图所示,先通过搭建线性回归模型寻找这些散点(也称样本点)背后的趋势线(也称回归曲线),再利用回归曲线进行一些简单的预测分析或因果关系分析

    在线性回归中,根据特征变量(也称自变量)来预测反应变量(也称因变量)

    根据特征变量的个数可将线性回归模型分为一元线性回归和多元线性回归。

    例如,通过“工龄”这一个特征变量来预测“薪水”,就属于一元线性回归;

    而通过“工龄”“行业”“所在城市”等多个特征变量来预测“薪水”,就属于多元线性回归。

    2 一元线性回归数学形式

    一元线性回归模型又称为简单线性回归模型,其形式可以表示为如下所示的公式。

    y=ax+b (y为因变量,x为自变量,a为回归系数,b为截距。)

    如下图所示,其中为实际值,为预测值,一元线性回归的目的就是拟合出一条线来使得预测值和实际值尽可能接近,如果大部分点都落在拟合出来的线上,则该线性回归模型拟合得较好。

    使用残差平方和衡量实际值与预测值之间的接近程度。

    使用最小二乘法求系数与截距。假设线性回归模型的拟合方程为y=ax+b,那么残差平方和(损失函数)可以定义成如下所示的公式。

    拟合的目的是使残差平方和尽可能地小,即实际值和预测值尽可能地接近。根据高等数学中求极值的相关知识,通过对残差平方和进行求导(对a和b进行求导),导数为0时,该残差平方和将取极值,此时便能获得拟合需要的系数a和截距b了。

    3 案例:不同行业工龄与薪水的线性回归模型

    3.1 案例背景

    通常来说,薪水会随着工龄的增长而增长,不同行业的薪水增长速度有所不同。本案例要应用一元线性回归模型探寻工龄对薪水的影响,即搭建薪水预测模型,并通过比较多个行业的薪水预测模型来分析各个行业的特点。

    3.2 具体代码

    # 导入设置
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    from sklearn.linear_model import LinearRegression
    
    # 设置显示中文
    plt.rcParams['font.sans-serif'] = ['KaiTi']
    plt.rcParams['axes.unicode_minus'] = False
    
    #读取数据
    df = pd.read_excel('IT行业收入表.xlsx')
    df.head(10)
    X = df[['工龄']]  #这里的自变量必须写成二维形式,一个因变量可能对应多个自变量
    Y = df['薪水']
    
    # 模型搭建
    model = LinearRegression()
    model.fit(X,Y)
    
    # 模型可视化
    plt.scatter(X,Y)
    plt.plot(X,model.predict(X),color='red')
    plt.xlabel('工龄')
    plt.ylabel('薪水')
    plt.show()
    
    #查看系数,截距:线性回归方程构造
    model.coef_,model.intercept_

    3.3 模型优化

    一元多次线性回归模型。

    之所以还需要研究一元多次线性回归模型,是因为有时真正契合的趋势线可能不是一条直线,而是一条曲线。根据一元二次线性回归模型绘制的曲线更契合散点图呈现的数据变化趋势。

    具体代码如下:

    # 用于增加一个多次项内容的模块PolynomialFeatures
    from sklearn.preprocessing import PolynomialFeatures
    
    # 设置最高次项为二次项,为生成二次项数据(x^2)做准备
    poly_reg = PolynomialFeatures(degree=2)
    
    # 将原有的X转换为一个新的二维数组X_,该二维数组包含新生成的二次项数据(x^2)和原有的一次项数据(x)。
    X_ = poly_reg.fit_transform(X)
    
    model = LinearRegression()
    model.fit(X_,Y)
    
    plt.scatter(X,Y)
    plt.plot(X,model.predict(X_),color='r')
    plt.show()
    
    model.coef_,model.intercept_

    说明:

    X_此时的结构:

    查看系数和截距:

    系数,有3个数:第1个数0对应X_中常数项的系数;第2个数对应X_中一次项(x)的系数,即系数b;第3个数对应X_中二次项(x^2)的系数,即系数a。

    截距,常数项c。因此,拟合得到的一元二次线性回归方程为y=400.8x2-743.68x+13988

    4 总体展示

    5 线性回归模型评估

    模型搭建完成后,还需要对模型进行评估,这里主要以3个值作为评判标准:

    R-squared(即统计学中的R2)、Adj.R-squared(即Adjusted R2)、P值。

    其中R-squared和Adj.R-squared用来衡量线性拟合的优劣,P值用来衡量特征变量的显著性。

    R-squared和Adj.R-squared的取值范围为0~1,它们的值越接近1,则模型的拟合程度越高;P值在本质上是个概率值,其取值范围也为0~1,P值越接近0,则特征变量的显著性越高,即该特征变量真的和目标变量具有相关性。

    import statsmodels.api as sm
    
    # add_constant()函数给原来的特征变量X添加常数项,并赋给X2,这样才有y=ax+b中的常数项,即截距b
    X2 = sm.add_constant(X)
    # 用OLS()和fit()函数对Y和X2进行线性回归方程搭建
    est = sm.OLS(Y,X).fit()
    est.summary()

    左下角的coef就是常数项(const)和特征变量(工龄)前的系数,即截距b和斜率系数a。

    对于模型评估而言,通常需要关心上图中的R-squared、Adj.R-squared和P值信息。这里的R-squared为0.855,Adj.R-squared为0.854,说明模型的线性拟合程度较高;这里的P值有两个,常数项(const)和特征变量(工龄)的P值都约等于0,所以这两个变量都和目标变量(薪水)显著相关,即真的具有相关性,而不是由偶然因素导致的。

    获取R-squared值的另一种方法:

    from sklearn.metrics import r2_score
    r2 = r2_score(Y,model.predict(X))

    Y为实际值,regr.predict(X)为预测值,打印输出r2的结果为0.855,与利用statsmodels库获得的评估结果是一致的。

    6 模型评估的数学原理

    6.1 R-squared

    要想理解R-squared,得先了解3组新的概念:整体平方和TSS、残差平方和RSS、解释平方和ESS,它们的关系如下图所示。

    其中Yi为实际值,Yfitted为预测值,Ymean为所有散点的平均值,R2为R-squared值。

    对于一个拟合程度较高的线性回归模型,我们希望其实际值要尽可能落在拟合曲线上,即残差平方和RSS尽可能小,根据R-squared的计算公式R2=1-(RSS/TSS),也就是希望R-squared尽可能大。当RSS趋向于0时,说明实际值基本都落在了拟合曲线上,模型的拟合程度非常高,那么此时R-squared趋向于1,所以在实战当中,R-squared越接近1,模型的拟合程度越高。不过拟合程度也不是越高越好,拟合程度过高可能会导致过拟合现象。

    插曲:过拟合与欠拟合

    如下图所示,过拟合即过度拟合,是指模型在训练样本中拟合程度过高,虽然它很好地贴合了训练集数据,但是丧失了泛化能力,不具有推广性,也就是说,如果换了训练集以外的数据就达不到较好的预测效果。与过拟合相对应的概念是欠拟合,欠拟合是指模型拟合程度不高,数据距离拟合曲线较远,或指模型没有很好地捕捉到数据特征,不能很好地拟合数据。

    6.2 Adj.R-squared

    Adj.R-squared是R-squared的改进版,其目的是为了防止选取的特征变量过多而导致虚高的R-squared。每新增一个特征变量,线性回归背后的数学原理都会导致R-squared增加,但是这个新增的特征变量可能对模型并没有什么帮助。为了限制过多的特征变量,引入了Adj.R-squared的概念,它在R-squared的基础上额外考虑了特征变量的数量这一因素,其公式如下。

    其中n为样本数量,k为特征变量数量。从上述公式可以看出,特征变量数量k越大,其实会对Adj.R-squared产生负影响,从而告诫数据建模者不要为了追求高R-squared值而添加过多的特征变量。当考虑了特征变量数量后,Adj.R-squared就能够更准确地反映线性模型的拟合程度。

    6.3 P值

    P值涉及统计学里假设检验中的概念,其原假设为特征变量与目标变量无显著相关性,P值是当原假设为真时所得到的样本观察结果或更极端结果出现的概率。如果该概率越大,即P值越大,原假设为真的可能性就越大,即无显著相关性的可能性越大;如果该概率越小,即P值越小,原假设为真的可能性就越小,即有显著相关性的可能性越大。所以P值越小,显著相关性越大。通常以0.05为阈值,当P值小于0.05时,就认为特征变量与目标变量有显著相关性。

    参考书籍

    《Python大数据分析与机器学习商业案例实战》

    展开全文
  • 该代码内部含完备注释
  • 为matlab初学者提供一份很好的学习教程,对matlab的学习有很大帮助。本人也是通过学习这个来学习matlab的。
  • 一元线性回归分析案例.pptx
  • 一元线性回归模型案例.doc
  • 我们用的数据集是啤酒的每周销量数据集: 二、逐步讲解r语言程序 1.导入数据集并查看数据集的基本情况 x=read.csv(file.choose(), header=TRUE) names(x) summary(x) 结果: 2.查看数据分布情况 plot(x$...

    目录

    一、前言

     二、逐步讲解r语言程序

    1.导入数据集并查看数据集的基本情况

     2.查看数据分布情况

     3.查看自变量因变量的散点图,判断线性关系

     4.添加线性模型

     5.回归,并查看回归的基本数据项

    6.假设检验 F检验 ANOVA

    7.预测与残差

    8.残差

     9.结论

    10.模型的修正


    一、前言

    上次说了基本理论,今天说说例子:

    我们用的数据集是啤酒的每周销量数据集:

     二、逐步讲解r语言程序

    1.导入数据集并查看数据集的基本情况

    x=read.csv(file.choose(), header=TRUE)
    names(x)
    summary(x)

    结果:

     2.查看数据分布情况

    plot(x$Week,x$PRICE.18PK,xlab="Week",ylab="Price.18PK")
    lines(x$PRICE.18PK)

    结果:

     

     3.查看自变量因变量的散点图,判断线性关系

    plot(x$PRICE.18PK,x$CASES.18PK, xlab="Price 18 Pack"
    , ylab="Case 18 Pack", main="Scatter Plot")

    结果:

     4.添加线性模型

    fitModel<-lm(CASES.18PK~PRICE.18PK, data=x)
    abline(fitModel, col="red")

    结果:

     5.回归,并查看回归的基本数据项

    regResult<-summary(fitModel)
    regResult

    结果:

     我们可以看到各种数据,这些数据讲用来判断这个模型是否合理。

    6.假设检验 F检验 ANOVA

    summary.aov(fitModel)

    结果:

     相关性非常显著。

    7.预测与残差

    residualData<-resid(fitModel)
    predicted<-predict(fitModel)
    plot(predicted,residualData, xlab="Predicted Values", ylab="Residuals", col="red")

    结果:

     我们发现,这个拟合模型是有问题的

    问题在于:当做出更大的预测时,该模型会产生更大的误差

    回归模型中的一个假设是,不管自变量的值如何,误差在所有点上都应该有相同的方差。

    因此,残差应表现为均值为零的正态分布

    但是,这个模型显然在大预测值时过于离散了。这就是异方差的证据!!

    对所有预测水平的方差不相同的误差!就叫做异方差问题!

    8.残差

    plot(x$Week,residualData)
    abline(0, 0, col="red")

    结果:

     我们又发现一个问题,显然,在时间序列上,前半年的残差明显低于后半年,那么,我们可以说,这个啤酒厂在下半年出现了销量暴涨的事件,或者这个公司存在明显的人为控制销量的事情,这是不自然的。大部分的价格操纵和销售飙升都发生在下半年!

    我们希望我们的残差是平缓的,而不是发散的

     9.结论

    在如此大的价格范围内,啤酒销量和啤酒价格之间的关系显然不是线性的。该模型违反了误差的同方差和正态分布假设。

    并不是所有具有高R2值的模型都是好的!

    10.模型的修正

    以前的模型(每箱价格和每箱18包出售)的结果很糟糕,因为它对数据中的模式的性质做出了错误的假设。
    一种经常使用且经常成功的策略是寻找原始变量的转换,使曲线变直,误差归一化,和/或利用时间维度。
    其他策略包括:
    • 添加新变量
    • 将数据设置为子集

    一个标准的方法是在拟合回归模型之前,对自变量和因变量都应用自然对数转换。

    当一个简单的线性回归模型被拟合到记录变量上时,斜率系数表示因变量的预测百分比变化/自变量的百分比变化,而不管它们当前的水平。

    因此,预计自变量的较大变化将导致边际效应的复合,而不是它们的线性外推。

    install.packages("dplyr")
    library("dplyr")
    x<-mutate(x,ln_CASES.18PK=log10(x$CASES.18PK),ln_PRICE.18PK=log10(x$PRICE.18PK))
    fitModel1<-lm(ln_CASES.18PK~ln_PRICE.18PK, data=x)
    summary(fitModel1)
    
    residualData<-resid(fitModel1)
    predicted<-predict(fitModel1)
    plot(predicted,residualData, xlab="Predicted Values", ylab="Residuals", col="red")
    
    x<-mutate(x,ln_PRICE.12PK=log10(x$PRICE.12PK), ln_PRICE.30PK=log10(x$PRICE.30PK))
    fitModel2<-lm(ln_CASES.18PK~ln_PRICE.18PK+ln_PRICE.12PK+ln_PRICE.30PK,data=x)
    summary(fitModel2)

    结果:

    R2更好了!

     误差的方差更均匀地分布在所有的预测值上。

    当然我们也可以加入其他的变量,让模型更好。这里就不多说了。

    展开全文
  • 比如有这样一组数据(原始数据) 这是数据字典(必须要有!) 已知月均信用卡支出为因变量 如果我们想查看这个人的收入和月均信用卡支出是否有显著的相关性,以及它们之间的数量关系。 可以把这两列数据复制到一...

    比如有这样一组数据(原始数据)
    在这里插入图片描述
    这是数据字典(必须要有!)
    在这里插入图片描述

    已知月均信用卡支出为因变量
    在这里插入图片描述
    如果我们想查看这个人的收入和月均信用卡支出是否有显著的相关性,以及它们之间的数量关系。
    可以把这两列数据复制到一个新的工作表中
    在这里插入图片描述
    我们想看收入和支出的数量关系
    首先:文件→选项→加载项;查看数据分析库是否在活用应用程序加载项中,若在不在,那么肯定在非活动应用程序加载项中,就要把它转到活动应用程序加载项里面
    在这里插入图片描述
    这样的话,在数据里面就有数据分析这项功能了
    在这里插入图片描述
    具体步骤如下
    ①对缺失值进行处理,可以用均值进行填补。
    average函数得出均值
    在这里插入图片描述
    然后筛选第一列:开始→排序和筛选→筛选
    取消全选,选中空白,点击确定
    在这里插入图片描述
    这样就会把所有缺失值筛选出来
    在这里插入图片描述
    再用刚刚算出来的平均数去填补缺失值
    在这里插入图片描述
    没有了缺失值,就可以正常去操作数据了
    ②数据→数据分析→回归→确定
    在这里插入图片描述
    会弹出这个框,我们先把Y值区域和X区域选中进去
    在这里插入图片描述

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

    第一行有标签行的话,就要勾选标志这个选项,这样计算机在计算的时候就会忽略标签行
    在这里插入图片描述
    点击确定,会得到下列数据
    在这里插入图片描述
    最后两行数据就是回归结果
    在这里插入图片描述
    Intercept这一行不管,我们重点是看第二行Income
    在这里插入图片描述

    展开全文
  • SPSS作业-一元线性回归

    千次阅读 2021-12-30 19:48:39
    作业要求:建立一元线性回归模型,并对模型进行检验 作业数据: 储蓄y 264 105 90 131 122 107 406 503 431 588 898 950 779 819 1222 1702 1578 1654 1400 1829 2200 2017 2105 1600 2250 2420 ...
  • 最小二乘法 一元线性回归
  • 一元线性回归分析 一元回归分析的基本概念 回归模型的建立一般包括: (1)通过某事物现,转化为具体问题; (2)确定指标变量,收集整理数据,并构建模型进行参数估计; (3)模型的检验,当模型检验不通过时,需要...
  • 一元线性回归、代价函数、梯度下降算法、样例(含数据)及代码
  • 本压缩包包含波士顿房价原始数据集,分为csv和data两个文件版本,源代码包含三个py文件,注释详细,其中也有其他预测模型,例如岭回归和Lasso回归,适合机器学习小白入门学习
  • 一元线性回归案例解析PPT学习教案.pptx
  • 在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性...
  • 一元线性回归(最小二乘法)

    千次阅读 2022-04-29 12:31:48
    这里写自定义目录标题前言实现原理工具准备1, 线性回归最小二乘参数估计使用python计算最小二乘法的线性回归检验 前言 本次知识来自贾俊平《统计学》第七版,初次学习,如有纰漏,请各位多多包含。诸位之意见笔者会...
  • 最小二乘法求解一元线性回归

    千次阅读 2021-06-22 19:33:15
    最小二乘法求解一元线性回归 介绍线性回归模型以及简单一元线性回归模型的解法。 通过代码实现最小二乘法求解一元线性回归实例,并对结果进行预测。 一、线性回归 二、回归问题的解决 三、最小二乘法介绍 四、...
  • 一元线性回归案例教学方案人教课标版实用教学方案.doc
  • 机器学习是实现人工智能的主要方法之一,机器学习的本质是寻找一个函数去拟合数据,从而达到预测的功能,而机器学习问题可分为回归问题与分类问题,本blog讲解最简单的回归模型--线性回归
  • 1、线性回归的原理基础定义线性回归是利用数理统计中的回归分析,来确定两种或两种以上属性间相互依赖的定量关系的一种统计分析方法。举个例子,一套房子的具有面积、卧室数量、卫生间数量等三个属性,该房子的售价...
  • 剔除异常数据,重新调用regress函数作一元线性回归 1. 读取数据,绘制散点图 ClimateData = xlsread('examp08_01.xls'); % 从Excel文件读取数据 x = ClimateData(:, 1); % 提取ClimateData的第1列,即年平均气温...
  • spss系列——一元线性回归的分析与预测实例

    万次阅读 多人点赞 2021-01-21 16:41:29
    spss系列——一元线性回归的分析与预测实例散点图回归系数二级目录三级目录 本文主要利用某商店记录了12个月的销售收入yyy(亿元)和广告费xxx(亿元),研究某广告对销售收入的影响,其数据见下表所示。 销售收人与...
  • %x 一元线性模型自变量的n个观测值的(n*p)矩阵;y 一元线性模型因变量的n个观测值的n×1向量,x0为预测值的横坐标b; %b 回归系数的最小二乘估计值,bint 估计值b的置信区间,r 模型拟合残差,rint -模型拟合残差...
  • 案例分析实施报告一元线性回归模型.doc
  • 机器学习一元线性回归
  • 目录1、线性回归的原理基础定义公式推导简单理解2、最小二乘法PYTHON实现0. 导入相关库1. 导入数据2. 定义损失函数3. 定义算法拟合函数4. 测试定义的函数5. 画出拟合曲线3、最小二乘简单例子 1、线性回归的原理 基础...
  • 机器学习—一元线性回归

    千次阅读 2022-03-16 17:25:08
    一个回归模型的案例 问题描述:有一个北京市房屋面积与房价的数据集,使用这组数据集来训练算法,使得可以预测北京市给定房屋面积的房子的售价。 思考流程:使用训练集训练算法,算法会根据数据集之间变量的关系拟合...
  • 1.收集到港澳台近15年的数据(表格1),数据来源具体来源:http://data.stats.gov.cn/easyquery.htm?cn=E0110 表格 1 时间 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,679
精华内容 671
关键字:

一元线性回归数据案例

友情链接: RLS.zip