zoukankan      html  css  js  c++  java
  • Python线性回归算法【解析解,sklearn机器学习库】

    一.概述

      参考博客:https://www.cnblogs.com/yszd/p/8529704.html

    二.代码实现【解析解】

     1 import numpy as np
     2 import matplotlib.pyplot as plt
     3 
     4 __author__ = 'zhen'
     5 
     6 # 这里相当于是随机X维度X1,rand是随机均匀分布
     7 X = 2 * np.random.rand(100, 1)
     8 # 人为的设置真实的Y一列,np.random.randn(100, 1)是设置error,randn是标准正太分布
     9 y = 3 + 6 * X + np.random.randn(100, 1)
    10 # 整合X0和X1
    11 X_b = np.c_[np.ones((100, 1)), X] #combine聚合两数据集
    12 # print(X_b)
    13 
    14 # 常规等式求解theta
    15 # invert
    16 theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
    17 print(theta_best)
    18 
    19 # 创建测试集里面的X1
    20 X_new = np.array([[0], [2]]) 
    21 X_new_b = np.c_[(np.ones((2, 1))), X_new]
    22 print(X_new_b)
    23 y_predict = X_new_b.dot(theta_best)
    24 print(y_predict)
    25 
    26 plt.plot(X_new, y_predict, 'r-')
    27 plt.plot(X, y, 'b.')
    28 plt.axis([0, 2, 0, 15])
    29 plt.show()

    三.结果【解析解】

       

      可视化:

      

     四.代码实现【sklearn机器学习库】

     1 import numpy as np
     2 import matplotlib.pyplot as plt
     3 from sklearn.linear_model import LinearRegression
     4 
     5 __author__ = 'zhen'
     6 
     7 X = 2 * np.random.rand(100, 1)
     8 y = 3 + 6 * X + np.random.randn(100, 1)
     9 
    10 lin_reg = LinearRegression()
    11 lin_reg.fit(X, y)
    12 print(lin_reg.intercept_, lin_reg.coef_)
    13 
    14 X_new = np.array([[0], [2]])
    15 y_predict = lin_reg.predict(X_new)
    16 print(y_predict)
    17 
    18 # 可视化
    19 plt.plot(X_new, y_predict, 'r-')
    20 plt.plot(X, y, 'b.')
    21 plt.axis([0, 2, 0, 15])
    22 plt.show()

    五.结果【sklearn机器学习库】

       

       可视化:

      

     六.总结

      根据图示可以得出结论,使用解析解或者是sklearn机器学习库都可以得到大致的结论,所花费时间和达到的效率都比较类似。但这仅限于一元线性回归,当参数类别增加时,使用解析解会大大增加程序复杂程度和计算耗能,因此建议多使用sklearn库,并根据情况进行参数配置和优化。

  • 相关阅读:
    [haoi2015]T1
    [haoi2014]走出金字塔
    [haoi2014]穿越封锁线
    [haoi2014]遥感监测
    [haoi2012]高速公路
    [haoi2012]容易题
    [haoi2008]排名系统
    【bzoj1014】[JSOI2008]火星人prefix
    0916解题报告
    生成树计数问题
  • 原文地址:https://www.cnblogs.com/yszd/p/9167291.html
Copyright © 2011-2022 走看看