【数据集的处理】
import numpy as np
import matplotlib.pyplot as plt
m = 400 # number of examples
N = int(m / 2) # number of points per class
D = 2 # dimensionality
X = np.zeros((m,D)) # data matrix where each row is a single example 400*2
Y = np.zeros((m,1), dtype='uint8') # labels vector (0 for red, 1 for blue) uint8 无符号整数 400*1
a = 4 # maximum ray of the flower
for j in range(2):
ix = range(N * j, N * (j + 1))
t = np.linspace(j * 3.12, (j + 1) * 3.12, N) + np.random.randn(N) * 0.2 # theta
#numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的
r = a * np.sin(4 * t) + np.random.randn(N) * 0.2 # radius
X[ix] = np.c_[r * np.sin(t), r * np.cos(t)] #rsint rcost 对应坐标
Y[ix] = j
X = X.T # x 2*400
Y = Y.T # 一半red 一半blue 1*400
plt.scatter(X[0, :], X[1, :], c=Y, s=40, cmap=plt.cm.Spectral) #绘制散点图
# c=Y Y存放标签
# s=40 点的大小
# cmap = plt.cm.Spectral实现的功能是给label为1的点一种颜色,给label为0的点另一种颜色。
plt.show()
【加载数据】
X, Y = load_planar_dataset()
costs = [] # 用于绘制成本函数
【神经网络】
搭建模型
引用:搭建神经网络模型
【定义结构】
# 定义神经网络的结构
def layer_sizes(X, Y):
"""
参数:
X - 输入数据集,维度为(输入的数量,训练/测试的数量) 2*400
Y - 标签,维度为(输出的数量,训练/测试数量) 1*400
返回:
n_x - 输入层的数量
n_h - 隐藏层的数量
n_y - 输出层的数量
"""
n_x = X.shape[0] # 输入层
n_h = 4 # ,隐藏层,硬编码为4
n_y = Y.shape