Python基于逻辑回归模型进行电影评论情感分析项目实战

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: Python基于逻辑回归模型进行电影评论情感分析项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

image.png

image.png

1.项目背景

NLP(自然语言处理)是计算机科学领域以及人工智能领域的一个重要的研究方向,它研究用计算机来处理、理解以及运用人类语言(如中文等),达到人与计算机之间进行有效通讯。所谓“自然”乃是寓意自然进化形成,是为了区分一些人造语言,类似Python、Java等人为设计的语言。在人类社会中,语言扮演着重要的角色,语言是人类区别于其他动物的根本标志,没有语言,人类的思维无从谈起,沟通交流更是无源之水。这些年,NLP研究取得了长足的进步,逐渐发展成为一门独立的学科,从自然语言的角度出发,NLP基本可以分为两个部分:自然语言处理以及自然语言生成

本项目应用逻辑回归模型进行电影评论情感分析。 

2.数据采集

本次建模数据来源于网络,数据项统计如下:

编号 

变量名称

描述

1

NAME

电影名字

2

CREATOR

评论者

3

CONTENT

评论内容

4

type

类型  1正面  0负面

数据详情如下(部分展示):

image.png

 

3.数据预处理

3.1用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

关键代码

print(data.head())

结果如图所示:

image.png

3.2数据缺失值统计

使用Pandas工具的info()方法统计每个特征的缺失值:

关键代码

print(data.info())

结果如图所示:

image.png

4.探索性数据分析

4.1消极类型分词统计

关键代码

all_words0 = [i.strip() for line in data_0.CONTENT for i in line.split(',')]  # 获取所有分词
all_df0 = pd.DataFrame({'words': all_words0})  # 构建数据框
all_df0.groupby(['words'])['words'].count().sort_values(ascending=False)[:10].plot.bar(
    color=['green', 'blue', 'yellow', 'lime', 'red', 'brown', 'darkred', 'gold', 'greenyellow',
           'palegreen'])  # 对分词进行统计、按降序进行排序  取前词频前10的分词
plt.show()  # 展示图片

结果如图所示:

image.png

 

4.2消极类型词云图

关键代码

my_wordcloud0 = wc.generate(list_new0)  # 生成词云
plt.imshow(my_wordcloud0)  # 显示词云
plt.axis("off")  # 关闭保存
plt.show()  

wc.to_file('负面词云图.png')  

plt.close()  # 关闭当前窗口

结果如图所示:

image.png

 

4.3积极类型分词统计

关键代码

data_1 = data[data['type'] == 1]

all_words1 = [i.strip() for line in data_1.CONTENT for i in line.split(',')]  # 获取所有分词
all_df1 = pd.DataFrame({'words': all_words1})  # 构建数据框
all_df1.groupby(['words'])['words'].count().sort_values(ascending=False)[:10].plot.bar(
    color=['green', 'blue', 'yellow', 'lime', 'red', 'brown', 'darkred', 'gold', 'greenyellow',
           'palegreen'])  # 对分词进行统计、按降序进行排序  取前词频前10的分词
plt.show()  # 展示图片

结果如图所示:

image.png

 

4.4积极类型词云图

关键代码

my_wordcloud1 = wc.generate(list_new1)  # 生成词云
plt.imshow(my_wordcloud1)  # 显示词云
plt.axis("off")  # 关闭保存
plt.show()  
wc.to_file('正面词云图.png')  # 保存图片文件
plt.close()  # 关闭当前窗口

结果如图所示:

image.png

5.特征工程

5.1构建特征和标签

关键代码

X = data[['CONTENT']]  # 构建特征
y = data['type']  # 构建标签

 

5.2 TF/IDF文本特征提取

关键代码

tfidf = TfidfVectorizer()  # 文本向量化  除了考量某词汇在文本出现的频率,还关注包含这个词汇的所有文本的数量能够削减高频没有意义的词汇出现带来的影响, 挖掘更有意义的特征
X_train = tfidf.fit_transform(X_train.CONTENT)  # 拟合转换
print('***********************文本向量化后的词频矩阵****************************')
print(X_train[:1, :])

结果如图所示:

image.png

5.3数据集拆分

关键代码

X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=42)  # 进行数据拆分

 

 

6.构建逻辑回归情感分类模型

6.1模型构建

关键代码

model = LogisticRegression()  # 建模
model.fit(X_train, y_train)  # 拟合
y_pred = model.predict(X_valid)  # 预测

 

7.模型评估

7.1评估指标及结果

评估指标主要包括准确率、查准率、查全率(召回率)、F1分值等等。

关键代码

print('逻辑回归分类模型-默认参数-准确率分值: {0:0.4f}'.format(accuracy_score(y_valid, y_pred)))
print("逻辑回归分类模型-默认参数-查准率 :", round(precision_score(y_valid, y_pred, average='weighted'), 4), "\n")
print("逻辑回归分类模型-默认参数-召回率 :", round(recall_score(y_valid, y_pred, average='weighted'), 4), "\n")
print("逻辑回归分类模型-默认参数-F1分值:", round(f1_score(y_valid, y_pred, average='weighted'), 4), "\n")

 

模型名称

指标名称

指标值

测试集

逻辑回归情感分类模型

准确率

0.8552

查准率

0.8443

查全率

0.8552

F1分值

0.8326

