头歌——机器、深度学习——手写体识别

第1关:神经网络基本概念

任务描述

本关任务:根据本节课所学知识完成本关所设置的选择题。

相关知识

为了完成本关任务,你需要掌握:1.神经网络基本概念。

神经网络基本概念
  • 神经网络由输入层、隐藏层、输出层组成;

  • 层与层之间的神经元有连接,而层内之间的神经元没有连接。连接的神经元都有对应的权重;

  • 最左边的层叫做输入层,这层负责接收输入数据;

  • 最右边的层叫输出层,我们可以从这层获取神经网络输出数据;

  • 输入层和输出层之间的层叫做隐藏层。

  • 表示相邻两层不同神经元连接的强度叫权重。如果神经元1到神经元2有较大的值,则意味着神经元1对神经元2有较大影响。权重减小了输入值的重要性,对于接近于0的权重,输入的改变不会影响输出的变化;负权重意味着,增加输入而输出会减小。权重决定了输入对输出影响的大小。

上图中的网络一共由3层神经元组成,但实质上只有2层权重,因此我们通常将输入层当做第0层网络,上图我们称其为2层网络(根据输入层、隐藏层、输出层的总数减去1后的数量来命名网络)。

编程要求

请仔细阅读题目,结合相关知识,完成本关的选择题任务。

测试说明

平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver

第1关任务——选择题

上图中的神经网络一共有多少个权重?   (C)

A、8

B、12

C、20

D、24

第2关:激活函数

任务描述

本关任务:使用sklearn完成新闻文本主题分类任务。

相关知识

为了完成本关任务,你需要掌握如何使用sklearn提供的MultinomialNB类与文本向量化。

数据简介

本关使用的是20newsgroups数据集,20newsgroups数据集是用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。数据集收集了18846篇新闻组文档,均匀分为20个不同主题(比如电脑硬件、中东等主题)的新闻组集合。

部分数据如下:

  • From: Mamatha Devineni Ratnam <mr47+@andrew.cmu.edu>
  • Subject: Pens fans reactions
  • Organization: Post Office, Carnegie Mellon, Pittsburgh, PA
  • Lines: 12
  • NNTP-Posting-Host: po4.andrew.cmu.edu
  • I am sure some bashers of Pens fans are pretty confused about the lack
  • of any kind of posts about the recent Pens massacre of the Devils. Actually,
  • I am bit puzzled too and a bit relieved. However, I am going to put an end
  • to non-PIttsburghers relief with a bit of praise for the Pens. Man, they
  • are killing those Devils worse than I thought. Jagr just showed you why
  • he is much better than his regular season stats. He is also a lot
  • fo fun to watch in the playoffs. Bowman should let JAgr have a lot of
  • fun in the next couple of games since the Pens are going to beat the pulp out of Jersey anyway. I was very disappointed not to see the Islanders lose the final
  • regular season game. PENS RULE!!!

其中新闻文本对应的主题标签,已经用0-1920个数字表示。

文本向量化

由于数据集中每一条数据都是很长的一个字符串,所以我们需要对数据进行向量化的处理。例如,I have a apple! I have a pen!可能需要将该字符串转换成向量如[10, 7, 0, 1, 2, 6, 22, 100, 8, 0, 1, 0]

sklearn提供了实现词频向量化功能的CountVectorizer类。想要对数据进行向量化,代码如下:

  • from sklearn.feature_ext\fraction.text import CountVectorizer
  • #实例化向量化对象
  • vec = CountVectorizer()
  • #将训练集中的新闻向量化
  • X_train = vec.fit_transform(X_train)
  • #将测试集中的新闻向量化
  • X_test = vec.transform(X_test)

但是仅仅通过统计词频的方式来将文本转换成向量会出现一个问题:长的文章词语出现的次数会比短的文章要多,而实际上两篇文章可能谈论的都是同一个主题。

为了解决这个问题,我们可以使用tf-idf来构建文本向量,sklearn中已经提供了tf-idf的接口,示例代码如下:

  • from sklearn.feature_ext\fraction.text import TfidfTransformer
  • #实例化tf-idf对象
  • tfidf = TfidfTransformer()
  • #将训练集中的词频向量用tf-idf进行转换
  • X_train = tfidf.fit_transform(X_train_count_vectorizer)
  • #将测试集中的词频向量用tf-idf进行转换
  • X_test = vec.transform(X_test_count_vectorizer)
MultinomialNB

MultinomialNBsklearn中多项分布数据的朴素贝叶斯算法的实现,并且是用于文本分类的经典朴素贝叶斯算法。在本关中建议使用MultinomialNB来实现文本分类功能。

MultinomialNB实例化时alpha是一个常用的参数。

  • alpha: 平滑因子。当等于1时,做的是拉普拉斯平滑;当小于1时做的是Lidstone平滑;当等于0时,不做任何平滑处理。

MultinomialNB类中的fit函数实现了朴素贝叶斯分类算法训练模型的功能,predict函数实现了法模型预测的功能。

其中fit函数的参数如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花来❀勿Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值