keras小程序(一),用cnn做分类
为了显示代码的友好性,我会把代码的每一步运行的结果显示出来,让读者可以有一个直观的认识,了解每一步代码的意思,下面我会先以几条数据为例,让读者可以直观的认识每段代码执行出来的效果,文章末我会已一个大数据集实验,并且给出实验效果,读者可以参考
一、 首先,笔者的数据存放在两个excel,一个是存放的是pos评论,一个是neg评论。分别是poss.xlsx和negg.xlsx,里面的内容如下:
poss.xls的内容是:
neg.xls的内容是:
二、 然后,读入数据了,具体代码如下
![](/assets/blank.gif)
![](/assets/blank.gif)
importnumpy as npimportpandas as pdpos= pd.read_excel('poss.xlsx', header=None)#读入数据到pandas数据框架 pos['label'] = 1#添加标签列为1 neg= pd.read_excel('negg.xlsx', header=None)neg['label'] = 0#添加标签列为0 all= pos.append(neg, ignore_index=True)#合并预料
View Code
print(all) 这段代码运行的效果是这样的:
接下来是分词了
![](/assets/blank.gif)
![](/assets/blank.gif)
cw=lambda s: list(jieba.cut(s))#调用结巴分词 all['words'] = all[0].apply(cw)
View Code
print(all['words'])这段代码运行的效果是这样的:
把所有的词组成一个大的词典
all['words'] =all[0].apply(cw) content=[]for i in all['words']:content.extend(i) abc= pd.Series(content).value_counts()
给每个词一个固定的编号
![](/assets/blank.gif)
![](/assets/blank.gif)
abc[:] = range(1, len(abc)+1) abc[''] =0 maxlen=10 defdoc2num(s, maxlen):s= [i for i in s if i inabc.index]s= s[:maxlen] + ['']*max(0, maxlen-len(s))returnlist(abc[s]) all['doc2num'] = all['words'].apply(lambda s: doc2num(s, maxlen))
View Code
结果如下:
打乱数据,并且生成keras的输入数据
![](/assets/blank.gif)
![](/assets/blank.gif)
idx =range(len(all)) np.random.shuffle(idx) all=all.loc[idx] x= np.array(list(all['doc2num'])) y= np.array(list(all['label'])) y= y.reshape((-1,1))
View Code
首先,我们看下x里面的数据形式,如下图:
接下来就是用keras搭建卷积神经网络模型了
model =Sequential() model.add(Embedding(len(abc), embedding_vecor_length,input_length=maxlen)) model.add(Convolution1D(nb_filter=nb_filter,filter_length=filter_length,border_mode='valid',activation='relu')) model.add(GlobalMaxPooling1D())model.add(Dense(128)) model.add(Dropout(0.2)) model.add(Activation('relu'))model.add(Dense(1)) model.add(Activation('sigmoid')) model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy']) model.fit(X_train, y_train,batch_size=batch_size,nb_epoch=nb_epoch,validation_data=(X_test, y_test))
最后就是对1000条积极评论和1000条消极评论的情感分类代码了,代码如下:
from __future__ importprint_functionimportjiebaimportpandas as pdimportnumpy as np np.random.seed(1337) #for reproducibilityfrom keras.preprocessing importsequencefrom keras.utils importnp_utilsfrom keras.models importSequentialfrom keras.layers importDense, Dropout, Activation, Flattenfrom keras.layers importEmbeddingfrom keras.layers importConvolution1D, GlobalMaxPooling1D embedding_vecor_length= 32maxlen=200min_count=5batch_size= 32nb_epoch=10nb_filter=128filter_length= 3pos= pd.read_excel('poss.xls', header=None) pos['label'] = 1neg= pd.read_excel('negg.xls', header=None) neg['label'] =0 all= pos.append(neg, ignore_index=True) cw=lambdas: list(jieba.cut(s)) all['words'] =all[0].apply(cw) content=[]for i in all['words']:content.extend(i) abc=pd.Series(content).value_counts() abc[:]= range(1, len(abc)+1) abc[''] =0 defdoc2num(s, maxlen):s= [i for i in s if i inabc.index]s= s[:maxlen] + ['']*max(0, maxlen-len(s))returnlist(abc[s]) all['doc2num'] = all['words'].apply(lambdas: doc2num(s, maxlen)) idx=range(len(all)) np.random.shuffle(idx) all=all.loc[idx] x= np.array(list(all['doc2num'])) y= np.array(list(all['label'])) y= y.reshape((-1,1)) train_num=1600X_train=x[:train_num] y_train=y[:train_num] X_test=x[train_num:] y_test=y[train_num:] model=Sequential() model.add(Embedding(len(abc), embedding_vecor_length,input_length=maxlen)) model.add(Convolution1D(nb_filter=nb_filter,filter_length=filter_length,border_mode='valid',activation='relu')) model.add(GlobalMaxPooling1D())model.add(Dense(128)) model.add(Dropout(0.2)) model.add(Activation('relu'))model.add(Dense(1)) model.add(Activation('sigmoid')) model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy']) model.fit(X_train, y_train,batch_size=batch_size,nb_epoch=nb_epoch,validation_data=(X_test, y_test)) score, acc= model.evaluate(X_test, y_test,verbose=0)print('Test score:', score)print('Test accuracy:', acc)print('Train...')model.fit(X_train, y_train, batch_size=batch_size,nb_epoch=nb_epoch,validation_data=(X_test, y_test)) score, acc= model.evaluate(X_test, y_test,verbose=0)print('Test score:', score)print('Test accuracy:', acc)
结果如下:
转载于:https://www.cnblogs.com/qianboping/p/6492438.html
keras小程序(一),用cnn做分类相关推荐
- 小程序快速开发怎么做?
说到小程序快速开发,大多数小伙伴会更加关注两个方面.一是成本.另一个是开发难度.开发一个小程序要花多少钱?制作一个小程序必须掌握深奥的专业技术吗?事实上,现在可以快速快发自己的小程序哦!下面为小程序快 ...
- 【小程序源码】多分类经典语录下载支持一键复制带壁纸,王者改名等功能
这是一款主要以各类语录分享的一款小程序源码 比如有:舔狗日记,土味情话,别味情话,励志鸡汤 内容支持一键复制分享,可以随时切换下一个内容 另外还有壁纸功能(属于自动采集) 还有王者荣耀空白名修改,重复 ...
- 为什么做小程序的时候要做定制开发小程序?
当你想要做小程序的时候,你便面临很多种不同的选择: 其一,选择展示类小程序,自己就可以做,仅有展示用途. 其二,选择模板小程序,有商城等功能. 其三,选择定制一个小程序,找专门做小程序的服务商. 我们 ...
- 小程序海外也能做吗?小程序海外主体公司开发的案例
2019年元旦前后,微信海外开发者大赛(下称"WDC大赛")第二站登陆德国柏林,象征着小程序生态进一步扎根欧美. 海外小程序发展情况: 大赛现场,微信团队公布了最新数据: 海外小程 ...
- 微信小程序业务好(做)跑吗?我想做小程序代理业务
微信小程序业务好(做)跑吗 ? 说真的你得看当地市场是个什么样的环境,如果你本地商场的商家都对微信小程序不温不火,漠不关心的话,你再怎么苦口婆心,说一大堆的好处,我相信他们还是会无动于衷的,这种市场跑 ...
- 小程序发布一年做了什么?错过将遗憾数年的3个大势
详情 小程序风口的产生与移动互联网流量红利逐渐消逝关系密切.移动端用户的争夺,已从增量市场转向存量市场,从抢占用户转向抢占用户时间.然而,却有一块尚未完全开化的巨大流量池-微信小程序.随势而动,仅一发 ...
- 微信扫码下单小程序怎么弄(做扫码下单小程序的方法)
很多粉丝朋友咨询我们说:自己想要弄个微信扫码下单的小程序该怎么弄?本文小编就给大家分享一下做扫码下单小程序的方法. 做个扫码下单小程序之前,我们首先要清楚自己的行业以及自己的产品或者服务是哪种类型.然 ...
- 新手如何用微信小程序和云数据库做一个论坛?【帖子页】
新手小白用微信小程序和云数据库做一个论坛[帖子页] 先放个效果图 由于后面换了头像,所以评论的头像和发帖的头像不一样. 要做个同款论坛,首先需要用到云数据库.在微信开发者工具的左上角开通云开发就可以了 ...
- 自动采集头像大全微信小程序源码支持多分类多种流量主
这是一款以头像为主的一款微信小程序源码 该小程序内包含了各种分类,各种样式都有 可以说是目前最全的一款头像小程序源码 五大分类情侣,女生,男生,卡通,风景 每大分类下面都有N个小分类,每个小分类下面有 ...
- 【小程序源码】自动采集头像大全微信小程序源码支持多分类
这是一款以头像为主的一款微信小程序源码 该小程序内包含了各种分类,各种样式都有 可以说是目前最全的一款头像小程序源码 五大分类情侣,女生,男生,卡通,风景 每大分类下面都有N个小分类,每个小分类下面有 ...
最新文章
- robotframework ie浏览器中click button不可用_RobotFramework自动化Selenium2Library库常用关键字...
- C++ 快速入门笔记:基本语法
- 130242014076+陈旭+第3次实验
- UNIX再学习 -- 静态库与共享库
- EOSIO:EOSIO最新版1.4.0 钱包开发环境搭建
- 【React 基础】之 React 基本介绍、jsx 规则、模块与组件
- 小红书回应赴港IPO:暂无明确计划
- 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍
- 读caffe源码:gflags的使用
- Python中的变量、引用、拷贝和作用域
- win7 安装 vmware出错: failed to create the requested registry key key installer error 1021 的解决办法。...
- 我们玩游戏,还是游戏玩我们……
- ASP.net的简单认识
- Python数据字典处理Excel,并统计总数,画出饼图
- 数学建模评价类方法02——层次分析法
- js 检测浏览器开发者控制台是否被打开
- Tomcat虚拟主机配置示例
- 14 Python 办公自动化
- hcia完结 静态路由综合实验
- 幻方问题__技巧解法
热门文章
- Android Multimedia框架总结(二十六)利用FFmpeg进行解码直播流
- python文件处理——JSON格式文件
- java并发程序死锁检测_Java并发:隐藏的线程死锁
- html鼠标各种坐标,各种MOUSE鼠标形状的表示方法
- 数据库不存在 php报错,在php中需要用到的mysql数据库的简单操作,phpmysql
- java jdbc连接_CPT201 ODBC与JDBC比较
- outlook搜索栏跑到上面去了_南昌搜索引擎seo优化
- mysql死锁抛出异常_如何排查和处理 MySQL 死锁异常?详细分析及解决方法步骤
- 计算机学院学生会会徽设计,学生会会徽设计策划书
- CS224N笔记——RNN和语言模型