吴恩达机器学习笔记(2-1到2-7)

import matplotlib.pyplot as plt
import numpy as np



# 生成随机的 x 数据,范围在 0 到 10 之间,共 100 个点
np.random.seed(42)  # 设置随机种子以确保结果可重复
x = np.random.uniform(0, 1, 100)
# 生成符合 y = 2x + 2 的 y 数据,加上一定的噪声
true_a = 2.0  # 设定真实的斜率 a
true_b = 2.0  # 设定真实的截距 b
# noise = np.random.normal(0, 1, 100)  # 添加较小的随机噪声
# y = true_a * x + true_b + noise
# 去除噪声效果更明显
y = true_a * x + true_b + 0

# 绘制数据点的散点图
plt.figure(figsize=(10, 7))
plt.scatter(x, y, color='blue', label='Data points')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Scatter plot of data points')
plt.legend()
plt.show()



# 定义 t =  sum((a * x_i + b - y_i)^2) 的函数并绘制 3D 图
A = np.linspace(1, 3, 200)  # 定义 a 参数的范围
B = np.linspace(1, 3, 200)  # 定义 b 参数的范围
A_mesh, B_mesh = np.meshgrid(A, B)
# 计算 T 值
T = np.zeros_like(A_mesh)
for i in range(len(x)):
    T +=  ((A_mesh * x[i] + B_mesh - y[i])**2)



# 创建 3D 图
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')
# 绘制等高线
ax.contour(A_mesh, B_mesh, T, levels=[0, 0.1, 1, 4, 7], colors=['black'], linewidths=1, linestyles='solid', zorder=10)
# 绘制曲面
ax.plot_surface(A_mesh, B_mesh, T, cmap='viridis', zorder=1)
# 设置坐标轴标签
ax.set_xlabel('a')
ax.set_ylabel('b')
ax.set_zlabel('T')

plt.title('3D plot of T(a, b)')
plt.show()
posted @ 2024-10-13 23:47  麦块程序猿  阅读(21)  评论(0编辑  收藏  举报