Coursera 吴恩达《神经网络与深度学习》第三周编程作业

# Package imports
import numpy as np
import matplotlib.pyplot as plt
from testCases import *
import sklearn
import sklearn.datasets
import sklearn.linear_model
from planar_utils import plot_decision_boundary, sigmoid, load_planar_dataset, load_extra_datasets

%matplotlib inline

#seed( ) 用于指定随机数生成时所用算法开始的整数值。 
    #1.如果使用相同的seed( )值,则每次生成的随即数都相同; 
    #2.如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。 
    #3.设置的seed()值仅一次有效
np.random.seed(1) # set a seed so that the results are consistent设置一个统一的随机数

X, Y = load_planar_dataset() #X:np.zeros((m,D))。Y:labels vector (0 for red, 1 for blue)

下面是调用的下载数据集的函数load_planar_dataset():

def load_planar_dataset():
    np.random.seed(1)#seed( ) 用于指定随机数生成时所用算法开始的整数值。 
                        #1.如果使用相同的seed( )值,则每次生成的随即数都相同; 
                        #2.如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。 
                        #3.设置的seed()值仅一次有效
    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#初始化X 
    Y = np.zeros((m,1), dtype='uint8') # labels vector (0 for red, 1 for blue)#初始化Y
    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#角度
        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)]
        Y[ix] = j
        
    X = X.T
    Y = Y.T

    return X, Y

原来的代码有一些小问题,运行报错。主要是因为plt.scatter(),(对该函数不了解的同学可以点进去看看),主要报错就是在c参数的赋值。

若我们对下载数据的Y值和shape进行打印,则可以看到以下结果:可以看出Y是一个二维数组,是1行400列。我们需要的是Y的具体的每一个0/1的值,可以看出它是处于Y.shape[1]中的400个值。

我们可以通过squeeze函数:从数组的shape中删除单维度条目,即把shape中为1的维度去掉。

# Visualize(可视化) the data:
#print(Y)
#print(Y.shape)
a = np.squeeze(Y)
print(a.shape) #(400,)
plt.scatter(X[0,:],X[1,:],c=np.squeeze(Y),s=40,cmap=plt.cm.Spectral)
#plt.scatter(X[0, :], X[1, :], c=Y, s=40, cmap=plt.cm.Spectral);#X[0, :], X[1, :]是输入数据,c是色彩或颜色序列 y的值是0或者1((0 for red, 1 for blue))

参考博文:

https://blog.csdn.net/m0_37393514/article/details/81298503

https://blog.csdn.net/tracy_leaf/article/details/79297121

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值