博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用线性回归推导函数实现线性回归
阅读量:6074 次
发布时间:2019-06-20

本文共 994 字,大约阅读时间需要 3 分钟。

import numpy as np  # 导入科学技术框架

import matplotlib.pyplot as plt  # 导入画图工具

# 随机生成100个数据[0, 3)之间,rand是随机均匀分布[0, 1)
x = 3 * np.random.rand(100, 1)
# 生成y值
y = 3 + 4 * x + np.random.rand(100, 1)
# 整合x0和x1
# ones:创建任意维度和元素个数的数组,其元素值均为1,ones([100, 1])表示生成10行1列的二维数组
# c_:将切片对象沿第二轴(按列)转换为连接,与scala中的zip类似
x_b = np.c_[np.ones([100, 1]), x]
# print(x_b)
# 使用线性回归推导函数求解theta
# T:转置
# dot:矩阵乘或数组点积
# np.linalg.inv:逆矩阵
theta_best = np.linalg.inv(x_b.T.dot(x_b)).dot(x_b.T).dot(y)  # 线性回归推倒函数
print("the best compare analyse result:\n{}".format(theta_best))

# 创建测试集x=0, 2
x_new = np.array([[0], [2]])
x_new_b = np.c_[(np.ones((2, 1))), x_new]
print("the test data is:\n{}".format(x_new_b))
# 进行预测:x=0时y应该等于3,x=2时y应该等于11
y_predict = x_new_b.dot(theta_best)
print("the predict result is:\n{}".format(y_predict))
# 可视化展示
plt.plot(x_new, y_predict, "r-")  # 预测的线性回归直线
plt.plot(x, y, "b.")  # 生成的数据打点
plt.axis([0, 2, 0, 15])  # x,y轴设定,x:0~2,y:0~15
plt.show()  # 显示

结果:

 

可视化:

 

 

转载于:https://www.cnblogs.com/yszd/p/9167291.html

你可能感兴趣的文章
促进大会上的交流
查看>>
SRE系列教程 | 基于时间序列数据的监控实践
查看>>
WIFI 万能钥匙万玉权:团队之中要有跨三界之外的“闲人”
查看>>
Android -- 加载大图片的方法
查看>>
Blend 3状态为空的解决方法
查看>>
什么样的企业可以称之为初创企业?
查看>>
安全厂商间真的能“数据共享,协同合作”吗
查看>>
那些优秀程序员身上的共同特质
查看>>
Python爬虫之BeautifulSoup
查看>>
《HTML 5与CSS 3权威指南(第3版·下册)》——第20章 使用选择器在页面中插入内容...
查看>>
空中鼠标算法原理讨论
查看>>
UITableView整理
查看>>
Akka笔记之Actor简介
查看>>
Android 使用SystemBarTint设置状态栏颜色
查看>>
GreenPlum vs MonetDB case
查看>>
JVM源码分析之SystemGC完全解读
查看>>
盘点 PHP 和 ASP.NET 的10大对比!
查看>>
Systemtap examples, Identifying Contended User-Space Locks
查看>>
PostgreSQL Daily Maintenance - cluster table
查看>>
Problem8
查看>>