用Python实现《沉默的真相》3万+弹幕情感分析!简单!

用Python实现《沉默的真相》3万+弹幕情感分析 大家好,我是J哥。 以前我写过不少文本数据分析,比如《八佰》影评分析、《三十而已》热评分析等,但基本停留在可视化分析层面。本文将运用文本挖掘技术,对最近热播剧《沉默的真相》弹幕数据进行深入分析,希望对大家有一定的启发。 本文数据分析思路及步骤如下图所示,阅读本文需要10min,您可在「菜J学Python」公众号后台回复文本挖掘获取弹幕数据进行测试。 一、数据获取 如果您对弹幕数据采集感兴趣,可查看J哥往期原创文章「弹幕爬虫,看这一篇就够了!」,本文仅提供核心代码: from xml.dom.m 阅读详情

以前我写过不少文本数据分析,比如《八佰》影评分析、《三十而已》热评分析等,但基本停留在可视化分析层面。本文将运用文本挖掘技术,对最近热播剧《沉默的真相》弹幕数据进行深入分析,希望对大家有一定的启发。

本文数据分析思路及步骤如下图所示,阅读本文需要10min,您可在「菜J学Python」公众号后台回复文本挖掘获取弹幕数据进行测试。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

一、数据获取

如果您对弹幕数据采集感兴趣,可查看J哥往期原创文章「弹幕爬虫,看这一篇就够了!」,本文仅提供核心代码:

from xml.dom.minidom import parse
import xml.dom.minidom
def xml_parse(file_name):
    DOMTree = xml.dom.minidom.parse(file_name)
    collection = DOMTree.documentElement
    # 在集合中获取所有entry数据
    entrys = collection.getElementsByTagName("entry")
    print(entrys)
    result = []
    for entry in entrys:
        content = entry.getElementsByTagName('content')[0]
        print(content.childNodes[0].data)
        i = content.childNodes[0].data
        name = entry.getElementsByTagName('name')[0]
        print(name.childNodes[0].data)
        j = name.childNodes[0].data
        dd = [j,i]
        result.append(dd)
        print(result)
    return result

二、数据清洗

1.导入数据分析库

#数据处理库
import numpy as np
import pandas as pd
import glob
import re
import jieba 

#可视化库
import stylecloud
import matplotlib.pyplot as plt 
import seaborn as sns
%matplotlib inline
from pyecharts.charts import *
from pyecharts import options as opts 
from pyecharts.globals import ThemeType  
from IPython.display import Image 

#文本挖掘库
from snownlp import SnowNLP
from gensim import corpora,models

2.合并弹幕数据

《沉默的真相》共12集,分集爬取,共生成12个csv格式的弹幕数据文件,保存在danmu文件夹中。通过glob方法遍历所有文件,读取数据并追加保存到danmu_all文件中。

csv_list = glob.glob('/菜J学Python/danmu/*.csv')
print('共发现%s个CSV文件'% len(csv_list))
print('正在处理............')
for i in csv_list:
    fr = open(i,'r').read()
    with open('danmu_all.csv','a') as f:
        f.write(fr)
print('合并完毕!')

3.重复值、缺失值等处理

#error_bad_lines参数可忽略异常行
df = pd.read_csv("./danmu_all.csv",header=None,error_bad_lines=False) 
df = df.iloc[:,[1,2]] #选择用户名和弹幕内容列
df = df.drop_duplicates() #删除重复行
df = df.dropna() #删除存在缺失值的行
df.columns = ["user","danmu"] #对字段进行命名
df

清洗后数据如下所示:

4.机械压缩去重

机械压缩去重即数据句内的去重,我们发现弹幕内容存在例如"啊啊啊啊啊"这种数据,而实际做情感分析时,只需要一个“啊”即可。
 

#定义机械压缩去重函数
def yasuo(st):
    for i in range(1,int(len(st)/2)+1):
        for j in range(len(st)):
            if st[j:j+i] == st[j+i:j+2*i]:
                k = j + i
                while st[k:k+i] == st[k+i:k+2*i] and k<len(st):   
                    k = k + i
                st = st[:j] + st[k:]    
    return st
yasuo(st="啊啊啊啊啊啊啊")

应用以上函数,对弹幕内容进行句内去重。

df["danmu"] = df["danmu"].apply(yasuo)
1

5.特殊字符过滤

