kaggle没什么可怕的。

简单的算法也很有效,逻辑回归打遍天下。

数据预处理和特征工程很重要。

Kaggle竞赛网站:

https://www.kaggle.com/c/sentiment-analysis-on-movie-reviews

1. 导入数据集

import pandas as pd

data_train = pd.read_csv('./train.tsv', sep = '\t')

data_test = pd.read_csv('./test.tsv', sep = '\t')

data_train.head()

data_train.shape

2. 构建语料库

# 提取训练集中的文本内容

train_sentences = data_train['Phrase']

# 提取测试集中的文本内容

test_sentences = data_test['Phrase']

# 构建一个语料库。通过pandas中的contcat函数将训练集和测试集的文本内容合并到一起

sentences = pd.concat([train_sentence, test_sentence])

# 合并的一起的语料库的规模

sentences.shape

# 提取训练集中的情感标签

label = data_train['Sentiment']

# 导入停词库

stop_words = open('./stop_words.txt', encoding = 'utf-8').read().splitlines()

3. 特征工程

词袋模型,TF-IDF模型,word2vec模型进行文本的特征工程。

3.1 构建模型

二选一:

词袋模型

from sklearn.feature_extraction.text import CountVectorizer

co = CountVectorizer(

analyzer = 'word',

ngram_range=(1,4),

stop_words=stop_words,

max_features=15000

)

TF-IDF模型

from sklearn.feature_extraction.text import TfidfVectorizer

tf = TfidfVectorizer(

analyzer = 'word',

ngram_range=(1,4),

max_features=150000

)

3.2 训练模型

二选一:

co.fit(sentences)

tf.fit(sentences)

3.3 数据集拆分

将训练集随机拆分为新的训练集和验证集

from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test = train_test_split(train_sentence, label,random_state = 1234)

#- x_train 训练集数据 (相当于课后习题)

#- x_test 验证集数据 (相当于模拟考试题)

#- y_train 训练集标签 (相当于课后习题答案)

#- y_test 验证集标签(相当于模拟考试题答案)

3.4 拆分后的训练集和验证集特征工程

二选一:

用词袋模型,把训练集和验证集进行特征工程变为向量。

x_train = co.transform(x_train)

x_test = co.transform(x_test)

#查看训练集中的一个数据

x_train[1]

用 TF-IDF 模型,把训练集和验证集进行特征工程变为向量。

x_train = tf.transform(x_train)

x_test = tf.transform(x_test)

x_train[1]

4. 构建分类器算法

4.1 多项式朴素贝叶斯分类器

from sklearn.naive_bayes import MultinomialNB

classifier = MultinomialNB()

classifier.fit(x_train,y_train)

print('词袋方法进行文本特征工程,使用sklearn默认的多项式朴素贝叶斯分类器,验证集上的预测正确率', classifier.score(x_test,y_test))

4.2 逻辑回归分类器

from sklearn.linear_model import LogisticRegression

#实例化一个逻辑回归类

lgl = LogisticRegression()

#训练模型

lgl.fit(x_train,y_train)

#预测正确率

print('词袋方法进行文本特征工程,使用sklearn默认的逻辑回归分类器,验证集上的预测正确率',lgl.score(x_test,y_test))

4.3 增加了2个参数的逻辑回归分类器

lg2 = LogisticRegression(C=3,dual=True,solver='liblinear')

超参数的网格搜索 GridSearchCV

在逻辑回归中增加C和dual这两个参数可以提高验证集上的预测准确率,每次手动太麻烦。

使用sklearn提供强大的网格搜索功能进行超参数的批量试验。

搜索空间:1-9。对每一个C,都分别尝试dual为True和False的两种参数。

最后从所有参数中跳出能够使模型在验证集预测准确率最高的。

from sklearn.model_selection import GridSearchCV

param_grid = { 'C':range(1,10),

'dual':[True,False]

}

lgGS = LogisticRegression()

grid = GridSearchCV(lgGS, param_grid=param_grid,cv=3, n_jobs=-1)

grid.fit(x_train,y_train)

#最优参数

grid.best_params_

#获取最佳模型

lg_final = grid.best_estimator_

print('经过网格搜索,找到最优超参数组合对应的逻辑回归模型,在验证集上的预测正确率', lg_final.score(x_test,y_test))

5. 对测试集的数据进行预测

#使用TF-IDF对测试集中的文本进行特征工程

test_X = tf.transform(data_test['Phrase'])

# 对测试集中的文本,使用lg_final逻辑回归分类器进行预测

predictions = lg_final.predict(test_X)

# 查看预测结果

predictions

#将测试结果加在测试集中

data_test.loc[:, 'Sentiment'] = predictions

data_test.head()

6. 按照kaggle比赛官网的要求整理格式

#loc通过索引标签来抽取数据:

final_data = data_test.loc[:,['PhraseId','Sentiment']]

final_data.head()

#保存为.csv文件,即为最终结果

final_data.to_csv('final_data.csv',index=None)

疑问

lg2 = LogisticRegression(C=3,dual=True)

这语句会报错,不知道什么原因?

留坑!! !

