HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    线性回归模型计算(线性回归模型计算器)

    发布时间:2023-04-14 11:26:44     稿源: 创意岭    阅读: 128        

    大家好!今天让创意岭的小编来大家介绍下关于线性回归模型计算的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    线性回归模型计算(线性回归模型计算器)

    一、python多元线性回归怎么计算

    1、什么是多元线性回归模型?

    当y值的影响因素不唯一时,采用多元线性回归模型。

    y =y=β0+β1x1+β2x2+...+βnxn

    例如商品的销售额可能不电视广告投入,收音机广告投入,报纸广告投入有关系,可以有 sales =β0+β1*TV+β2* radio+β3*newspaper.

    2、使用pandas来读取数据

    pandas 是一个用于数据探索、数据分析和数据处理的python库

    [python] view plain copy

    • import pandas as pd

    • [html] view plain copy

    • <pre name="code" class="python"># read csv file directly from a URL and save the results

    • data = pd.read_csv('/home/lulei/Advertising.csv')

    • # display the first 5 rows

    • data.head()

    • 这里的Advertising.csv是来自Advertising.csv。大家可以自己下载。
    • 上面代码的运行结果:

    •     TV  Radio  Newspaper  Sales
    • 0  230.1   37.8       69.2   22.1
    • 1   44.5   39.3       45.1   10.4
    • 2   17.2   45.9       69.3    9.3
    • 3  151.5   41.3       58.5   18.5
    • 4  180.8   10.8       58.4   12.9
    • 上面显示的结果类似一个电子表格,这个结构称为Pandas的数据帧(data frame),类型全称:pandas.core.frame.DataFrame.

      pandas的两个主要数据结构:Series和DataFrame:

    • Series类似于一维数组,它有一组数据以及一组与之相关的数据标签(即索引)组成。

    • DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典。

    • [python] view plain copy

    • # display the last 5 rows

    • data.tail()

    • 只显示结果的末尾5行
    •        TV  Radio  Newspaper  Sales
    • 195   38.2    3.7       13.8    7.6
    • 196   94.2    4.9        8.1    9.7
    • 197  177.0    9.3        6.4   12.8
    • 198  283.6   42.0       66.2   25.5
    • 199  232.1    8.6        8.7   13.4
    • [html] view plain copy

    • # check the shape of the DataFrame(rows, colums)

    • data.shape

    • 查看DataFrame的形状,注意第一列的叫索引,和数据库某个表中的第一列类似。
    • (200,4) 

      3、分析数据

      特征:

    • TV:对于一个给定市场中单一产品,用于电视上的广告费用(以千为单位)

    • Radio:在广播媒体上投资的广告费用

    • Newspaper:用于报纸媒体的广告费用

    • 响应:

    • Sales:对应产品的销量

    • 在这个案例中,我们通过不同的广告投入,预测产品销量。因为响应变量是一个连续的值,所以这个问题是一个回归问题。数据集一共有200个观测值,每一组观测对应一个市场的情况。

      注意:这里推荐使用的是seaborn包。网上说这个包的数据可视化效果比较好看。其实seaborn也应该属于matplotlib的内部包。只是需要再次的单独安装。

      [python] view plain copy

    • import seaborn as sns

    • import matplotlib.pyplot as plt

    • # visualize the relationship between the features and the response using scatterplots

    • sns.pairplot(data, x_vars=['TV','Radio','Newspaper'], y_vars='Sales', size=7, aspect=0.8)

    • plt.show()#注意必须加上这一句,否则无法显示。

    • [html] view plain copy

    • 这里选择TV、Radio、Newspaper 作为特征,Sales作为观测值

    • [html] view plain copy

    • 返回的结果:

    • seaborn的pairplot函数绘制X的每一维度和对应Y的散点图。通过设置size和aspect参数来调节显示的大小和比例。可以从图中看出,TV特征和销量是有比较强的线性关系的,而Radio和Sales线性关系弱一些,Newspaper和Sales线性关系更弱。通过加入一个参数kind='reg',seaborn可以添加一条最佳拟合直线和95%的置信带。
    • [python] view plain copy

    • sns.pairplot(data, x_vars=['TV','Radio','Newspaper'], y_vars='Sales', size=7, aspect=0.8, kind='reg')

    • plt.show()

    • 结果显示如下:
    • 线性回归模型计算(线性回归模型计算器)

      4、线性回归模型

      优点:快速;没有调节参数;可轻易解释;可理解。

      缺点:相比其他复杂一些的模型,其预测准确率不是太高,因为它假设特征和响应之间存在确定的线性关系,这种假设对于非线性的关系,线性回归模型显然不能很好的对这种数据建模。

      线性模型表达式: y=β0+β1x1+β2x2+...+βnxn 其中

    • y是响应

    • β0是截距

    • β1是x1的系数,以此类推

    • 在这个案例中: y=β0+β1∗TV+β2∗Radio+...+βn∗Newspaper

    • (1)、使用pandas来构建X(特征向量)和y(标签列)
    • scikit-learn要求X是一个特征矩阵,y是一个NumPy向量。

      pandas构建在NumPy之上。

      因此,X可以是pandas的DataFrame,y可以是pandas的Series,scikit-learn可以理解这种结构。

      [python] view plain copy

    • #create a python list of feature names

    • feature_cols = ['TV', 'Radio', 'Newspaper']

    • # use the list to select a subset of the original DataFrame

    • X = data[feature_cols]

    • # equivalent command to do this in one line

    • X = data[['TV', 'Radio', 'Newspaper']]

    • # print the first 5 rows

    • print X.head()

    • # check the type and shape of X

    • print type(X)

    • print X.shape

    • 输出结果如下:
    •      TV  Radio  Newspaper
    • 0  230.1   37.8       69.2
    • 1   44.5   39.3       45.1
    • 2   17.2   45.9       69.3
    • 3  151.5   41.3       58.5
    • 4  180.8   10.8       58.4
    • <class 'pandas.core.frame.DataFrame'>
    • (200, 3)
    • [python] view plain copy

    • # select a Series from the DataFrame

    • y = data['Sales']

    • # equivalent command that works if there are no spaces in the column name

    • y = data.Sales

    • # print the first 5 values

    • print y.head()

    • 输出的结果如下:
    • 0    22.1
    • 1    10.4
    • 2     9.3
    • 3    18.5
    • 4    12.9
    • Name: Sales
    • (2)、构建训练集与测试集

      [html] view plain copy

    • <pre name="code" class="python"><span style="font-size:14px;">##构造训练集和测试集

    • from sklearn.cross_validation import train_test_split  #这里是引用了交叉验证

    • X_train,X_test, y_train, y_test = train_test_split(X, y, random_state=1)

    • #default split is 75% for training and 25% for testing
    • [html] view plain copy

    • print X_train.shape

    • print y_train.shape

    • print X_test.shape

    • print y_test.shape

    • 输出结果如下:
    • (150, 3)
    • (150,)
    • (50, 3)
    • (50,)
    • 注:上面的结果是由train_test_spilit()得到的,但是我不知道为什么我的版本的sklearn包中居然报错:

    • ImportError                               Traceback (most recent call last)<ipython-input-182-3eee51fcba5a> in <module>()      1 ###构造训练集和测试集----> 2 from sklearn.cross_validation import train_test_split      3 #import sklearn.cross_validation      4 X_train,X_test, y_train, y_test = train_test_split(X, y, random_state=1)      5 # default split is 75% for training and 25% for testingImportError: cannot import name train_test_split
    • 处理方法:1、我后来重新安装sklearn包。再一次调用时就没有错误了。

      2、自己写函数来认为的随机构造训练集和测试集。(这个代码我会在最后附上。)

    • (3)sklearn的线性回归
    • [html] view plain copy

    • from sklearn.linear_model import LinearRegression

    • linreg = LinearRegression()

    • model=linreg.fit(X_train, y_train)

    • print model

    • print linreg.intercept_

    • print linreg.coef_

    • 输出的结果如下:
    • LinearRegression(copy_X=True, fit_intercept=True, normalize=False)
    • 2.66816623043
    • [ 0.04641001  0.19272538 -0.00349015]
    • [html] view plain copy

    • # pair the feature names with the coefficients

    • zip(feature_cols, linreg.coef_)

    • 输出如下:
    • [('TV', 0.046410010869663267),
    • ('Radio', 0.19272538367491721),
    • ('Newspaper', -0.0034901506098328305)]
    • y=2.668+0.0464∗TV+0.192∗Radio-0.00349∗Newspaper
    • 如何解释各个特征对应的系数的意义?
    • 对于给定了Radio和Newspaper的广告投入,如果在TV广告上每多投入1个单位,对应销量将增加0.0466个单位。就是加入其它两个媒体投入固定,在TV广告上每增加1000美元(因为单位是1000美元),销量将增加46.6(因为单位是1000)。但是大家注意这里的newspaper的系数居然是负数,所以我们可以考虑不使用newspaper这个特征。这是后话,后面会提到的。

      (4)、预测

      [python] view plain copy

    • y_pred = linreg.predict(X_test)

    • print y_pred

    • [python] view plain copy

    • print type(y_pred)

    • 输出结果如下:
    • [ 14.58678373   7.92397999  16.9497993   19.35791038   7.36360284
    •   7.35359269  16.08342325   9.16533046  20.35507374  12.63160058
    •  22.83356472   9.66291461   4.18055603  13.70368584  11.4533557
    •   4.16940565  10.31271413  23.06786868  17.80464565  14.53070132
    •  15.19656684  14.22969609   7.54691167  13.47210324  15.00625898
    •  19.28532444  20.7319878   19.70408833  18.21640853   8.50112687
    •   9.8493781    9.51425763   9.73270043  18.13782015  15.41731544
    •   5.07416787  12.20575251  14.05507493  10.6699926    7.16006245
    •  11.80728836  24.79748121  10.40809168  24.05228404  18.44737314
    •  20.80572631   9.45424805  17.00481708   5.78634105   5.10594849]
    • <type 'numpy.ndarray'>
    • 5、回归问题的评价测度

      (1) 评价测度

      对于分类问题,评价测度是准确率,但这种方法不适用于回归问题。我们使用针对连续数值的评价测度(evaluation metrics)。

      这里介绍3种常用的针对线性回归的测度。

      1)平均绝对误差(Mean Absolute Error, MAE)

      (2)均方误差(Mean Squared Error, MSE)

      (3)均方根误差(Root Mean Squared Error, RMSE)

      这里我使用RMES。

      [python] view plain copy

    • <pre name="code" class="python">#计算Sales预测的RMSE

    • print type(y_pred),type(y_test)

    • print len(y_pred),len(y_test)

    • print y_pred.shape,y_test.shape

    • from sklearn import metrics

    • import numpy as np

    • sum_mean=0

    • for i in range(len(y_pred)):

    • sum_mean+=(y_pred[i]-y_test.values[i])**2

    • sum_erro=np.sqrt(sum_mean/50)

    • # calculate RMSE by hand

    • print "RMSE by hand:",sum_erro

    • 最后的结果如下:
    • <type 'numpy.ndarray'> <class 'pandas.core.series.Series'>
    • 50 50
    • (50,) (50,)
    • RMSE by hand: 1.42998147691
    • (2)做ROC曲线
    • [python] view plain copy

    • import matplotlib.pyplot as plt

    • plt.figure()

    • plt.plot(range(len(y_pred)),y_pred,'b',label="predict")

    • plt.plot(range(len(y_pred)),y_test,'r',label="test")

    • plt.legend(loc="upper right") #显示图中的标签

    • plt.xlabel("the number of sales")

    • plt.ylabel('value of sales')

    • plt.show()

    • 显示结果如下:(红色的线是真实的值曲线,蓝色的是预测值曲线)
    • 线性回归模型计算(线性回归模型计算器)

      直到这里整个的一次多元线性回归的预测就结束了。

      6、改进特征的选择

      在之前展示的数据中,我们看到Newspaper和销量之间的线性关系竟是负关系(不用惊讶,这是随机特征抽样的结果。换一批抽样的数据就可能为正了),现在我们移除这个特征,看看线性回归预测的结果的RMSE如何?

      依然使用我上面的代码,但只需修改下面代码中的一句即可:

      [python] view plain copy

    • #create a python list of feature names

    • feature_cols = ['TV', 'Radio', 'Newspaper']

    • # use the list to select a subset of the original DataFrame

    • X = data[feature_cols]

    • # equivalent command to do this in one line

    • #X = data[['TV', 'Radio', 'Newspaper']]#只需修改这里即可<pre name="code" class="python" style="font-size: 15px; line-height: 35px;">X = data[['TV', 'Radio']]  #去掉newspaper其他的代码不变

    • # print the first 5 rowsprint X.head()# check the type and shape of Xprint type(X)print X.shape
    • 最后的到的系数与测度如下:

      LinearRegression(copy_X=True, fit_intercept=True, normalize=False)

    • 2.81843904823
    • [ 0.04588771  0.18721008]
    • RMSE by hand: 1.28208957507
    • 然后再次使用ROC曲线来观测曲线的整体情况。我们在将Newspaper这个特征移除之后,得到RMSE变小了,说明Newspaper特征可能不适合作为预测销量的特征,于是,我们得到了新的模型。我们还可以通过不同的特征组合得到新的模型,看看最终的误差是如何的。
    • 备注:

    • 之前我提到了这种错误:
    • 注:上面的结果是由train_test_spilit()得到的,但是我不知道为什么我的版本的sklearn包中居然报错:

    • ImportError                               Traceback (most recent call last)<ipython-input-182-3eee51fcba5a> in <module>()      1 ###构造训练集和测试集----> 2 from sklearn.cross_validation import train_test_split      3 #import sklearn.cross_validation      4 X_train,X_test, y_train, y_test = train_test_split(X, y, random_state=1)      5 # default split is 75% for training and 25% for testingImportError: cannot import name train_test_split
    • 处理方法:1、我后来重新安装sklearn包。再一次调用时就没有错误了。

      2、自己写函数来认为的随机构造训练集和测试集。(这个代码我会在最后附上。)

    • 这里我给出我自己写的函数:
    • [python] view plain copy

    • import random

    • [python] view plain copy

    • <span style="font-family:microsoft yahei;">######自己写一个随机分配数的函数,分成两份,并将数值一次存储在对应的list中##########

    • def train_test_split(ylabel, random_state=1):

    • import random

    • index=random.sample(range(len(ylabel)),50*random_state)

    • list_train=[]

    • list_test=[]

    • i=0

    • for s in range(len(ylabel)):

    • if i in index:

    • list_test.append(i)

    • else:

    • list_train.append(i)

    • i+=1

    • return list_train,list_test

    • ###############对特征进行分割#############################

    • feature_cols = ['TV', 'Radio','Newspaper']

    • X1 = data[feature_cols]

    二、线性回归方程公式b怎么求

    第一:用所给样本求出两个相关变量的(算术)平均值:

    x_=(x1+x2+x3+...+xn)/n

    y_=(y1+y2+y3+...+yn)/n 

    第二:分别计算分子和分母:(两个公式任选其一)

    分子=(x1y1+x2y2+x3y3+...+xnyn)-nx_Y_

    分母=(x1^2+x2^2+x3^2+...+xn^2)-n*x_^2

    第三:计算  b   :   b=分子  /  分母

    用最小二乘法估计参数b,设服从正态分布,分别求对a、b的偏导数并令它们等于零,得方程组解为

    其中 ,且为观测值的样本方差.线性方程称为关于的线性回归方程,称为回归系数,对应的直线称为回归直线.顺便指出,将来还需用到,其中为观测值的样本方差.

    先求x,y的平均值X,Y

    再用公式代入求解:b=(x1y1+x2y2+...xnyn-nXY)/(x1+x2+...xn-nX)

    后把x,y的平均数X,Y代入a=Y-bX

    求出a并代入总的公式y=bx+a得到线性回归方程

    (X为xi的平均数,Y为yi的平均数)

    线性回归模型计算(线性回归模型计算器)

    扩展资料

    分析按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。如果在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。

    如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

    参考资料:线性回归方程的百度百科

    三、线性回归问题怎么求回归系数

    y=bx+a

    例如:

    y=3x+1

    因为不知道x前面的系数,和常数项所以设成a,b,a和b通常是需要求的。

    先求x,y的平均值X,Y

    再用公式代入求解:b=(x1y1+x2y2+...xnyn-nXY)/(x1+x2+...xn-nX)

    后把x,y的平均数X,Y代入a=Y-bX

    求出a并代入总的公式y=bx+a得到线性回归方程。

    扩展资料:

    在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。这些模型被叫做线性模型。最常用的线性回归建模是给定X值的y的条件均值是X的仿射函数。

    不太一般的情况,线性回归模型可以是一个中位数或一些其他的给定X的条件下y的条件分布的分位数作为X的线性函数表示。像所有形式的回归分析一样,线性回归也把焦点放在给定X值的y的条件概率分布,而不是X和y的联合概率分布。

    四、最小二乘法求线性回归方程中的系数a,b怎么求

    用最小二乘法求回归直线方程中的a,b有下面的公式:

    线性回归模型计算(线性回归模型计算器)

    最小二乘法:总离差不能用n个离差之和来表示,通常是用离差的平方和,即作为总离差,并使之达到最小,这样回归直线就是所有直线中Q取最小值的那一条,这种使“离差平方和最小”的方法,叫做最小二乘法:

    由于绝对值使得计算不变,在实际应用中人们更喜欢用:Q=(y1-bx1-a)²+(y2-bx-a²)+。。。+(yn-bxn-a)²

    这样,问题就归结于:当a,b取什么值时Q最小,即到点直线y=bx+a的“整体距离”最小。

    扩展资料:

    回归分析的最初目的是估计模型的参数以便达到对数据的最佳拟合。在决定一个最佳拟合的不同标准之中,最小二乘法是非常优越的。这种估计可以表示为:线性回归模型计算(线性回归模型计算器)

    1)样本是在母体之中随机抽取出来的。

    2)因变量Y在实直线上是连续的,

    3)残差项是独立同分布的,也就是说,残差是独立随机的,且服从高斯分布。

    这些假设意味着残差项不依赖自变量的值,所以 线性回归模型计算(线性回归模型计算器) 和自变量X(预测变量)之间是相互独立的。在这些假设下,建立一个显示线性回归作为条件预期模型的简单线性回归方程,可以表示为:线性回归模型计算(线性回归模型计算器)

    给一个随机样本 线性回归模型计算(线性回归模型计算器) ,一个线性回归模型假设回归子 线性回归模型计算(线性回归模型计算器) 和回归量 线性回归模型计算(线性回归模型计算器) 之间的关系是除了X的影响以外,还有其他的变数存在。我们加入一个误差项 线性回归模型计算(线性回归模型计算器) (也是一个随机变量)来捕获除了 线性回归模型计算(线性回归模型计算器) 之外任何对 线性回归模型计算(线性回归模型计算器)的影响。

    参考资料:百度百科——线性回归方程

    以上就是关于线性回归模型计算相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    数字媒体非线性编辑技术知识点(数字媒体非线性编辑技术知识点汇总)

    产业园线性景观设计图(产业园线性景观设计图纸)

    产业园线性景观设计(产业园线性景观设计图)

    杭州激光IMAX影院清单(杭州 激光imax)

    杭州过年特色风俗(杭州过年特色风俗有哪些)