另外,我们还发现有些弹幕内容包含表情包、特殊符号等,这些脏数据也会对情感分析产生一定影响。



特殊字符直接通过正则表达式过滤,匹配出中文内容即可。

df['danmu'] = df['danmu'].str.extract(r"([\u4e00-\u9fa5]+)")
df = df.dropna()  #纯表情直接删除
12

另外,过短的弹幕内容一般很难看出情感倾向,可以将其一并过滤。

df = df[df["danmu"].apply(len)>=4]
df = df.dropna() 

三、数据可视化

数据可视化分析部分代码本公众号往期原创文章已多次提及,本文不做赘述。从可视化图表来看,网友对《沉默的真相》还是相当认可的,尤其对白宇塑造的正义形象江阳,提及频率远高于其他角色。

1.整体弹幕词云

2.主演提及

四、文本挖掘(NLP)

1.情感分析

情感分析是对带有感情色彩的主观性文本进行分析、处理、归纳和推理的过程。按照处理文本的类别不同,可分为基于新闻评论的情感分析和基于产品评论的情感分析。其中,前者多用于舆情监控和信息预测,后者可帮助用户了解某一产品在大众心目中的口碑。目前常见的情感极性分析方法主要是两种:基于情感词典的方法和基于机器学习的方法。

本文主要运用Python的第三方库SnowNLP对弹幕内容进行情感分析,使用方法很简单,计算出的情感score表示语义积极的概率,越接近0情感表现越消极,越接近1情感表现越积极。

df['score'] = df["danmu"].apply(lambda x:SnowNLP(x).sentiments)
df.sample(10) #随机筛选10个弹幕样本数据
12

(1)整体情感倾向

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置加载的字体名
plt.rcParams['axes.unicode_minus'] = False   # 解决保存图像是负号'-'显示为方块的问题 
plt.figure(figsize=(12, 6)) #设置画布大小
rate = df['score']
ax = sns.distplot(rate,
             hist_kws={'color':'green','label':'直方图'},
             kde_kws={'color':'red','label':'密度曲线'},
             bins=20) #参数color样式为salmon,bins参数设定数据片段的数量
ax.set_title("弹幕整体情感倾向   绘图:「菜J学Python」公众号")
plt.show
12345678910

(2)观众对主演的情感倾向

mapping = {'jiangyang':'白宇|江阳', 'yanliang':'廖凡|严良', 'zhangchao':'宁理|张超','lijing':'谭卓|李静', 'wengmeixiang':'李嘉欣|翁美香'}
for key, value in mapping.items():
    df[key] = df['danmu'].str.contains(value)
average_value = pd.Series({key: df.loc[df[key], 'score'].mean() for key in mapping.keys()})
print(average_value.sort_values())
12345

由各主要角色情感得分均值可知,观众对他们都表现出积极的情感。翁美香和李静的情感得分均值相对高一些,难道是男性观众偏多?江阳的情感倾向相对较低,可能是观众对作为正义化身的他惨遭各种不公而鸣不平吧。

2.主题分析

这里的主题分析主要是将弹幕情感得分划分为两类,分别为积极类(得分在0.8以上)和消极类(得分在0.3以下),然后再在各类里分别细分出5个主题,有助于挖掘出观众情感产生的原因。

首先,筛选出两大类分别进行分词。

#分词
data1 = df['danmu'][df["score"]>=0.8]
data2 = df['danmu'][df["score"]<0.3]
word_cut = lambda x:' '.join(jieba.cut(x)) #以空格隔开
data1 = data1.apply(word_cut)
data2 = data2.apply(word_cut)
print(data1)
print('----------------------')
print(data2)
123456789

首先,筛选出两大类分别进行分词。

#去除停用词
stop = pd.read_csv("/菜J学Python/stop_words.txt",encoding='utf-8',header=None,sep='tipdm')
stop = [' ',''] + list(stop[0])
#print(stop)

pos = pd.DataFrame(data1)
neg = pd.DataFrame(data2)

pos["danmu_1"] = pos["danmu"].apply(lambda s:s.split(' '))
pos["danmu_pos"] = pos["danmu_1"].apply(lambda x:[i for i in x if i.encode('utf-8') not in stop])
#print(pos["danmu_pos"])

neg["danmu_1"] = neg["danmu"].apply(lambda s:s.split(' '))
neg["danmu_neg"] = neg["danmu_1"].apply(lambda x:[i for i in x if i.encode('utf-8') not in stop])
1234567891011121314

