精华内容
下载资源
问答
  • python 线性回归 最小二乘法

    千次阅读 2018-11-20 20:49:24
    python 线性回归 最小二乘法 公式 代码 # -*- coding:utf-8 -*- def least_square(x,y): n = len(x) sumX , sumY, sumXY, sumXX =0, 0, 0, 0 for i in range(0,n): sumX += x[i] sumY += y[i] sumXX += x...

    公式

    在这里插入图片描述

    代码

        # -*- coding:utf-8 -*-
        
        def least_square(x,y):
            n = len(x)
            sumX , sumY, sumXY, sumXX =0, 0, 0, 0
            for i in range(0,n):
                sumX  += x[i]
                sumY  += y[i]
                sumXX += x[i]*x[i]
                sumXY += x[i]*y[i]
            mean_x = sumX / n
            mean_y = sumY / n
            a = (n*sumXY - sumX*sumY)/(n*sumXX - sumX*sumX)
            b = mean_y - a * mean_x
            return a, b
        
        
        xi = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        yi = [10, 11.5, 12, 13, 14.5, 15.5, 16.8, 17.3, 18, 18.7]
        a, b = least_square(xi, yi)
        print("y = %10.5fx + %10.5f" % (a, b))
    

    Reference

    https://zh.wikipedia.org/wiki/最小二乘法
    https://blog.csdn.net/wangyangzhizhou/article/details/60133958

    展开全文
  • Python线性回归分析 线性回归:1周销量来预测6周销量 建模组:叶菜类历史销量数据 测试组:某款叶菜的历史销售数据 机器学习训练结果 回归统计表 方差分析表 关于模型优劣的样本验证 预测误差表 误差分布图...

    目录

    Python线性回归分析

    线性回归:1周销量来预测6周销量

    建模组:叶菜类历史销量数据

    测试组:某款叶菜的历史销售数据

    机器学习训练结果

    回归统计表

    方差分析表

    关于模型优劣的样本验证

    预测误差表

    误差分布图

    重新建模:剔除不合适的样本

    剩余样本重新建模

    重新建模后的残差图


    Python线性回归分析

    线性回归:1周销量来预测6周销量

    建模组:叶菜类历史销量数据

     

    测试组:某款叶菜的历史销售数据

     

    机器学习训练结果

    回归统计表

    Multiple R(相关系数):代表两组数据的相关程度,系数越接近1,代表越相关,在使用2周销量进行建模后,R已经高达0.98,说明2周销量与6周销量呈强烈的线性关系,最适合用来预测6周销量

    R平方:是相关系数的平方,平方后两种模型的差距更明显

    调整后的R方:通过对添加的非显著变量给出惩罚,使原有R平方的值小幅度调整,代表前6周销量可以由第1周销量解释的百分比

    方差分析表

    水平:分两组 观测值:17个样本的1周销量,17个样本的6周销量

    水平:分两组 观测值:17个样本的2周销量,17个样本的6周销量

    使用方差分析可以验证两组样本的样本均值是否有显著性差异,比如均值是否一样,PR(>F)的值越大,说明两组样本的差异越小,相关性越高,在使用2周销量进行模拟后PR(>F)上升了15倍,进一步说明使用2周销量预测6周销量更准确。

    关于模型优劣的样本验证

    预测误差表

    误差分布图

    重新建模:剔除不合适的样本

    剩余样本重新建模

    重新建模后的残差图

    重新建模后仍旧有极端值(用①和②来标识)系统性的偏差(用③标识)却明显减小,残差的均衡性也更好。

    import xlrd
    import math
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from sklearn import datasets, linear_model
    from statsmodels.formula.api import ols
    from statsmodels.stats.anova import anova_lm
    from sklearn.metrics import mean_squared_error, r2_score
    
    #计算两列表的 相关系数
    def Corr_Gust(list1,list2):
        g_s_m = pd.Series(list1)  # 利用Series将列表转换成新的、pandas可处理的数据
        g_a_d = pd.Series(list2)
        corr_gust = round(g_s_m.corr(g_a_d), 4)  # 计算标准差,round(a, 4)是保留a的前四位小数
        return corr_gust
    
    #计算R平方
    def R_Square(list1,list2):
        r = Corr_Gust(list1,list2)
        return r*r
    
    #调整R平方
    def Trim_R2(list1,list2,n,p):
        return 1-(1-R_Square(list1,list2))*(n-1)/(n-p-1)
    
    #标准误差计算
    def S_error(list_):
        return np.std(list_, ddof=1)
    
    #方差检验
    def V_analysis(list1,list2):
        list_ = []
        for i in list1:
            list_.append([1,i])
        for i in list2:
            list_.append([2,i])
        df = pd.DataFrame(np.array(list_),index=None)
        df.columns = ['水平', '观测值']
        formula = '{} ~ {}'.format(df.columns[1], df.columns[0])
        model = ols(formula, df).fit()
        anovat = anova_lm(model)
        print(anovat)
    
    workbook = xlrd.open_workbook('线性回归销量预测.xlsx')
    table = workbook.sheet_by_name("Sheet2")
    #table = workbook.sheet()[1]
    #print(table.nrows,table.ncols)
    #for i in range(table.ncols):
        #print(table.col_values(i))
    
    week = 2
    kuai_cai = [140,830,3495]
    to_predicted = kuai_cai[0]
    
    # 将特征数据集分为训练集和测试集
    x_old = np.array(table.col_values(week)[1:])
    y_old = np.array(table.col_values(3)[1:])
    X_train = x_old[:]
    X_train = X_train.reshape(-1, 1)
    X_test = x_old[:]
    X_test = X_test.reshape(-1, 1)
    
    # 把目标数据(特征对应的真实值)也分为训练集和测试集
    y_train = y_old[:]
    y_test = y_old[:]
    
    # 创建线性回归模型
    regr = linear_model.LinearRegression()
    
    # 用训练集训练模型——看就这么简单,一行搞定训练过程
    
    regr.fit(X_train, y_train)
    
    # 用训练得出的模型进行预测
    diabetes_y_pred = regr.predict(X_test)
    #print(str(to_predicted)+'Lowest is' + str(regr.predict(np.array([to_predicted]).reshape(-1, 1))))
    print(regr.intercept_,regr.coef_)
    
    
    # 将测试结果以图标的方式显示出来
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    plt.scatter(kuai_cai[week-1],kuai_cai[2],color='red',label='快菜('+str(week)+'周销量,6周销量)',marker='p',s=200)
    plt.scatter(X_test, y_test, color='green',label=str(week)+'周预测销量')
    plt.plot(X_test, diabetes_y_pred, color='black', linewidth=3 ,label='6周预测销量')
    
    count = 0 #仅用来计数
    for i in range(len(y_train)):
        if abs(y_train[i]-diabetes_y_pred[i])/diabetes_y_pred[i] >= 0.5: #如果误差大于30%,绘制误差线
            count = count + 1
            if count == 1:
            #print([X_train[i][0],y_train[i]], [X_train[i][0],diabetes_y_pred[i]])
                plt.plot([X_train[i][0],X_train[i][0]], [y_train[i],diabetes_y_pred[i]], color='orange',label='误差线')
                plt.scatter([X_train[i][0],X_train[i][0]], [y_train[i],diabetes_y_pred[i]], color='blue',label='误差大于50%的点') #本质是绘制两点间的直线
            else:
                plt.plot([X_train[i][0],X_train[i][0]], [y_train[i],diabetes_y_pred[i]], color='orange')
                plt.scatter([X_train[i][0],X_train[i][0]], [y_train[i],diabetes_y_pred[i]], color='blue') #本质是绘制两点间的直线
    
    plt.title(str(week)+"周销量预测6周销量")
    plt.xlabel(str(week)+"周销量")
    plt.ylabel("6周销量")
    plt.legend() #显示图例#plt.xticks(())  #自定义坐标轴#plt.yticks(())
    plt.show()
    
    '''
    print(Corr_Gust(x_old,y_old))
    print(R_Square(x_old,y_old))
    print(Trim_R2(x_old,y_old,len(x_old),1))
    print(S_error(x_old))
    '''
    #V_analysis(x_old,y_old)

     

    展开全文
  • python线性回归算法-相关型数据分析

    千次阅读 2019-03-30 22:34:04
    python线性回归算法——自变量x与输出变量y存在线下关系时 目录 python线性回归算法——自变量x与输出变量y存在线下关系时 用途范围:线下相关的数据进行分析预测时候 核心公式​ python代码实现 拟合效果 ​...

    python线性回归算法——自变量x与输出变量y存在线下关系时

    目录

    python线性回归算法——自变量x与输出变量y存在线下关系时

    用途范围:线下相关的数据进行分析预测时候

    核心公式​

     python代码实现

    拟合效果

     


    用途范围:线下相关的数据进行分析预测时候

    一元线性拟合 y=a+bx,根据最小二乘法有

    其中a、b通过最小二乘法求得为: 

    核心公式

                                                                     
         python代码实现
     


    #!/usr/bin/python
    #coding=utf-8
    import matplotlib.pyplot as plt
    import numpy as np
    import math
    #使用以后的数据集进行线性回归(这里是波士顿房价数据)
    loaded_data=datasets.load_boston()
    data_X=[1,2,3,4,5,6,7,8,9,10]
    data_y=[1.3,3.5,4.2,5.0,7.0,8.8,10.1,12.5,13.0,15.6]
    print('datax:',data_X)

    #画散点图
    fig=plt.figure()
    ax1 = fig.add_subplot(111)#设置标题
    ax1.set_title('line ')#设置X轴标签
    plt.xlabel('X')#设置Y轴标签
    plt.ylabel('Y')
    x=np.array(data_X)
    y=np.array(data_y)
    print('x:',x)
    print('y:',y)

    plt.legend('x1')#设置图标

    #线性拟合
    x_avage=sum(x)/len(x)
    y_avage=sum(y)/len(y)
    print("x平均是:",x_avage," y平均是:",y_avage)
    def sub(ava1,ava2,list1,list2):
        c1=ava1-list1
        c2=ava2-list2
        c=sum(c1*c2)
        print("c1 * c2 =c", c1, c2,c)
        return c

    def sub_x(num1,ava1):
        c=num1-ava1
        print("c=",c)
        print("c{}=",c)
        return sum(pow(c,2))

    fenzi=sub(x_avage,y_avage,x,y)
    fenmu=sub_x(x,x_avage)
    a=fenzi/fenmu
    b=y_avage-a*x_avage

    print("x平均是:",x_avage," y平均是:",y_avage,"fenzi=",fenzi,"fenmu=",fenmu)
    print("a=",a," b=:",b)

    ax1.scatter(x,y,c = 'm',marker = '.')
    plt.plot([0,10],[0*a+b,10*a+b])
    plt.show()


    拟合效果











     

     

     

    展开全文
  • python线性回归示例

    2017-12-09 20:38:48
    下面给出sklearn 库线性回归示例# coding:utf-8import matplotlib.pyplot as plt import seaborn as sns import numpy as np from sklearn.linear_model import LinearRegression sns.set() def get_data(): rng = ...

    下面给出sklearn 库线性回归示例

    这里写图片描述

    # coding:utf-8
    
    import matplotlib.pyplot as plt
    import seaborn as sns
    import numpy as np
    from sklearn.linear_model import LinearRegression
    sns.set()
    
    
    def get_data():
        rng = np.random.RandomState(1)
        x = 10 * rng.rand(50)
        y = 2 * x - 5 + rng.randn(50)
        # plt.scatter(x, y)
        # plt.show()
        return x, y
    
    
    def lr_fit():
        x, y = get_data()
        model = LinearRegression(fit_intercept=True)
        model.fit(x[:, np.newaxis], y)
        xfit = np.linspace(0, 10, 1000)
        yfit = model.predict(xfit[:, np.newaxis])
    
        print "Model slope: ", model.coef_[0]
        print "Model intercept:", model.intercept_
    
        plt.scatter(x, y)
        plt.plot(xfit, yfit)
        plt.show()
    
    if __name__ == '__main__':
        lr_fit()
        # get_data()
        pass
    

    参考:

    1. Python Data Science Handbook
    展开全文
  • python 线性回归示例

    万次阅读 2017-03-12 12:27:12
    python进行线性回归分析非常方便,有现成的库可以使用比如:numpy.linalog.lstsq例子、scipy.stats.linregress例子、pandas.ols例子等。 不过本文使用sklearn库的linear_model.LinearRegression,支持任意维度...
  • python 线性回归求系数

    2018-09-13 17:52:27
    python求系数,包含矩阵如何转置,求逆以及点乘积,直接运行即可,如果数据大,则读文件即可
  • 1.什么是线性回归 2.简单线性回归 3.多元线性回归一:什么是线性回归 线性回归,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x...
  • 因为公司做科学计算以及统计分析,用到了,所以记录一下 其中多项式系数 f是三个参数,也可以一个一个的获取,根据需求不同进行变换
  • Python 线性回归分析之岭回归

    千次阅读 2018-08-20 16:45:20
     当使用最小二乘法计算线性回归模型参数的时候,如果数据集合矩阵存在多重共线性(数学上称为病态矩阵),那么最小二乘法对输入变量中的噪声非常的敏感,如果输入变量x有一个微小的变动,其反应在输出结果上也会变...
  • python线性回归ax+b

    2020-03-28 10:15:50
    1.线性回归 线性回归是最简单的回归方式,是其他回归的基础。 线性回归涉及到线性方程,设每天销售X轴,收益为Y轴,取N天的数据。 二维图片为: 线性回归是拟合一条合理的直线,实现对收益Y的预测。 线性回归...
  • python线性回归预测股票走势

    千次阅读 2020-05-27 15:22:40
    提前说明:虽然最后预测股价和真实价之间有差距,但涨跌的趋势大致相同。而且在预测时没有考虑到涨跌停的因素,所以预测结果的涨跌幅度比真实数据要大。...#线性回归 from sklearn.linear_model import LinearR.
  • python 线性回归 预测数据

    千次阅读 2017-11-05 23:46:27
    忙碌的一周将至尾声本周尝试线性回归预测房价 假设方程式 y=kx+b 数据集: 代码如下:import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn import datasets,linear_model def...
  • spark python 线性回归

    2016-01-01 16:58:13
    最近在使用spark机器学习mllib库中的线性回归做一些预测,在使用遇到了一些问题以及解决办法: 使用数据的特点,十二个属性,且每个属性值都是整数,范围在(0-30)结果值在(0-500)之间; 问题:使用该数据直接...
  • 回归分析五个假设 部分检验的python实现 线性回归诊断 自相关性检验: Durbin-Watson statistics from sklearn.linear_model import LinearRegression from statsmodels.stats.stattools import durbin_watson lr = ...
  • python 线性回归预测示例

    千次阅读 2018-09-27 14:03:46
    regr = LinearRegression() #线性回归 #regr = Ridge(alpha=10) #岭回归 #regr = Lasso(alpha=0.001) #Lasso回归 regr.fit(data.values,label.values) Y_pred_train = regr.predict(data.values) #训练集的预测...
  • Python 线性回归分析以及评价指标

    万次阅读 2018-08-20 10:20:46
    # 利用 diabetes数据集来学习线性回归 # diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况。 # 数据集中的特征值总共10项, 如下: # 年龄 # 性别 #体质指数 ...
  • 在UCL机器学习数据库里一个糖尿病数据集,通过这一数据集,学习如何利用线性回归分析来预测糖尿病: 数据地址:https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/di...
  • 建立完回归模型后,还需要验证咱们建立的模型是否合适,换句话说,就是咱们建立的模型是否真的能代表现有的因变量与自变量关系,这个验证标准一般就选用拟合优度。 拟合优度是指回归方程对观测值的拟合程度。度量...
  • python线性回归 多因子模型选股思路

    千次阅读 2020-03-27 16:39:05
    但可以根据他们的线性关系进行选择,回归直线上的点可以视为合理的PB、ROE组合水平,这样位于回归线下方的股票都是PB被低估的,未来有很大的上升修复空间,而位于回归线上方的股票都是当前PB被高估的,未来会下降...
  • Python线性回归实现房价预测

    千次阅读 2018-03-28 16:27:05
    #选择线性回归模型 model.fit(data_X,data_y) #进行模型的训练 print(model.predict(data_X[: 4 ,:])) #预测值 print(data_y[: 4 ]) #真实值 stop = time() print( '程序的的运行时间:' + str (stop-start)+ '...
  • Python sklearn中的LinearRegreesion实例
  • python线性回归欠拟合与过拟合处理

    千次阅读 2018-11-21 10:52:05
    线性回归欠拟合与过拟合的情况再实际业务中会非常普遍,这时我们需要用到多项式特征的线性回归来逼近非线性函数。如下图我们看degree不同角度下的拟合情况:当角度为1的时候(高斯分布的线性回归)出现欠拟合的情况...
  • 今天学习了简单的线性回归,用波士顿房价的例子测试了一下 import pandas as pd import numpy as np from sklearn import datasets import matplotlib.pyplot as plt from sklearn.linear_model import Linear...
  • python 线性回归数据分析画图小练习

    千次阅读 2018-04-18 15:32:49
    import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression # 读取数据 data = pd.read_csv('Advertising....
  • 建立完回归模型后,还需要验证咱们建立的模型是否合适,换句话说,就是咱们建立的模型是否真的能代表现有的因变量与自变量关系,这个验证标准一般就选用拟合优度。 拟合优度是指回归方程对观测值的拟合程度。度量...
  • reg.fit(x_train_poly, y_train)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,446
精华内容 26,178
关键字:

python线性回归

python 订阅