一.概述

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

二.代码实现【解析解】

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

三.结果【解析解】

  

  可视化:

  

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

 import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression __author__ = 'zhen' X = 2 * np.random.rand(100, 1)
y = 3 + 6 * X + np.random.randn(100, 1) lin_reg = LinearRegression()
lin_reg.fit(X, y)
print(lin_reg.intercept_, lin_reg.coef_) X_new = np.array([[0], [2]])
y_predict = lin_reg.predict(X_new)
print(y_predict) # 可视化
plt.plot(X_new, y_predict, 'r-')
plt.plot(X, y, 'b.')
plt.axis([0, 2, 0, 15])
plt.show()

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

  

  可视化:

  

六.总结

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

最新文章

  1. IOS-一步一步教你自定义评分星级条RatingBar ——转载的
  2. C语言 给字符数组赋值的方法
  3. WampServer 在 httpd.conf 中配置多站点 (IP 配置法:不用每次修改 hosts 文件 + 域名配置法 )
  4. codevs 1228 苹果树
  5. Google stuff
  6. 严重: Exception starting filter struts2
  7. nyoj 623
  8. ssh公钥自动登陆
  9. Linux06--Shell程序设计02 数据流重定向与管道
  10. hdu1513 (滚动数据压缩空间)
  11. 终端中出现While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod错误的修改方法
  12. 容器扩展属性 IExtenderProvider 实现WinForm通用数据验证组件
  13. AsyncTask用法解析-下载文件动态更新进度条
  14. [论文阅读]VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION(VGGNet)
  15. 3.MySQL(三)
  16. 到底什么时候该使用MQ?
  17. STM32 HAL库的使用心得
  18. jvm的基本结构以及各部分详解(转)
  19. dojo Datagrid 实现数据删除功能
  20. 【Scheme】符号求导

热门文章

  1. axios与ajax的区别及中文用户指南
  2. semi-join子查询优化 -- FirstMatch策略
  3. springMvc将对象json返回时自动忽略掉对象中的特定属性的注解方式
  4. ThinkPHP 控制器不存在问题排查
  5. Linux_CentOS下搭建Nodejs 生产环境-以及nodejs进程管理器pm2的使用
  6. js 经常用于条件判断 大于等于0 的正整数
  7. Laya的Tween缓动没有初始化repeat导致的Bug
  8. mybatis对实体的引用必须以 ';' 分隔符结尾
  9. K8S+GitLab+.net core-自动化分布式部署-2
  10. 对get post等http请求方式的理解