其次,对积极类弹幕进行主题分析。

#正面主题分析
pos_dict = corpora.Dictionary(pos["danmu_pos"]) #建立词典
#print(pos_dict)
pos_corpus = [pos_dict.doc2bow(i) for i in pos["danmu_pos"]] #建立语料库
pos_lda = models.LdaModel(pos_corpus,num_topics=5,id2word=pos_dict) #LDA模型训练
print("正面主题分析:")
for i in range(5):
    print('topic',i+1)
    print(pos_lda.print_topic(i)) #输出每个主题
    print('-'*50)
12345678910

结果如下:



最后,对消极类弹幕进行主题分析。

#负面主题分析
neg_dict = corpora.Dictionary(neg["danmu_neg"]) #建立词典
#print(neg_dict)
neg_corpus = [neg_dict.doc2bow(i) for i in neg["danmu_neg"]] #建立语料库
neg_lda = models.LdaModel(neg_corpus,num_topics=5,id2word=neg_dict) #LDA模型训练
print("负面面主题分析:")
for j in range(5):
    print('topic',j+1)
    print(neg_lda.print_topic(j)) #输出每个主题
    print('-'*50)
12345678910

结果如下:

四、总结

本文较为系统的分析了《沉默的的真相》3万+弹幕数据,但由于snownlp对商品评论做文本挖掘更有效,您也可以尝试用百度AI和腾讯AI进行情感分析,分析的结构可能更有效一些。

 

关于《后浪》的B站弹幕分析总结(五)——Python实现情感分析、情绪分析以及可视化 这篇文章语料来源于B站《后浪》弹幕,工具为python,着重讲述情感分析,顺便讲一下情绪分析。 阅读详情

相关推荐

基于深度学习的Bilibili视频弹幕文本情感分析系统的设计与实现

课题研究的基于深度学习的Bilibili视频评论文本情感分析系统,可以有效检测观众所发表弹幕的情感倾向,并进行辅助管理,既帮助视频内容创作者深入了解观众对视频内容的反应,包括情感、意见和建议,又可以通过分析弹幕了解观众对视频内容的喜好和不满意之处,以便针对性地改进和优化视频的内容。基于深度学习的Bilibili视频弹幕文本情感分析系统主要研究内容如下:数据预处理:对弹幕文本进行必要的预处理,包括去除无关字符、停用词过滤、词干提取等,以提高情感分析的准确性。深度学习模型。

QQ80213251的博客 1788

Python学习笔记 -- 函数式编程之高阶函数

函数式编程 函数式编程(Functional Programming),是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量。因此,任意一个函数,只要输入是确定的,输出就是确定的。 函数式编程是一种"编程范式"(programming paradigm)。它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。 函数式编程的一个特点就是,允许把函数本身作为参...

Anyers的专栏 480

数据科学实战课:问题驱动的数据分析与业务闭环

数据科学不是统计学的简化版,而是连接数据与业务决策的工程实践。它以真实问题为起点,通过数据采集、清洗、探索、建模到交付的完整生命周期,构建可解释、可行动、可落地的分析闭环。核心在于将业务目标转化为可计算指标(如复购率、转化漏斗、用户分群),用Python+Pandas+Scikit-learn等工业级工具实现快速验证与迭代,强调特征背后的业务逻辑、模型输出的业务语言,以及结果对运营动作的直接支撑。本文聚焦‘问题驱动型’数据工作方法论,覆盖A/B测试归因、RFM行为聚类、清洗即规则翻译、评估指标与业务目标对齐

weixin_33966095的博客 338

通过List.apply方法构造List的背后逻辑

通过List伴生对象的apply方法来创建实例: List("A","B") 过程发生了什么 首先,List伴生对象的apply方法接收的是一个可变参数列表,即数组: override def apply[A](xs: A*): List[A] = xs.toList 而我们传入的Array("A","B")数组会被隐式转换为 WrappedArray 的子类型,这是在LowP

STHSF的地盘 3562

Delphi解决 openssl DLL 与 Indy 的SSL/TLS 连接问题

​ 使用 SSL 连接时出错。错误 1409442E:SSL 例程:ssl3_read_bytes:tlsv1 警报协议版本 由于我使用的是最新版本的Indy,根据Delphi Praxis 上的此线程,这种情况不应该发生。事实证明,不知何故,一个非常旧版本的 openssl DLLlibeay32.dll和ssleay32.dll已被放置在我计算机上的 sarch 路径中(版本 1.0.0e)。

