线性回归 quickstart

构建一元一次方程

100个(X, y ),大概是'y=3x+4'

python 复制代码
import numpy as np

np.random.seed(42)  # to make this code example reproducible
m = 100  # number of instances
X = 2 * np.random.rand(m, 1)  # column vector
y = 4 + 3 * X + np.random.randn(m, 1)  # column vector

将坐标可视化

python 复制代码
import matplotlib.pyplot as plt

plt.figure(figsize=(6, 4))
plt.scatter(X, y, c='b', label='Data points')
plt.xlabel("x")
plt.ylabel("y")
plt.axis([0, 2, 0, 15])
plt.grid()
plt.legend()
plt.show()

根据坐标数据,推出函数

矩阵计算,怎么计算的不用管,只需要知道根据坐标就可以计算得出

python 复制代码
from sklearn.preprocessing import add_dummy_feature

X_b = add_dummy_feature(X)  # add x0 = 1 to each instance
theta_best = np.linalg.inv(X_b.T @ X_b) @ X_b.T @ y

输出

这里有两个参数,对应y=ax+b中的a,b,现在只需要根据横坐标的起始结束0,2就可以画出线性

也是通过上述的矩阵计算

python 复制代码
X_new = np.array([[0], [2]])
X_new_b = add_dummy_feature(X_new)  # add x0 = 1 to each instance
y_predict = X_new_b @ theta_best
y_predict

输出

也就是,我们得到两个坐标,(0, 4.21509616),(2, 9.75532293),根据这两个点,我们就可以画出一条线

python 复制代码
import matplotlib.pyplot as plt

plt.figure(figsize=(6, 4))

plt.plot(X_new, y_predict, "r-")
plt.plot(X, y, "b.")

plt.xlabel("x")
plt.ylabel("y")
plt.axis([0, 2, 0, 15])
plt.grid()
plt.show()

图中红色的线就是我们根据数据推出来的,也就是通过数据学习到的,然后可以根据红色的线,我们就可以去预测其他的数据了,这就是我们机器学习的过程

简化流程,得到参数ab

直接使用sklearn提供的LinearRegression模型,输入数据就可以得到参数了

python 复制代码
from sklearn.linear_model import LinearRegression

lin_reg = LinearRegression()
lin_reg.fit(X, y)
lin_reg.intercept_, lin_reg.coef_

输出

再跟进起始结束,就可以画出线了

python 复制代码
X_new = np.array([[0], [2]])
lin_reg.predict(X_new)

y_predict = lin_reg.predict(X_new)
y_predict

画图

python 复制代码
import matplotlib.pyplot as plt

plt.figure(figsize=(6, 4))

plt.plot(X_new, y_predict, "r-")
plt.plot(X, y, "b.")

plt.xlabel("x")
plt.ylabel("y")
plt.axis([0, 2, 0, 15])
plt.grid()
plt.show()

到这里,已经完成了入门

相关推荐
Code哈哈笑6 分钟前
【机器学习】支持向量回归(SVR)从入门到实战:原理、实现与优化指南
人工智能·算法·机器学习·回归·svm
拓端研究室TRL7 分钟前
Python与MySQL网站排名数据分析及多层感知机MLP、机器学习优化策略和地理可视化应用|附AI智能体数据代码
人工智能·python·mysql·机器学习·数据分析
努力学习的小廉17 分钟前
【C++】 —— 笔试刷题day_29
开发语言·c++·算法
小羊在奋斗18 分钟前
【LeetCode 热题 100】搜索插入位置 / 搜索旋转排序数组 / 寻找旋转排序数组中的最小值
算法·leetcode·职场和发展
meisongqing24 分钟前
【软件工程】符号执行与约束求解缺陷检测方法
人工智能·算法·软件工程·软件缺陷
莫叫石榴姐1 小时前
如何为大模型编写优雅且高效的提示词?
人工智能·算法
Echo``2 小时前
1:OpenCV—图像基础
c++·图像处理·人工智能·opencv·算法·计算机视觉·视觉检测
COOCC13 小时前
激活函数全解析:定义、分类与 17 种常用函数详解
人工智能·深度学习·神经网络·算法·机器学习·计算机视觉·自然语言处理
林下清风~3 小时前
力扣hot100——347.前K个高频元素(cpp手撕堆)
算法·leetcode·职场和发展
吹风看太阳3 小时前
机器学习08-损失函数
人工智能·机器学习