python电影情感评论分析_Kaggle电影评论情感分析相关推荐

  1. 情感分析-英文电影评论

    一.简介 情感分析,有时也称为观点挖掘,是NLP领域一个非常重要的一个分支,它主要分析评论.文章.报道等的情感倾向,掌握或了解人们这些情感倾向非常重要.这些倾向对我们处理后续很多事情都有指定或借鉴作用 ...

  2. 用Python爬取3万多条评论,看韩国人如何评价电影《寄生虫》?

    作者 | 朱小五 责编 | 郭   芮 今天给大家带来一个关于电影的数据分析文章.别走啊,这次不是豆瓣,也不是猫眼--真的,今天分析的电影是韩国电影<寄生虫>. 它是由韩国导演奉俊昊自编自 ...

  3. Python 网络爬虫实战:猫眼电影 38950 条评论数据告诉你《无名之辈》是否值得一看?

    11月16日,一部无流量明星.无大制作.无大IP的"三无"国产电影<无名之辈>上映后,竟然连续打败了超级英雄"毒液".会魔法的"神奇动物& ...

  4. python爬取国家男女比例_用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?...

    用python爬取3万多条评论,看韩国人如何评价韩国电影<寄生虫>? 朱小五 凹凸数据 大家好,我是朱小五 今天给大家带来一个关于电影的数据分析文章. 别走啊,这次不是豆瓣,也不是猫眼 真 ...

  5. python逆向爬取网易云评论进行情感分析!网易评论才是高手

    好久不见,各位小伙伴们!嗐,春节真滴快啊!祝大家新年快乐! 书山有路勤为径,学海无涯苦作舟!又得开始愉快滴学习了! 小夜斗今天给大家伙分享一期干货,芜湖起飞! JS逆向网易云爬取评论并利用snownp ...

  6. 利用python爬取东方财富网股吧评论并进行情感分析(一)

    利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论.涉及内容在前人的研究基础之 ...

  7. 用Python做数据商品情感分析(商品评论数据情感分析)

    用Python做数据商品情感分析(商品评论数据情感分析) 现在,我们得到了一些关于XX商品的评论信息的数据,我们需要对这些评论信息的数据进行情感分析: 分析步骤 机械压缩去词 短句过滤 情感分析 分词 ...

  8. 合工大Python语言与系统设计大作业:微博评论文本情感分析

    大作业:爬取微博评论文本并且分析文本的情感极性:pos or neg 外挂图片失败,请自行发挥想象!!! 文章目录 大作业:爬取微博评论文本并且分析文本的情感极性:pos or neg 设计背景 系统 ...

  9. 手把手教你用Python分析豆瓣电影——以《我不是药神》《邪不压正》为例

    <我不是药神>是由文牧野执导,宁浩.徐峥共同监制的剧情片,徐峥.周一围.王传君.谭卓.章宇.杨新鸣等主演 .影片讲述了神油店老板程勇从一个交不起房租的男性保健品商贩程勇,一跃成为印度仿制药 ...

最新文章

  1. ScribeFireBlog 发的一篇在Cnblogs的日志
  2. 「北京」「10-30k」「华米科技(小米手环)」招前端工程师
  3. 编程小白的第一本python入门书-《编程小白的第一本Python入门书》读书笔记
  4. 从向量的角度理解皮尔逊相关系数
  5. ant编辑java忽略注释_java – Ant警告:隐式编译的文件不受注释处理
  6. 解答: 刷DFT 版 Windows Phone 依然无法越狱安装程序的原因
  7. 更新node最新版本方法和 npm install -g n 运行错误
  8. PHP反射之类的反射
  9. springboot 整合 kafka demo 顺便看一下源码
  10. 4025-数组的正负排序(C++,双指针法,附思路)
  11. [Ubuntu] 16.04 上使用 pip 安装 mysqlclient
  12. 公司电脑和家里电脑如何实现自动文件同步?
  13. RTI_DDS自定义插件开发 4 接收方
  14. Python 和 Web 前端选择哪个比较合适?哪个前景好?
  15. 设计模式05——结构型模式
  16. 实战PyQt5: 141-QChart图表之箱形图
  17. 一个简单的python-execl查重
  18. ps 导出矢量图为svg,并上传iconfont
  19. ubuntu18安装Nvidia显卡驱动(亲测有效)
  20. 联考事业单位计算机类面试,2018年5.26事业单位联考E类常见面试题(下)

热门文章

  1. JAVA基础15-Java内部类
  2. 【Java】Java连接Mysql数据库的demo示例
  3. 目标检测--A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection
  4. 神经网络注意力机制--Attention in Neural Networks
  5. 语义分割--DeconvNet--Learning Deconvolution Network for Semantic Segmentation
  6. ClickHouse系列教程
  7. linux中使用yum安装主程序包,linux使用yum对程序包管理相关知识
  8. 天津理工大学c语言实验2答案,天津理工大学-c语言上机报告2.doc
  9. php elasticsearch ik,elasticsearch 中文分词(elasticsearch-analysis-ik)安装
  10. c语言实现椭圆曲线算法,椭圆曲线加密算法的C语言设计和实现