Delphi开发局QQ群:32422310 2493

ENVI SARscape安装全攻略:从下载到汉化一步到位(附最新试用申请链接)

本文提供ENVI SARscape从下载安装到汉化的完整指南,特别针对InSAR(合成孔径雷达干涉测量)分析环境搭建。详细介绍了系统要求、分步安装流程、汉化优化方法及硬件加速配置,并分享数据处理验证和常见问题解决方案,帮助用户高效搭建遥感数据分析平台。

rnn9storyteller的博客 1407

csv去重 python_实战|用Python对沉默的真相3万+弹幕进行情感分析

本文运用文本挖掘技术,对最近热播剧《沉默的真相》3万+弹幕进行数据分析,希望对你有一定的启发。本文数据分析思路及步骤如下图所示,阅读本文需要10min,你可在「菜J学Python」公众号后台回复文本挖掘获取弹幕数据进行测试。一、数据获取如果你对弹幕数据采集感兴趣,可查看J哥往期原创文章「弹幕爬虫,看这一篇就够了!」,本文仅提供核心代码:from xml.dom.minidom impor...

weixin_32520565的博客 825

用Python+PyTorch实现DQN无人机避障:从环境搭建到实战训练(附完整代码)

本文详细介绍了如何使用Python和PyTorch框架,基于深度强化学习中的DQN算法,实现一个无人机自主避障系统。内容涵盖从自定义环境搭建、DQN智能体核心算法实现,到完整的训练流程与超参数调优,并提供了可视化演示与进阶优化方向,为开发者提供了从理论到实践的完整指南。

kubernetes8ctl的博客 640

豆瓣9.2分!17万条弹幕告诉你《沉默的真相》凭什么口碑高开暴走!

关注后&#34;星标&#34;简说Python人人都可以简单入门Python、爬虫、数据分析简说Python严选来源:CDA数据分析师作者:Mika 数据:真达One ol...

简说Python的博客 583

无源定位之时差估计的精确时差估计算法(ETDE)及MATLAB实现程序

时差估计算法之精确时差估计(ETDE)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想

伊谢尔伦的林中小路 4255

程序化广告行业(23/89):深度剖析广告效果评估指标

大家好,我一直希望能和大家一起在技术领域不断探索、共同进步。在之前的文章中,我们了解了程序化广告中腾讯的业务布局和广告效果评估的基础概念,今天让我们进一步深入剖析广告效果评估的各项指标,这对理解程序化广告的运作机制至关重要

yyy173611的博客 4864

豆瓣9.2!17万条弹幕告诉你《沉默的真相》凭什么高口碑!

CDA数据分析师 出品 作者:Mika 数据:真达 【导读】今天教大家用Python分析《沉默的真相》的17万条弹幕。距离上一部国产良心剧《隐秘的角落》刷屏还不到2个月,“秃头梗”、“爬山梗”还让人记忆犹新。紧接着又一部爆款国产剧来了,那就是最近口碑炸裂的《沉默的真相》。 同样是来自爱奇艺针对悬疑短剧的“迷雾剧场”,《沉默的真相》根据紫金陈的小说《长夜难明》改编,讲述了检察官江阳历经多年,付出无数代价查清案件真相的故事。 开播当天《沉默的真相》在豆瓣开分8.8分,随着剧集的播出...

CDA数据分析师 669

rk3568 Android12 默认授予预装app权限

默认授予预装应用权限可以避免用户在每次使用应用时都要重复同意权限请求。尽管在Android 12中,用户对权限的管理有了更高的控制权,但这也可能导致用户在频繁使用预装应用时感到繁琐和不必要的干扰。通过默认授权,减少了这种麻烦。一些厂商可能会根据其定制的Android系统(如Samsung的One UI、Xiaomi的MIUI)要求某些预装应用默认获得权限,以便应用能够提供厂商特定的功能。这也有助于设备厂商提供统一和稳定的服务,不至于因为权限问题导致某些功能无法使用。

weixin_35723192的博客 661

python list .apply_用Python对沉默的真相3万+弹幕进行情感分析

