用Numpy实现机器学习任务(一个很简单的小例子)

# 一个最简单的机器学习例子
import numpy as np
import matplotlib.pyplot as plt

# 生成数据
np.random.seed(100)     # 设置随机数种子,保证每次随机生成同一份数据
x = np.linspace(-1, 1, 100).reshape(100, 1)
y = 3 * np.power(x, 2) + 2 + 0.2 * np.random.rand(x.size).reshape(100, 1)

# 查看数据的分布情况
plt.scatter(x, y)
plt.show()

# 随机初始化参数
w1 = np.random.rand(1, 1)
b1 = np.random.rand(1, 1)

# 训练模型
lr = 0.001     # 学习率
for i in range(800):        # 设置迭代次数,没有设置预测精确度阈值
    # 前向传播
    y_pred = np.power(x, 2) * w1 + b1
    # 定义损失函数
    loss = 0.5 * (y_pred - y) ** 2
    loss = loss.sum()       # 累和
    #计算梯度
    grad_w = np.sum((y_pred - y) * np.power(x, 2))
    grad_b = np.sum((y_pred - y))
    # 使用梯度下降法,是loss最小
    w1 -= lr * grad_w
    b1 -= lr * grad_b

# 可视化结果
plt.plot(x, y_pred, 'r-', label='predict')
plt.scatter(x, y, color='blue', marker='o', label='true')   # true data
plt.xlim(-1, 1)
plt.ylim(2, 6)
plt.legend()
plt.show()
print(w1, b1)


猜你喜欢

转载自blog.csdn.net/sdjklghiof/article/details/129184484
今日推荐