精华内容
下载资源
问答
  • 回归问题及正则化 - 二次回归和线性回归拟合效果的对比

    二次回归和线性回归的拟合效果的对比

    0 导入相关库

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    from sklearn.preprocessing import PolynomialFeatures
    from matplotlib.font_manager import FontProperties
    font_set = FontProperties(fname=r"/usr/share/fonts/vista/YaHeiConsolas.ttf", size=20) 
    

    1 预处理

    1.1 绘图相关参数设置

    def runplt():
        plt.figure()# 定义figure
        plt.title(u'披萨的价格和直径',fontproperties=font_set)
        plt.xlabel(u'直径(inch)',fontproperties=font_set)
        plt.ylabel(u'价格(美元)',fontproperties=font_set)
        plt.axis([0, 25, 0, 25])
        plt.grid(True)
        return plt
    

    1.2 训练集和测试集数据

    X_train = [[6], [8], [10], [14], [18]]
    y_train = [[7], [9], [13], [17.5], [18]]
    X_test = [[7], [9], [11], [15]]
    y_test = [[8], [12], [15], [18]]
    

    1.3 画出横纵坐标以及若干散点图

    plt = runplt()
    plt.scatter(X_train, y_train,s=40)
    

    在这里插入图片描述

    2 线性回归

    2.1 训练模型&预测

    xx = np.linspace(0, 26, 5) # 给出一些点
    regressor = LinearRegression() # 创建模型
    regressor.fit(X_train, y_train) # 训练
    yy = regressor.predict(xx.reshape(xx.shape[0], 1)) #预测
    

    2.2 画出线性回归的曲线

    plt = runplt()
    plt.scatter(X_train, y_train, s=40, label='orginal')
    
    plt.plot(xx, yy, 'g-', label='linear equation')
    plt.legend(loc='upper left')
    plt.show()
    

    在这里插入图片描述

    3 多项式回归(二次回归)

    3.1 生成多项式特征

    quadratic_featurizer = PolynomialFeatures(degree=2)
    X_train_quadratic = quadratic_featurizer.fit_transform(X_train)
    
    regressor_quadratic = LinearRegression()
    regressor_quadratic.fit(X_train_quadratic, y_train)
    

    在这里插入图片描述

    X_train
    

    在这里插入图片描述

    X_train_quadratic
    

    在这里插入图片描述
    PolynomialFeatures(degree=2)
    在这里插入图片描述

    3.2 画出多项式回归的曲线

    numpy.reshape # 给数组一个新的形状而不改变其数据

    xx = np.linspace(0, 26, 5)
    print('xx.shape', xx.shape)
    print('xx.reshape', xx.reshape(xx.shape[0], 1).shape)
    xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    print('xx_quadratic', xx_quadratic.shape)
    

    在这里插入图片描述

    xx
    

    在这里插入图片描述

    xx.reshape(xx.shape[0], 1)
    

    在这里插入图片描述

    xx_quadratic
    

    在这里插入图片描述

    plt = runplt()
    plt.scatter(X_train, y_train, s=40, label='orginal')
    
    plt.plot(xx, yy, 'g-', label='linear equation')
    
    plt.plot(xx, regressor_quadratic.predict(xx_quadratic), 'r--',label="quadratic equation")
    plt.legend(loc='upper left')
    plt.show()
    

    在这里插入图片描述

    4 评估模型

    4.1 线性回归在训练集&测试集的表现

    plt = runplt()
    plt.scatter(X_train, y_train, s=40, label='orginal')
    plt.plot(xx, yy, 'g-', label='linear equation')
    plt.scatter(X_test, y_test, c='r', s=100, label='test')
    
    plt.legend(loc='upper left')
    plt.show()
    

    在这里插入图片描述

    4.2 二次回归在训练集&测试集的表现

    plt = runplt()
    plt.scatter(X_train, y_train, s=40, label='orginal')
    plt.plot(xx, regressor_quadratic.predict(xx_quadratic), 'g--',label="quadratic equation")    
    plt.scatter(X_test, y_test, c='r', s=100, label='test')
    
    plt.legend(loc='upper left')
    plt.show()
    

    在这里插入图片描述

    4.3 r-squared

    X_test_quadratic = quadratic_featurizer.transform(X_test)
    print('linear equation  r-squared', regressor.score(X_test, y_test))
    print('quadratic equation r-squared', regressor_quadratic.score(X_test_quadratic, y_test))
    

    在这里插入图片描述

    import pandas as pd
    vs = pd.DataFrame({'r-squared': pd.Series(['linear equation', 'quadratic equation']),
             'score': pd.Series([regressor.score(X_test, y_test), regressor_quadratic.score(X_test_quadratic, y_test)])})
    vs
    

    在这里插入图片描述

    vs.set_index('r-squared', inplace=True)
    
    vs.plot.barh()
    

    在这里插入图片描述

    展开全文
  • 拓端tecdat|R方和线性回归拟合优度

    万次阅读 2019-09-04 15:41:11
    R方由协变量X解释的结果Y的变化比例通常被描述为拟合优度的度量。这当然看起来非常合理,因为R平方测量观察到的Y值与模型的预测(拟合)值的接近程度。 然而,要记住的重要一点是,R平方不会向我们提供有关我们...

    原文连接:http://tecdat.cn/?p=6267

    原文出处:拓端数据部落公众号

    我最近一直在教授建模课程,并一直在阅读和思考适合度的概念。 R方由协变量X解释的结果Y的变化比例通常被描述为拟合优度的度量。这当然看起来非常合理,因为R平方测量观察到的Y值与模型的预测(拟合)值的接近程度。

    然而,要记住的重要一点是,R平方不会向我们提供有关我们的模型是否正确指定的信息。也就是说,它没有告诉我们我们是否正确地指定了结果Y的期望如何取决于协变量。特别是,R平方的高值并不一定意味着我们的模型被正确指定。用一个简单的例子说明这是最简单的。

    首先,我们将使用R模拟一些数据。为此,我们从标准正态分布(均值为零,方差一)中随机生成X值。然后,我们生成结果Y等于X加上随机误差,再次使用标准正态分布:

    n < -  1000
    set.seed(512312)
    x < -  rnorm(n)
    y < -  x + rnorm(n)

    然后我们可以拟合Y的(正确的)线性回归模型,其中X作为协变量:

    summary(mod1)
    
    Call:
    lm(formula = y ~ x)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -2.8571 -0.6387 -0.0022  0.6050  3.0716 
    
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept)  0.02193    0.03099   0.708    0.479    
    x            0.93946    0.03127  30.040   <2e-16 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 0.98 on 998 degrees of freedom
    Multiple R-squared:  0.4748,    Adjusted R-squared:  0.4743 
    F-statistic: 902.4 on 1 and 998 DF,  p-value: < 2.2e-16

     

    我们还可以绘制数据,用模型中的拟合线覆盖:

     

    观察到(Y,X)数据并重叠拟合线。 

    现在让我们重新生成数据,但是生成Y使得它的期望值是X的指数函数:

     
    x < -  rnorm(n)
    y < -  exp(x)+ rnorm(n)
    

    当然,在实践中,我们不模拟我们的数据 - 我们观察或收集数据,然后尝试将合理的模型拟合到它。因此,和以前一样,我们可以从拟合简单的线性回归模型开始,该模型假设Y的期望是X的线性函数:

    Call:
    lm(formula = y ~ x)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -3.5022 -0.9963 -0.1706  0.6980 21.7411 
    
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept)  1.65123    0.05220   31.63   <2e-16 ***
    x            1.53517    0.05267   29.15   <2e-16 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 1.651 on 998 degrees of freedom
    Multiple R-squared:  0.4598,    Adjusted R-squared:  0.4593 
    F-statistic: 849.5 on 1 and 998 DF,  p-value: < 2.2e-16

    与第一种情况不同,我们获得的参数估计(1.65,1.54)不是“真实”数据生成机制中参数的无偏估计,其中Y的期望是exp(X)的线性函数。此外,我们看到我们得到的R平方值为0.46,再次表明X(包括线性)解释了Y中相当大的变化。我们可能认为这意味着我们使用的模型,即期望Y在X中是线性的,是合理的。但是,如果我们再次绘制观察到的数据,并用拟合线覆盖它:

    将拟合线叠加到观察到的数据上清楚地表明我们使用的模型未正确指定,尽管R平方值非常大。特别地,我们看到对于X的低值和高值,拟合值太小。这显然是Y的期望取决于exp(X)这一事实的结果,而我们使用的模型假设它是X的线性函数。

    这个简单的例子说明,尽管R平方是一个重要的度量,但高值并不意味着我们的模型被正确指定。可以说,描述R平方的更好方法是“解释变异”的度量。为了评估我们的模型是否正确指定,我们应该使用模型诊断技术,例如针对协变量的残差图或线性预测器。

    展开全文
  • #演示内容:二次回归和线性回归拟合效果的对比 """ print(__doc__) import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn....
  • nlinfit非线性回归拟合

    2017-02-15 19:59:00
    % % 使用指定函数对下述两变量进行曲线拟合 % % y=a+k1*exp(m*t)+k2*exp(-m*t); % % 离散点: t=[0,4,8,40], % % y=[20.09,64.52,85.83,126....% % 用非线性回归nlinfit,如果数据点多些,效果会更好。 脚本: clc;...
    % % 使用指定函数对下述两变量进行曲线拟合 
    % % y=a+k1*exp(m*t)+k2*exp(-m*t); 
    % % 离散点: t=[0,4,8,40], 
    % % y=[20.09,64.52,85.83,126.75]; 
    % % t-自变量 y-因变量  a,m,k1,k2为常数 
    % % 用非线性回归nlinfit,如果数据点多些,效果会更好。
    脚本:
    clc;clear; t=[0 4 8 40];  
    y=[20.09 64.52 85.83 126.75]; 
    beta=nlinfit(t,y,@myfunc2,[1 1 1 1])
    a=beta(1)
    k1=beta(2)
    k2=beta(3) 
    m=beta(4) 
    tt=0:1:40 
    yy=a+k1*exp(m*tt)+k2*exp(-m*tt) 
    plot(t,y,'o',tt,yy)
    函数:
    function y1=myfunc2(const,t) 
    a=const(1); 
    k1=const(2); 
    k2=const(3); 
    m=const(4);  
    y1=a+k1*exp(m*t)+k2*exp(-m*t);  %这些系数的顺序依次由外到内,从左至右
    图像: nlinfit非线性回归拟合

     

     

     

     

     

     

    % %或者用以下代码,更为简捷。  
    %  clc;clear;
    %  t=[0 4 8 40]; 
    % y=[20.09 64.52 85.83 126.75];
    %   myfunc=inline('beta(1)+beta(2)*exp(beta(4)*t)+beta(3)*exp(-beta(4)*t)','beta','t');
    %   beta=nlinfit(t,y,myfunc,[1 1 1 1]); 
    %   a=beta(1),k1=beta(2),k2=beta(3),m=beta(4)  ;
    %   %test the model
    % tt=0:1:40  ;
    % yy=a+k1*exp(m*tt)+k2*exp(-m*tt);
    % plot(t,y,'o',tt,yy,'r')

    转载于:https://www.cnblogs.com/xuxinstyle/p/9128903.html

    展开全文
  • 对于给出的 数据做出散点图,可以大致看出模型是否适合做线性回归,但是,线性回归一定是拟合最好的模型吗?答案是否定的。有时候,多项式回归会得出拟合效果更好的模型,但是也需要注意过拟合的线性。 下面,还是...

    对于给出的 数据做出散点图,可以大致看出模型是否适合做线性回归,但是,线性回归一定是拟合最好的模型吗?答案是否定的。有时候,多项式回归会得出拟合效果更好的模型,但是也需要注意过拟合的线性。

    下面,还是以房屋面积预测房屋价格的数据为例:

    读取数据,绘制散点图:

     多项式回归
    import matplotlib.font_manager as fm
    import matplotlib.pyplot as plt
    from sklearn import linear_model
    import numpy as np
    from sklearn.linear_model import LinearRegression #导入线性回归模型
    from sklearn.preprocessing import PolynomialFeatures # 导入多项式回归模型
    
    # 字体
    myfont = fm.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
    # plt.figure()  # 实例化作图变量
    plt.title('房价面积价格样本', fontproperties = myfont)  # 图像标题
    plt.xlabel('面积(平方米)', fontproperties = myfont)  # x轴文本
    plt.ylabel('价格(万元)', fontproperties = myfont)  # y轴文本
    # plt.axis([30, 400, 100, 400])
    plt.grid(True)  # 是否绘制网格线
    
    # 训练数据(给定的房屋面积x和价格y)
    X = [[50], [100], [150], [200], [250], [300]]
    y = [[150], [200], [250], [280], [310], [330]]
    
    # 做最终效果预测的样本
    X_test = [[250], [300]]  # 用来做最终效果测试
    y_test = [[310], [330]]  # 用来做最终效果测试
    
    # 绘制散点图
    # plt.plot(X, y, 'b.')#点
    # plt.plot(X, y, 'b-')#线
    plt.scatter(X, y, marker='*',color='blue',label='房价面积价格样本')
    # plt.show()

    先做出线性模型:

    # 线性回归
    model = LinearRegression()
    model.fit(X,y)
    # 模型拟合效果得分
    print('一元线性回归 r-squared',model.score(X_test,y_test))
    x2=[[30],[400]] # 所绘制直线的横坐标x的起点和终点
    y2=model.predict(x2)
    plt.plot(x2,y2,'g-')  # 绿色的直线
    # plt.show()

    做出二项式回归模型,看拟合效果,同线性模型进行比较:

    # 二次多项式回归
    # 实例化一个二次多项式特征实例
    quadratic_featurizer=PolynomialFeatures(degree=2)
    # 用二次多项式对样本X值做变换
    X_train_quadratic = quadratic_featurizer.fit_transform(X)
    # 创建一个线性回归实例
    regressor_model=linear_model.LinearRegression()
    # 以多项式变换后的x值为输入,带入线性回归模型做训练
    regressor_model.fit(X_train_quadratic,y)
    # 设计x轴一系列点作为画图的x点集
    xx=np.linspace(30,400,100)
    # 把训练好X值的多项式特征实例应用到一系列点上,形成矩阵
    xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    
    yy_predict = regressor_model.predict(xx_quadratic)
    
    # 用训练好的模型作图
    plt.plot(xx, yy_predict, 'r-')
    
    
    X_test_quadratic = quadratic_featurizer.transform(X_test)
    print('二次回归     r-squared', regressor_model.score(X_test_quadratic, y_test))
    # plt.show()  # 展示图像
    

    得到图像:

    红色的线就是二项式的回归模型,可以看出它是比线性回归模型对本案例的数据拟合效果要好一些,二者的拟合效果得分分别为:

    那么,当前的二次回归是否是最好的呢?我们再做三次回归看一下:

    # 三次回归
    cubic_featurizer = PolynomialFeatures(degree=3)
    X_train_cubic = cubic_featurizer.fit_transform(X)
    regressor_cubic = LinearRegression()
    regressor_cubic.fit(X_train_cubic, y)
    xx_cubic = cubic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    plt.plot(xx, regressor_cubic.predict(xx_cubic))
    
    X_test_cubic = cubic_featurizer.transform(X_test)
    print('三次回归     r-squared', regressor_cubic.score(X_test_cubic, y_test))
    plt.show()  # 展示图像

    得到的图形为:

    从图形来看,它和二次回归模型的拟合效果不相上下,分辨不出孰好孰坏,下面看一下拟合得分。

    图形模型拟合效果得分为:

    可以看出,三次回归的模型拟合得分比二次回归高,但是相差不多,从图形看来二者拟合效果都很好,因此我们在此种情况下选择二次回归,原因为三次回归可能出现了过拟合的现象。

    展开全文
  • 阅读本文需要的知识储备:高等数学概率论与数理统计Python基础线性回归,其实生活中有很多这样的例子,比如:票价与行车距离、服务质量之间的关系,买房时房价与面积、地域等的...
  • 阅读本文需要的知识储备:高等数学运筹学Python基础引出梯度下降对于,线性回归问题,上一篇我们用的是最小二乘法,很多人听到这个,或许会说:天杀的最小二乘法,因为很多人对...
  • 2.将用python来拟合(预测)缺失的那年数据。下面例子是缺失了2010年的数据,在year中,是没有1的。 # 读取或者输出数据 data = pd.DataFrame({'year':[2,3,4,5,6,7,8,9],'y':[1.874018063, 2.208148996, 2.6
  • 最近对线性回归很感兴趣,就研究了一下。其实生活中有很多这样的例子,比如:票价与行车距离、服务质量之间的关系,买房时房价与面积、地域等的关系。给我们一组这样的数据,我们想找出一个数学关系来描述这个问题,...
  • 对于线性关系,我们可以进行简单的线性回归。对于其他关系,我们可以尝试拟合一条曲线。曲线拟合是构建一条曲线或数学函数的过程,它对一系列数据点具有最佳的拟合效果。使用示例数据集#我们将使Y成为因变量,X成为...
  • 对于,线性回归问题,上一篇我们用的是最小二乘法,很多人听到这个,或许会说:天杀的最小二乘法,因为很多人对它太敏感了。是的,从小到大,天天最小二乘法,能不能来点新花样。这里就用数学算法——梯度下降,来...
  • 对于线性关系,我们可以进行简单的线性回归。对于其他关系,我们可以尝试拟合一条曲线。 曲线拟合是构建一条曲线或数学函数的过程,它对一系列数据点具有最佳的拟合效果。 使用示例数据集 #我们将使Y成为因...
  • 例子;x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; X=[ones(16,1) x]; 增加一个常数项 Y=[88 85 88 91 92 93 93 95 96 98 97 96 ... [b,bint,r,rint,stats]=regress(Y,X) 得结果:b = bi...
  • 我们可以使用线性回归模型来拟合数据,然而,在现实中,数据未必总是线性(或接近线性)的。当数据并非线性时,直接使用LinearRegression的效果可能会较差,产生欠拟合。 import numpy as np import matplotlib as...
  • R】多元线性回归拟合

    千次阅读 2019-09-22 11:21:26
    R实现多元线性回归,主要利用的就是lm()函数 熟悉其他统计回归量的函数,对做回归分析也是很有帮助的。 anova(m): ANOVA表 coefficients(m): 模型的系数 coef(m): 跟coefficients(m)一样 confint(m): ...
  • 一元线性回归分析的R语言实现(RStudio

    万次阅读 多人点赞 2019-11-09 19:43:13
    回归分析是一种应用广泛的数理统计方法,它是研究变量与变量之间的相关关系,这种关系大致分为两类:确定性关系(能用函数精确描述)和非确定性关系(不能用函数描述)。 变量间的非确定性关系称为相关关系。 在回归...
  • 最小二乘回归中,目标函数只考虑了模型对训练样本的拟合程度: 原则上任意复杂的模型能完全拟合训练数据。我们称之为过拟合。...注意:线性回归中采用线性模型。而线性模型是很简单的模型,所以当特征维数...
  • 多元统计分析之多元线性回归R语言实现多元统计分析--multivariate statistical analysis研究客观事物中多个变量之间相互依赖的统计规律性。或从数学上说, 如果个体的观测数据能表为 P维欧几里得空间的点,那么...
  • 本文介绍回归模型的原理知识,包括线性回归、多项式回归和逻辑回归,并详细介绍Python Sklearn机器学习库的LinearRegression和LogisticRegression算法及回归分析实例。进入基础文章,希望对您有所帮助。
  • 单变量线性回归 绘制散点图 相关系数R 拆分训练集和测试集 多变量线性回归 数据检验(判断是否可以做线性回归) 训练线性回归模型 先甩几个典型的线性回归的模型,帮助大家捡起那些年被忘记的数学。 ● 单...
  • 本文旨在能快速地用 matlab 实现基于多元线性回归拟合/分析。小编已将代码都封装好了。在分析样例的同时,也简单地讲解了其原理和相关参数。该系列文章是个人在参加2021年暑假国赛数模的培训,自己记录的心得与体会...
  • 大家好,我是东哥。 前一篇文章给大家介绍了...线性回归拟合优度 线性回归假设检验 线性回归诊断 线性回归拟合优度 1. 判定系数 回归直线与各观测点的接近程度成为回归直线对数据的拟合优度。而评判直线拟合优度
  • 今天,我们开始使用线性回归算法来拟合正弦函数。 首先这里我们需要做的就是回顾一下学习曲线的知识,就是本系列的第一篇文章。 如果看过就不多说,没看过可以去看看。以下是链接: ...因为下面有用到这方面的知识,...
  • 机器学习中的预测问题通常分为2类:回归与分类。简单的说回归就是预测数值,而分类是给数据打上标签归类。本文讲述如何用Python进行基本的数据拟合,以及如何对拟合结果的误差进行分析。本例中使用一个2次函数加上...
  • MATLAB 线性回归多项式拟合+预测区间、置信区间的绘制一、前言二、多项式拟合polyfit1、语法2、示例三、区间绘制四、整体源码五、思考六、参考博客 一、前言 现有一组数据:x、y x=[1 2 3 4 5 6 7 8 9 10]; y=[11 13...
  • 线性回归从一元线性回归入门

    千次阅读 2018-08-07 01:03:59
    本文是从一元线性回归为为基础来理解线性回归,适合于线性回归的入门,让初学者对于线性回归有直观的理解。本文也是我对于线性回归算法入门学习,分享给大家。 线性回归的定义 回归是用于应用于输入变量与输出...
  • 线性回归线性回归TŤLinear Regression is famously known for being a simple algorithm and a good baseline to compare more complex models to. In this article, we explore the algorithm, understand the ...
  • 1.什么是线性回归线性回归是试图在一堆数据中训练得到自变量x和因变量y中一组线性关系,如y=wx+by=wx+by=wx+b。例如把人脚底板长度作为自变量,身高作为因变量,那么在这两种数据之间就可以做一个简单线性回归,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,985
精华内容 6,794
热门标签
关键字:

线性回归拟合效果r