zoukankan      html  css  js  c++  java
  • Python实现基于最小二乘法的线性回归

    下面展示利用Python实现基于最小二乘法的线性回归模型,同时不需要引入其他科学计算以及机器学习的库。

    利用Python代码表示如下:
     
    #首先引入数据集x,和y的值的大小利用Python的数据结构:列表,来实现。
     
    y=[4,8,13,35,34,67,78,89,100,101]
     
    x=[0,1,2,3,4,5,6,7,8,9]
     
    #然后再引入Python当中的绘图库,用于检测我们利用线性回归得到的结果是否正确
     
    from matplotlib.font_manager import FontProperties
     
    font = FontProperties(fname=r"c:windowsfontsmsyh.ttc", size=15)
     
    import matplotlib.pyplot as plt
     
    k = 0
     
    for i in range(10):
     
        j = k
     
        k = j+i**2
     
        print(k)
     
        print(i)#实现计算x的平方
     
    a11 = k
     
    k=0
     
    print(" ")#换行,使我们的结果更加清晰
     
    for i in range(10):
     
        #实现计算X的求和
     
        j = k
     
        k = j+i
     
        print(k)
     
    a12 = k
     
    #下面开始计算y*x的求和
     
    k=0
     
    for i in range(10):
     
        j = k
     
        k = j+y[i]*i
     
        print("我们k的大小是{}".format(k))
     
    yixi = k
     
    b1 = yixi
     
    #现在再来计算我们yi求和后的大小
     
     
     
    k=0
     
    for i in range(10):
     
       j = k
     
       k = j+y[i]
     
       print(k)
     
    yi = k
     
    b2 = yi
     
    #计算完毕,现在根据求出偏导数后的值计算我们斜率和截距的大小
     
    #根据题意可得到:
     
    a22 = 10
     
    a21 = a12
     
    #因此根据线性代数的克拉默法则,我们可以将其写成一个二阶行列式的形式:
     
    print("现在开始打印行列式的各个值:")
     
    print(a11)
     
    print(a12)
     
    print(a21)
     
    print(a22)#检查无误后开始用克拉默法则进行计算
     
     
     
    k = (b1*a22-a12*b2)/(a11*a22-a12*a21)
     
    b = (a11*b2-a21*b1)/(a11*a22-a12*a21)
     
    print(" ")
     
    print("K的大小是:{}".format(k))
     
    print("b的大小是:{}".format(b))
     
    plt.scatter(x,y)
     
    plt.title("利用最小二乘法实现线性单元回归 制作人:Geeksongs",fontproperties=font)
     
    plt.plot([0,12],[(a11*b2-a21*b1)/(a11*a22-a12*a21),((b1*a22-a12*b2)/(a11*a22-a12*a21))*12+b],linewidth=3,color="black")
     
    plt.show()
     

    得解。 

  • 相关阅读:
    oralce数据库创建同义词
    Oracle数据库最小脚本
    oracle数据库SQL收集整理
    文件各种上传,离不开的表单
    Apache OFBiz 研究记录01
    无IDE时编译和运行Java
    解决VM虚拟机MAC OS X 10.10.x的卡顿问题
    在java项目中使用AES256 CBC加密
    Spring4 与 Hibernate4 整合过程中的问题记录
    WIZnet官方网盘
  • 原文地址:https://www.cnblogs.com/geeksongs/p/10602630.html
Copyright © 2011-2022 走看看