python 多分类情感_python 文本情感分类

对于一个简单的文本情感分类来说,其实就是一个二分类,这篇博客主要讲述的是使用scikit-learn来做文本情感分类。分类主要分为两步:1)训练,主要根据训练集来学习分类模型的规则。2)分类,先用已知的测试集评估分类的准确率等,如果效果还可以,那么该模型对无标注的待测样本进行预测。

首先先介绍下我样本集,样本是已经分好词的酒店评论,第一列为标签,第二列为评论,前半部分为积极评论,后半部分为消极评论,格式如下:

下面实现了SVM,NB,逻辑回归,决策树,逻辑森林,KNN 等几种分类方法,主要代码如下:

#coding:utf-8

from matplotlib import pyplot

import scipy as sp

import numpy as np

from sklearn.cross_validation import train_test_split

from sklearn.feature_extraction.text import CountVectorizer

from sklearn.feature_extraction.text import TfidfVectorizer

from sklearn.metrics import precision_recall_curve

from sklearn.metrics import classification_report

from numpy import *

#========SVM========#

def SvmClass(x_train, y_train):

from sklearn.svm import SVC

#调分类器

clf = SVC(kernel = 'linear',probability=True)#default with 'rbf'

clf.fit(x_train, y_train)#训练,对于监督模型来说是 fit(X, y),对于非监督模型是 fit(X)

return clf

#=====NB=========#

def NbClass(x_train, y_train):

from sklearn.naive_bayes import MultinomialNB

clf=MultinomialNB(alpha=0.01).fit(x_train, y_train)

return clf

#========Logistic Regression========#

def LogisticClass(x_train, y_train):

from sklearn.linear_model import LogisticRegression

clf = LogisticRegression(penalty='l2')

clf.fit(x_train, y_train)

return clf

#========KNN========#

def KnnClass(x_train,y_train):

from sklearn.neighbors import KNeighborsClassifier

clf=KNeighborsClassifier()

clf.fit(x_train,y_train)

return clf

#========Decision Tree ========#

def DccisionClass(x_train,y_train):

from sklearn import tree

clf=tree.DecisionTreeClassifier()

clf.fit(x_train,y_train)

return clf

#========Random Forest Classifier ========#

def random_forest_class(x_train,y_train):

from sklearn.ensemble import RandomForestClassifier

clf= RandomForestClassifier(n_estimators=8)#参数n_estimators设置弱分类器的数量

clf.fit(x_train,y_train)

return clf

#========准确率召回率 ========#

def Precision(clf):

doc_class_predicted = clf.predict(x_test)

print(np.mean(doc_class_predicted == y_test))#预测结果和真实标签

#准确率与召回率

precision, recall, thresholds = precision_recall_curve(y_test, clf.predict(x_test))

answer = clf.predict_proba(x_test)[:,1]

report = answer > 0.5

print(classification_report(y_test, report, target_names = ['neg', 'pos']))

print("--------------------")

from sklearn.metrics import accuracy_score

print('准确率: %.2f' % accuracy_score(y_test, doc_class_predicted))

if __name__ == '__main__':

data=[]

labels=[]

with open ("train2.txt","r")as file:

for line in file:

line=line[0:1]

labels.append(line)

with open("train2.txt","r")as file:

for line in file:

line=line[1:]

data.append(line)

x=np.array(data)

labels=np.array(labels)

labels=[int (i)for i in labels]

movie_target=labels

#转换成空间向量

count_vec = TfidfVectorizer(binary = False)

#加载数据集,切分数据集80%训练,20%测试

x_train, x_test, y_train, y_test= train_test_split(x, movie_target, test_size = 0.2)

x_train = count_vec.fit_transform(x_train)

x_test = count_vec.transform(x_test)

print('**************支持向量机************ ')

Precision(SvmClass(x_train, y_train))

print('**************朴素贝叶斯************ ')

Precision(NbClass(x_train, y_train))

print('**************最近邻KNN************ ')

Precision(KnnClass(x_train,y_train))

print('**************逻辑回归************ ')

Precision(LogisticClass(x_train, y_train))

print('**************决策树************ ')

Precision(DccisionClass(x_train,y_train))

print('**************逻辑森林************ ')

Precision(random_forest_class(x_train,y_train))

结果如下:

2766967eb6ac5a34bfc88e2028aaebd5.png

对于整体代码和语料的下载,可以去下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET GC 实时监控工具 dotnet gcmon 介绍

今天介绍一个新的诊断工具 dotnet-gcmon, 也是全局 .NET CLI 工具, 它可以监控到 .NET 程序的 GC, 能获取到的信息也很详细, 另外 maoni 大佬也是其中的开发者之一。安装 gcmon和其他的 dotnet 诊断工具一样, 你可以使用以下命令,进行全局安装dotnet tool install -…

你绝对干过的15件傻事儿

全世界只有3.14 % 的人关注了爆炸吧知识首先来看你绝对干过的15件傻事儿,别不承认!把树叶弄成这样喝酸奶舔盖子吃完棒冰继续含着棍子咬拉链尝试用笔写一首歌比如《生日快乐》对着电风扇说话或喊叫刮墙壁上的油漆过斑马线只踩白色部分猫打哈欠时伸手指进去…

java什么时候可能产生内存溢出_哪些场景会产生OOM?怎么解决?

