deeplearning.ai——通过单隐藏层的神经网络实现平面数据分类

本篇博客探讨了如何运用单隐藏层的神经网络进行平面数据的二分类任务。内容涵盖神经网络模型的构建,包括定义网络结构、初始化参数、前向传播、反向传播及参数更新。通过对比逻辑斯蒂回归,展示了神经网络在处理非线性可分数据上的优势,并通过调整隐藏层大小观察模型性能变化。
摘要由CSDN通过智能技术生成

Planar data classification with one hidden layer

目录

Planar data classification with one hidden layer

1 - Packages

2 - Dataset

3 - Simple Logistic Regression

4 - Neural Network model

4.1 - Defining the neural network structure

4.2 - Initialize the model's parameters

4.3 - The Loop

4.4 - Integrate parts 4.1, 4.2 and 4.3 in nn_model()

4.5 Predictions

4.6 - Tuning hidden layer size (optional/ungraded exercise)


这节作业会学到:

  • 实现具有单个隐藏层的二分类神经网络
  • 使用非线性激活函数,例如tanh
  • 计算交叉熵损失
  • 实现前向和反向传播

 

1 - Packages

首先,运行下面的单元来导入在这个作业中需要的所有包:

  • numpy是使用python进行科学计算的基础包。
  • sklearn为数据挖掘和数据分析提供了简单有效的工具。
  • Matplotlib是一个用于在Python中绘制图形的库。
  • testCases提供了一些测试用例来评估函数的正确性。
  • planar_utils提供了本任务中使用的各种有用的函数。
# 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
from functools import reduce
import operator

%matplotlib inline

np.random.seed(1) # set a seed so that the results are consistent

 

2 - Dataset

首先,获取将要使用的数据集,下面的代码会加载一个“flower”二分类的数据集,并得到变量X和Y。

X, Y = load_planar_dataset() 

利用matplotlib可视化数据,当把标签为0的点涂红,把标签为1的点涂蓝,该数据看起来像一朵花,本任务就是构造一个模型来拟合这个数据。

# Visualize the data:
plt.scatter(X[0, :], X[1, :], c=Y.reshape(-1,), s=40, cmap=plt.cm.Spectral);

拥有的数据:

  • 一个numpy数组(矩阵)X,包含了特征(x1, x2)
  • 一个numpy数组(向量)Y,包含了标签(red:0, blue:1)

练习:你有多少个训练样本?X和Y的形状是什么样的?

### START CODE HERE ### (≈ 3 lines of code)
shape_X = X.shape
shape_Y = Y.shape
m = shape_X[1]  # training set size
### END CODE HERE ###

print ('The shape of X is: ' + str(shape_X))
print ('The shape of Y is: ' + str(shape_Y))
print ('I have m = %d training examples!' % (m))
The shape of X is: (2, 400)
The shape of Y is: (1, 400)
I have m = 400 training examples!

 

3 - Simple Logistic Regression

在构造一个完整的神经网络之前,我们先来看看逻辑斯蒂回归在这个问题上面表现如何,可以使用sklearn的内置函数来完成。

# Train the logistic regression classifier
clf = sklearn.linear_model.LogisticRegressionCV();
clf.fit(X.T, Y.T.reshape(-1,));

现在可以画出这个模型的决策边界:

# Plot the decision boundary for logistic regression
plot_decision_boundary(lambda x: clf.predict(x), X, Y.reshape(-1,))
plt.title("Logistic Regression")

# Print accuracy
LR_predictions = clf.predict(X.T)
print ('Accuracy of logistic regression: %d ' % float((np.dot(Y,LR_predictions) + np.dot(1-Y,1-LR_predictions))/float(Y.size)*100) +
       '% ' + "(percentage of correctly labelled datapoints)")
Accuracy of logistic regression: 47 % (percentage of correctly labelled datapoints)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值