作者:J哥源自:菜J学Python本文将运用文本挖掘技术,对最近热播剧《沉默的真相》弹幕数据进行深入分析,希望对大家有一定的启发。本文数据分析思路及步骤如下图所示,阅读本文需要10min,您可在「快学Python」公众号后台回复文本挖掘获取弹幕数据进行测试。一、数据获取本文仅提供核心代码:fromxml.dom.minidomimportparseimportxml.dom.mi...

weixin_39665379的博客 496

YOLO11-Seg优化:卷积变体系列篇 | 动态蛇形卷积(Dynamic Snake Convolution) | ICCV2023

动态蛇形卷积(Dynamic Snake Convolution),增强微小特征提取能力,引入到YOLO11-Seg,与C3k2结合实现二次创新

会AI的学姐 370

华为OD机考2025C卷 - 精准核酸检测(Java & Python& JS & C++ & C语言)

华为OD机考2025C卷 - 精准核酸检测,提供在线OJ Java & Python& JS & C++ & C

算法大师! 2881

如何使用python做中文情感分析

学习补充: 如何用Python做情感分析? python做文本情感分析——某APP内评论内容作样本 python 京东商品评论情感分析 snownlp库的使用 基于情感词典的python情感分析 【python机器学习】中文情感分析 百度API情感分析 转载自:如何使用python做中文情感分析 作为一门编程语言,Python的编写简单,支持库强大,应用场景多,越来越多的人开始将它作为自己的编程入门语言。Python一个比较重要的场景是做舆情分析,比如分析社交网络上群众对某一话题的态度,分析股民的

积一时之步,臻千里之遥程 9260

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

毕业设计 基于大数据B站数据分析项目

今天向大家介绍如何使用大数据技术,对B站的视频数据进行分析,得到可视化结果。这里学长分为两个部分描述:🧿 选题指导, 项目分享:见文末分析方向:首先从总体情况进行分析,之后分析综合排名top100的视频类别。总体情况部分包括:综合排名top100部分包括: 5. top100类别占比。 6. top100播放量情况。 7. 硬币、收藏、点赞平均人数分布。 8. 各分区平均评论、弹幕、转发量情况。这里主要是进行查看数据信息、空值、重复值以及数据类型,但由于数据很完整这里不再做过多操作。对数据进行拆分、聚合,

HUXINY的博客 1215

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

2022年新出的数据分析与挖掘神器

大家五一期间宅在家中还是出去游玩了?因为部分地区疫情反复,因此有不少人目前还被居家隔离当中,空得时候可以来看一下下面几位大佬写的原创,看完之后或许会获益匪浅不少菜J学Python菜J学Python ,作者J哥,985高校硕士毕业。连载超过100+原创推文,涵盖爬虫、数据分析、可视化、自动化办公、Web开发等大量实战项目,几乎每篇文章都有源码分享。希望我的分享,可以让你先学...

weixin_43373042的博客 259

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

这30张高清速查表 竟然比官网还厉害,速领

希望你有很好的朋友,可以跟他说说心里话;希望你有喜欢的事,可以暂时摆脱世界困扰;希望你难过的时候,有一份美食与一份音乐;希望你有关注我们,可以一起学习一起进步。2021年只剩下两个月多一点...

weixin_43373042的博客 1242

几个方法帮你加快Python运行速度

Python运行的慢是历来被诟病的,一方面和语言有关,另一方面可能就是你代码的问题。语言方面的问题我们解决不了,所以只能在编程技巧上来提高程序的运行效率。下面就给大家分享几个提高运行效率的编程方法。 首先,我们需要来衡量代码的时间和空间的复杂性,不然仅仅用我们的肉眼很难感受代码时间长短的变化。python中的profiler可以帮助我们测量程序的时间和空间复杂度。 使用时通过-o参数传入可选输出...

人生苦短, 还不用Python? 4万+

python获取电脑几核几线程_Python 基本功: 14. 多核并行计算

现在的笔记本电脑,台式机都流行多核心,低频率的架构,原因是低频率低耗电,而多核心又可以在并行计算中表现出色。在上一篇教程中:多多教Python:Python 基本功: 13. 多线程运算提速​zhuanlan.zhihu.com描述了如何用 Python 的多线程模块来实现计算提速,但是受限于在一个进程,也就是单核心上的运算。而这篇教程,将告诉大家如何利用 Python 在多核心上做并行计算。教程...

weixin_39947812的博客 598
上一篇: 详解Python中的协程,为什么说它的底层是生成器?
下一篇: Python网络爬虫——爬取小视频网站源视频!自己偷偷看哦!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值