Java技术栈www.javastack.cn关注阅读更多优质文章这个面试题是一个朋友在面试的时候碰到的,什么时候会抛出OutOfMemery异常呢?初看好像挺简单的,其实深究起来考察的是对整个JVM的了解,而且这个问题从网上可以翻到一些乱七八糟的答…

年仅53岁,因连续工作、过度劳累,这位抗疫幕后的科研专家去世

全世界只有3.14 % 的人关注了爆炸吧知识本文来源:募格学术综合整理新华社、科技日报 记者 张佳星、长江日报-长江网据新华社报道,在抗击新冠肺炎疫情期间,因连续工作、过度劳累,中国医学科学院病原生物学研究所研究员赵振东教授因…

智能流控

关键应用太慢,带宽用不好?AppEx 智能流控帮你轻松搞定! 现代企业和机构的运转越来越依赖网络的畅通。而网络应用的日益繁杂经常让有限的带宽难以招架。企业和机构经常面临的一个问题是员工上网流量导致网络出口拥塞,从而严重影响企…

vim相关

2019独角兽企业重金招聘Python工程师标准>>> 跟我一起学Vim http://feihu.me/blog/2014/intro-to-vim/ 浅显易懂 #Vim学习笔记 http://mturing.com/wiki/wikihtml/Vim%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.html Vim基本操作,排版不错 #简明Vim练级攻略 http://cool…

php生成vcf,详解PHP如何实现生成vcf vcard文件

PHP如何实现生成vcf vcard文件?本文主要介绍了PHP实现生成vcf vcard文件功能类定义与使用方法,结合具体实例形式分析了vcf vcard功能类的具体定义与使用方法,并附带VCardIFL.class.php类文件源码供读者下载参考。需要的朋友可以参考下&#x…

Github怎么删除之前的项目

Github怎么删除之前的项目 对于github的好奇,在上面新建了一个项目,如下图 我想把上面的项目删掉,但是发现找了很久没有找到删除的地方,我勒个插,后来终于找到地方了,首先,我们点击进去这个项目,然后看到settings如图, 点击进…

HTTP1.1 Keep-Alive到底算不算长连接?

✎ 码甲说 在基础架构部浸润了半年,有一些认知刷新想和童靴们交代一下, 不一定全面,仅代表此时的认知, 也欢迎筒靴们提出看法。本文聊一聊口嗨用语:“长连接、短连接”, 文章会按照下面的思维导图来讲述&…

酸了!第一名+第三名的学霸情侣,分别直博清华、人大…

全世界只有3.14 % 的人关注了爆炸吧知识本文授权转载自公众号:学术志(ID:xueshuzhi001)作者:青小小(ID:zqwqxx)综合自武汉大学在武汉大学数学与统计学院2017级数学基地班第一名和第三…

分析cocos2d-x中的CrystalCraze示例游戏

cocos2d-x自带了不少示例,以及几个比较简单的游戏,不过这些游戏都是用javascript binding(SpiderMonkey)做的,所以我猜测javascript binding可能是cocos2d-x开发游戏的主流模式,优点是: 游戏逻辑用javascript&#xff…

WPF 实现一个酷酷的Loading

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织由于微信群人数太多入群请添加小编微信号(yanjinhuawechat)或(W_Feng_aiQ)邀请入群(需备注WPF开发者)PS:有更好的…

DNS区域委派与转发

DNS区域委派与转发 DNS 是域名系统 (Domain Name System) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间…

惊了!哆啦A梦里最能打的道具,居然真实存在!还打破了世界纪录,看完跪了....

全世界只有3.14 % 的人关注了爆炸吧知识生活处处有科学《哆啦A梦》里的空气炮,是很多人童年时梦寐以求的神奇道具。只要将手伸进炮筒,就能发出强大的压缩空气炮,瞬间击倒体型庞大的怪物。为了证明“空气炮”的确有科学依据,有这么…

Android之如何解决Android Studio左边的的project不见了

今早上一打开Android studio,尼玛,我的project跑哪里去了,郁闷了,如下图 本来是要去问我师傅的,但是一想这么简单的问题也去问,弱爆了,如果在网上找不到解决问题的办法再去问吧,果然找到了&…

Win11推送加速!

微软宣布 Windows 11 现已开始向更多符合条件的 Windows 10 电脑推送。微软表示:无论是推广经验还是用户反馈,都是积极的。因此我们计划扩大 Windows 11 的推送范围,这比我们之前预期的要快。如果您有符合升级条件的 Windows 10 电脑&#xf…

h5通过php微信支付宝支付,用H5调用支付微信公众号支付的解析

这篇文章主要为大家详细介绍了微信公众号支付H5调用支付,具有一定的参考价值,感兴趣的小伙伴们可以参考一下最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时间写了个dem…

这场戏里,到底是谁脏了?

1 让我表演个背包袱!▼2 猝不及防的劈叉(素材来源网络,侵删)▼3 就很出戏(素材来源网络,侵删)▼4 意识流拔河很有感觉了▼5 纯爱(素材来源网络,侵删)▼6 …

Android之如何解决刚下载的Android studio(包括上面的菜单栏)乱码问题

这个问题是我的台式机第一次下载Andorid studio的时候出现的,这台台式机组装的,是之前玩ps的人用了的,感觉怪怪的,第一次安装Android studio不是很熟悉,出现了乱码,包括菜单栏目,只有部分图片了,没有全部图片了 解决这个问题的总共思路: 思路一: 请教了那…

关于高级导数的一个不等式估计

from: http://math.fudan.edu.cn/gdsx/XXYD.HTM