通过上表可以看到,模型的准确率为85.52%,F1分值为0.8326,说明模型效果良好。 

7.2分类报告

关键代码

print(classification_report(y_valid, y_pred))

结果如图所示:

image.png

类型为负面的F1分值为0.92;类型为正面的F1分值为0.48

7.3混淆矩阵

关键代码

cm_matrix = pd.DataFrame(data=cm, columns=['Actual :0', 'Actual :1'],
                         index=['Predict :0', 'Predict :1'])

sns.heatmap(cm_matrix, annot=True, fmt='d', cmap='YlGnBu')  # 热力图展示
plt.show()  # 展示图片

结果如图所示:

image.png

从上图可以看到,预测为负面 实际为正面的有428条;预测为正面  实际为负面的2580条。

7.4ROC曲线

关键代码

plt.plot(fpr, tpr, 'b', label='AUC = %0.2f' % roc_auc)  # 绘制曲线图
plt.legend(loc='lower right')  # 设置图例
plt.plot([0, 1], [0, 1], 'r--')  # 绘制曲线图
plt.xlim([0, 1])  # 获取或设置x轴数值显示范围0-1
plt.ylim([0, 1])  # 获取或设置y轴数值显示范0-1
plt.ylabel('True Positive Rate')  # 设置y轴名称
plt.xlabel('False Positive Rate')  # 设置x轴名称
plt.title('ROC-AUC Curve')  # 设置标题
plt.show()  # 显示图片

结果如图所示:

image.png

从上图可以看到,AUC的值为0.87,说明模型效果良好。

8.总结展望

本项目应用逻辑回归模型针对电影评论数据进行情感分类研究,通过数据预处理、探索性数据分析、特征工程、模型构建、模型评估等工作,最终模型的F1分值达到0.83,这在文本分类领域,是很不错的效果,可以应用于实际工作中。

# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/1KkRZV_Px_UZwI4ApHpiSOA 
提取码:s9tr
相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
6天前
|
机器学习/深度学习 TensorFlow 调度
使用Python实现深度学习模型:智能能源消耗预测与管理
使用Python实现深度学习模型:智能能源消耗预测与管理
75 30
|
4天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型:智能天气预测与气候分析
使用Python实现深度学习模型:智能天气预测与气候分析
62 3
|
3天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型:智能海洋监测与保护
使用Python实现深度学习模型:智能海洋监测与保护
19 1
|
19小时前
|
机器学习/深度学习 数据采集 消息中间件
使用Python实现智能火山活动监测模型
使用Python实现智能火山活动监测模型
11 1
|
6天前
|
机器学习/深度学习 数据采集 算法
一个 python + 数据预处理+随机森林模型 (案列)
本文介绍了一个使用Python进行数据预处理和构建随机森林模型的实际案例。首先,作者通过删除不必要的列和特征编码对数据进行了预处理,然后应用随机森林算法进行模型训练,通过GridSearchCV优化参数,最后展示了模型的评估结果。
28 0
|
Python 人工智能 小程序
拯救Python新手的几个项目实战
Python 做小游戏 实例一:24点游戏 项目名称:经典趣味24点游戏程序设计(python) 如果你不想错过Python这么好的工具,又担心自学遇到问题无处解决,现在就可以Python的学习q u n 227-435-450可以来了解一起进步一起学习!免费分享视频资料 实例二:五子棋游戏 项目...
3749 0
|
9天前
|
存储 程序员 开发者
Python编程基础:从入门到实践
【10月更文挑战第8天】在本文中,我们将一起探索Python编程的奇妙世界。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。我们将从Python的基本概念开始,然后逐步深入到更复杂的主题,如数据结构、函数和类。最后,我们将通过一些实际的代码示例来巩固我们的知识。让我们一起开始这段Python编程之旅吧!
|
2天前
|
设计模式 开发者 Python
Python编程中的设计模式:从入门到精通####
【10月更文挑战第14天】 本文旨在为Python开发者提供一个关于设计模式的全面指南,通过深入浅出的方式解析常见的设计模式,帮助读者在实际项目中灵活运用这些模式以提升代码质量和可维护性。文章首先概述了设计模式的基本概念和重要性,接着逐一介绍了几种常用的设计模式,并通过具体的Python代码示例展示了它们的实际应用。无论您是Python初学者还是经验丰富的开发者,都能从本文中获得有价值的见解和实用的技巧。 ####
|
10天前
|
机器学习/深度学习 数据采集 数据挖掘
探索Python编程的奥秘
【10月更文挑战第7天】本文将带你走进Python的世界,探索其背后的逻辑与魅力。我们将从基础语法开始,逐步深入到函数、面向对象编程等高级特性,最后通过实际项目案例,让你体验Python的强大与便捷。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启发。
|
11天前
|
IDE 开发工具 Python
Python 编程入门:打造你的第一个程序
【10月更文挑战第6天】编程,这个听起来高大上又充满神秘感的领域,其实就像学习骑自行车一样。一开始你可能会觉得难以掌握平衡,但一旦你学会了,就能自由地穿梭在广阔的道路上。本文将带你走进 Python 的世界,用最简单的方式让你体验编写代码的乐趣。不需要复杂的理论,我们将通过一个简单的例子——制作一个猜数字游戏,来实践学习。准备好了吗?让我们开始吧!