基于情感分析+聚类分析+LDA主题分析对服装产品类的消费者评论分析(文末送书)

news2024/11/28 1:43:06

 

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

1.项目背景

2.数据集介绍

3.技术工具

4.实验过程

4.1加载数据

4.2数据预处理

4.3数据可视化

4.4情感分析

4.5相关性分析

4.6特征重要性分析

4.7聚类分析

4.8LDA主题分析

 5.总结

文末推荐与福利


1.项目背景

        随着互联网和电子商务的迅速发展,越来越多的消费者选择在线购买服装产品。这种趋势带来了海量的消费者评论,这些评论包含了消费者对产品的看法、感受和使用经验,是宝贵的信息资源。对这些评论进行情感分析、聚类分析和LDA主题分析,有助于企业更全面地了解消费者需求,优化产品设计,提高服务质量,从而实现更高的市场竞争力。

        然而,传统的分析方法往往只能提供单一的、浅层次的信息,难以深入挖掘评论中的多维度信息。因此,本研究采用情感分析、聚类分析和LDA主题分析相结合的方法,对服装产品类的消费者评论进行综合分析。通过这种方式,可以更准确地把握消费者的情感倾向、群体特征和关注热点,为企业决策提供更全面、更深入的依据。

具体而言,本研究的研究目标包括:

  1. 通过情感分析,了解消费者对服装产品的整体情感倾向,以及不同产品、不同品牌之间的情感差异。
  2. 通过聚类分析,发现消费者群体的特征和行为模式,为企业制定个性化营销策略提供参考。
  3. 通过LDA主题分析,挖掘评论中的关键主题和关注点,为企业优化产品设计和改进服务质量提供方向。

        综上所述,本研究旨在通过对服装产品类的消费者评论进行综合分析,为企业提供更全面、更深入的市场洞察和决策支持。同时,本研究的方法和结果也可以为其他领域的消费者评论分析提供借鉴和参考。

2.数据集介绍

        本数据集来源于kaggle,原始数据集共有49338条,9个特征变量,各变量含义如下:

Title:评论标题

Review:评论内容

Cons_rating:评价评级

Cloth_class:服饰类型

Materials:布料类型

Construction:布料结构

Color:颜色

Finishing:含义未知,暂且忽略

Durability:耐用性

3.技术工具

Python版本:3.9

代码编辑器:jupyter notebook

4.实验过程

4.1加载数据

首先导入本次实验使用到的第三方库并加载原始数据集

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings("ignore")
import math
rc = {
    "axes.facecolor": "#E6FFE6",
    "figure.facecolor": "#E6FFE6",
    "axes.edgecolor": "#000000",
    "grid.color": "#EBEBE7",
    "font.family": "serif",
    "axes.labelcolor": "#000000",
    "xtick.color": "#000000",
    "ytick.color": "#000000",
    "grid.alpha": 0.4
}
sns.set(rc=rc)
from colorama import Style, Fore
red = Style.BRIGHT + Fore.RED
blu = Style.BRIGHT + Fore.BLUE
mgt = Style.BRIGHT + Fore.MAGENTA
gld = Style.BRIGHT + Fore.YELLOW
res = Style.RESET_ALL
df= pd.read_table("data_amazon.xlsx - Sheet1.csv", delimiter=",")
df.head()

查看数据大小

 查看数据基本信息

可以看出最后五列变量存在大量缺失值,后续需要进行处理 

4.2数据预处理

首先查看原始数据集中的缺失值情况

import missingno as msno
# 缺失值分析
fig, ax = plt.subplots(2,2,figsize=(12,7))
axs = np.ravel(ax)
msno.matrix(df,  fontsize=9, color=(0.25,0,0.5),ax=axs[0]);
msno.bar(df, fontsize=8, color=(0.25,0,0.5), ax=axs[1]);
msno.heatmap(df,fontsize=8,ax=axs[2]);
msno.dendrogram(df,fontsize=8,ax=axs[3], orientation='top')

fig.suptitle('Missing Values Analysis', y=1.01, fontsize=15)
# plt.savefig('missing_values_analysis.png') # 保存图片
plt.show()

填充缺失值并删除重复值 

df.fillna(0, inplace=True)  # 使用0填充缺失值
df = df.drop_duplicates()  # 剔除重复值
df.info()

描述性统计提供了数据集的主要特征的摘要。这包括均值、中位数、标准差、最小值、最大值等度量。 

4.3数据可视化

# 计算每个布料类别的出现频率
cloth_class_counts = df['Cloth_class'].value_counts()
plt.figure(figsize=(8, 8))
plt.pie(cloth_class_counts, labels=cloth_class_counts.index, autopct='%1.1f%%', startangle=140, colors=sns.color_palette('pastel'))
plt.title('Distribution of Cloth Classes', fontsize = 14, fontweight = 'bold', color = 'darkgreen')
plt.axis('equal')  
plt.savefig('Distribution of Cloth Classes.png')
plt.show()

这个饼状图将提供数据集中不同服装类别分布的可视化表示。每个切片代表一个不同的类,切片的大小表示它在数据集中的比例。

# 评级的分布
plt.figure(figsize=(12, 6))
sns.histplot(df['Cons_rating'], kde=True, color='skyblue')
plt.title('Distribution of Cons Ratings', fontsize = 14, fontweight = 'bold', color = 'darkgreen')
plt.xlabel('Cons Rating', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.ylabel('Frequency', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.savefig('Distribution of Con Ratings.png')
plt.show()

这个直方图可视化了“con_rating”的分布。它显示了每个评级在数据集中出现的频率。它有助于理解关于产品缺点的意见分布。

# 优点与缺点评分
plt.figure(figsize=(12, 6))
sns.boxplot(x='Construction', y='Cons_rating', data=df, palette='pastel')
plt.title('Construction vs. Cons Ratings', fontsize = 14, fontweight = 'bold', color = 'darkgreen')
plt.xlabel('Construction', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.ylabel('Cons Rating', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.savefig('Construction vs. Cons Ratings.png')
plt.show()

这个箱形图有助于可视化“Construction”和“con_rating”之间的关系。它显示了不同质量等级的缺点等级的分布。这有助于理解质量和评级之间是否存在相关性。

# 颜色分布
plt.figure(figsize=(12, 6))
sns.countplot(x='Color', data=df, palette='pastel')
plt.title('Distribution of Colors', fontsize = 14, fontweight = 'bold', color = 'darkgreen')
plt.xlabel('Color', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.ylabel('Frequency', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.xticks(rotation=45)
plt.savefig('Distribution of Colors.png')
plt.show()

这个柱状图显示了不同颜色出现的频率。它提供了数据集中颜色分布的概览。

sns.pairplot(df[['Cons_rating', 'Materials', 'Construction', 'Finishing', 'Durability']], diag_kind='kde')
plt.suptitle('Pairplot of Numerical Variables', fontsize = 14, fontweight = 'bold', color = 'darkgreen')
plt.savefig('Pairplot of Numerical Variables.png')
plt.show()

这个成对图显示了数值变量相互之间的散点图,以及每个变量的直方图。它对于可视化数字属性之间的关系和分布非常有用。

df['Review'] = df['Review'].astype(str)
from wordcloud import WordCloud
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(' '.join(df['Review']))
plt.figure(figsize=(10, 6))
plt.imshow(wordcloud, interpolation='bilinear')
plt.title('Word Cloud of Reviews', fontsize = 14, fontweight = 'bold', color = 'darkblue')
plt.axis('off')
# plt.savefig('Word Cloud of Reviews.png') 保存图片
plt.show()

这个词云直观地表示了评论中出现频率最高的单词。每个单词的大小与其频率成正比。它给出了在评论中表达的主要主题或观点的快速概述。

4.4情感分析

        情感分析涉及使用自然语言处理技术来确定一段文本中表达的情感或情感。在本例中,它被应用于“Review”列,以评估评论通常是积极的、消极的还是中立的。

        我们使用TextBlob库,它为常见的NLP任务(包括情感分析)提供了一个简单的API。对于每个评论,我们计算极性,这是一种从-1(消极)到1(积极)的情绪度量。

from textblob import TextBlob
df['Sentiment'] = df['Review'].apply(lambda x: TextBlob(x).sentiment.polarity)
plt.figure(figsize=(12, 4))
sns.histplot(df['Sentiment'], kde=True, color='skyblue')
plt.title('Distribution of Sentiment Scores', fontsize = 14, fontweight = 'bold', color = 'darkgreen')
plt.xlabel('Sentiment Score', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.ylabel('Frequency', fontsize = 12, fontweight = 'bold', color = 'darkblue')
# plt.savefig('Distribution of Sentiment Scores.png')
plt.show()

可以看出评论的情绪分值集中在0.25附近,说明还是正面评论占多数。

4.5相关性分析

这里使用热力图的形式展示变量之间的相关系数的关系

# 删除非数字列
df_numeric = df.drop(columns=['Title', 'Review', 'Cloth_class'])
correlation_matrix = df_numeric.corr()
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title("Correlation Heatmap", fontsize = 14, fontweight = 'bold', color = 'darkblue')
plt.savefig('Correlation Heatmap.png')
plt.show()

4.6特征重要性分析

        特征重要性分析确定哪些变量对预测模型中的目标变量影响最大。它有助于理解哪些属性在做出预测时最具影响力。 我们使用随机森林回归器来估计基于训练模型的特征重要性。

X = df.drop(columns=['Cons_rating', 'Title', 'Review', 'Cloth_class'])
y = df['Cons_rating']
model = RandomForestRegressor()
model.fit(X, y)
feature_importance = pd.Series(model.feature_importances_, index=X.columns).sort_values(ascending=False)

print("\nFeature Importance:")
print(feature_importance)

4.7聚类分析

        聚类是一种用于将相似数据点分组在一起的技术。它有助于发现数据中的模式和结构。我们使用K-Means聚类算法基于“Materials”、“Construction”等属性对项目进行聚类。将结果集群分配给每个项目。

from sklearn.cluster import KMeans
X_cluster = df[['Materials', 'Construction', 'Color', 'Finishing', 'Durability']]
kmeans = KMeans(n_clusters=3, random_state=0).fit(X_cluster)
df['Cluster'] = kmeans.labels_
plt.figure(figsize=(12, 4))
plt.scatter(X_cluster['Materials'], X_cluster['Construction'], c=df['Cluster'], cmap='viridis')
plt.xlabel('Materials', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.ylabel('Construction', fontsize = 12, fontweight = 'bold', color = 'darkblue')
plt.title('Clustering of Materials vs. Construction', fontsize = 14, fontweight = 'bold', color = 'darkgreen')
plt.colorbar(label='Cluster')
plt.savefig('Clustering of Materials vs. Construction.png')
plt.show()
cluster_counts = df['Cluster'].value_counts()
print("Cluster Counts:")
print(cluster_counts)

从聚类的数量以及前面的情感分析结果来看,0类应该是正面评论,1是负面评论,2是中性评论。 

4.8LDA主题分析

        主题建模是一种用于发现文本文档集合中的主题或主题的技术。这有助于理解评论中讨论的主要主题。我们使用一种流行的主题建模算法潜狄利克雷分配(Latent Dirichlet Allocation, LDA)来识别评论中的主题。

from sklearn.decomposition import LatentDirichletAllocation

vectorizer = CountVectorizer(max_features=1000, stop_words='english')
X_nlp = vectorizer.fit_transform(df['Review'])
lda = LatentDirichletAllocation(n_components=5, random_state=0)
topics = lda.fit_transform(X_nlp)

# 找出每个主题的关键词
feature_names = vectorizer.get_feature_names()
top_words = []

for topic_idx, topic in enumerate(lda.components_):
    top_words_idx = topic.argsort()[:-10-1:-1]
    top_words.append([feature_names[i] for i in top_words_idx])

# 打印出每个主题的关键词
for i, words in enumerate(top_words):
    print(f"Topic {i+1}:")
    print(", ".join(words))

 5.总结

        本实验采用情感分析、聚类分析和LDA主题分析相结合的方法,对服装产品类的消费者评论进行了综合分析。通过实验,我们得到了丰富而有价值的结果,以下是对实验的总结:

  1. 情感分析有效地揭示了消费者对服装产品的情感倾向。通过评论的情感标签,我们观察到大部分消费者的情感是积极的,展现了对产品的满意和喜爱。同时,我们也发现了一些负面情感的评论,这为企业提供了改进产品的机会和方向。
  2. 聚类分析帮助我们发现了消费者群体的不同特征和行为模式。通过聚类,我们将消费者划分为不同的群体,每个群体都有其独特的购买偏好和消费习惯。这为企业制定个性化营销策略提供了重要的参考,可以针对不同群体采取不同的推广措施。
  3. LDA主题分析挖掘了评论中的关键主题和关注点。通过主题分析,我们发现消费者关注的主要包括产品质量、舒适度、款式设计、价格等方面。这为企业优化产品设计和改进服务质量提供了明确的方向,可以针对消费者的关注点进行产品改进和提升。

        综上所述,本实验通过对服装产品类的消费者评论进行综合分析,提供了更全面、更深入的市场洞察和决策支持。企业可以根据实验结果,调整产品策略,改进服务质量,提升市场竞争力。同时,本实验的方法和结果也对其他领域的消费者评论分析具有一定的借鉴意义和参考价值。在未来,可以进一步拓展分析方法,结合更多维度的数据,以更准确地洞察消费者需求和市场趋势。

文末推荐与福利

《巧用chatgpt系列》3选1免费包邮送出3本!

内容简介:         

        随着人工智能技术的迅速发展,越来越多的工具和应用程序被应用于职场中,以提高我们的工作效率。其中,ChatGPT作为一种先进的自然语言处理技术,正在逐渐引起人们的关注。

        巧用ChatGPT系列书籍:《巧用chatGPT快速搞定数据分析》《 巧用ChatGPT快速提高职场晋升力》《巧用ChatGPT玩转新媒体运营》由北京大学出版社出版,介绍ChatGPT在职场中的实际应用,以及它如何帮助我们提高工作效率、解决工作中遇到的问题以及提升职业技能。随着人工智能技术的不断发展和应用的深入,相信ChatGPT将会成为我们工作生活中的得力助手。

  • 抽奖方式:评论区随机抽取3位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,拒绝内卷!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-11-11 20:00:00
  • 《巧用chatGPT快速搞定数据分析》

    京东购买链接:https://item.jd.com/13810483.html

    《 巧用ChatGPT快速提高职场晋升力》

    京东购买链接:https://item.jd.com/13832713.html

    《巧用ChatGPT玩转新媒体运营》

    京东购买链接:https://item.jd.com/14141370.html

 名单公布时间:2023-11-11 21:00:00 

免费资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

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

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

相关文章

MKL.NET:为.NET开发者提供高性能数学计算支持的开源库

目录 01 项目简介02 主要功能03 项目结构04 项目地址 MKL是英特尔推出的一套功能强大、性能优化的数学库,主要是采用C/C编写的。今天给大家推荐一个MKL的.Net版本,让我们无需与C/C打交道,方便我们集成到应用开发中去。 01 项目简介 MKL.NET…

智能机器人云控平台

智能机器人云控平台主要是通过打造一个低速固定场景下的机器人自主完成既定作业的模式。整体平台融合的自动化驾驶感知终端,物联网通信,数据接入中心,数据管理中心,模型中心及开放中心等,以一个云平台来掌控多个多种不…

ElementUI的Dialog弹窗实现拖拽移动功能

实现ElementUI的Dialog弹窗可以拖拽移动 实现步骤: 1.创建自定义指令 在utils文件夹下新建文件夹 utils/directive/el-dragDialog/index.js import drag from ./dragconst install function(Vue) {Vue.directive(el-drag-dialog, drag) }if (window.Vue) {windo…

电机应用-步进电机

步进电机(脉冲电机) 基于最基本的电磁铁原理,是一种可以自由回转的电磁铁,其工作原理是依靠气隙磁导的变化来产生电磁转矩。 由于步进电机是一个可以把电磁脉冲转换成机械运动的装置,具有很好的数据控制特性&#xff0…

解决问题:IDEA启动微服务项目,显示Loaded classes are up to date. Nothing to reload.

先说结论,再讲相声: 开启Shorten Command Line 选择JARmanifest 今天启动微服务,就有这么寸,其他的服务启动的好好的,唯独我需要Debug的项目无法启动,只能Run运行 满世界找答案无非就是几种:…

第二证券:今日投资前瞻:PPP迎来新机制,消费电池需求有望迎来复苏

11月8日,两市股指盘中轰动回落,尾盘逐渐止跌。到收盘,沪指跌0.16%报3052.37点,深成指微跌0.04%报10052.09点,创业板指涨0.02%报2023.13点,科创50指数涨0.92%;两市估计成交10366亿元,…

图文详解 VCF 生信格式 (变异信息)

文章目录 一、vcf 格式介绍二、vcf 资源文件三、vcf 文件详解3.1 主要字段3.2 INFO 中的常见信息3.3 FORMAT 和 SAMPLEs 中的信息 四、vcf 的记录模式4.1 只记录变异本身的信息4.2 记录个体或个体组织的变异信息4.3 记录群体或家系的变异信息 五、记录标准5.1 记录多核苷酸多样…

第二证券:长期停牌一般是多久?

股票停牌不仅仅是个股的问题,它或许会影响到商场的整体运作和投资者的利益。那么,长期停牌一般是多久呢?从不同的视点分析,可以得到不同的答案。 1. 官方规则 首要,咱们需求查看相关规则。依据证监会规则&#xff0c…

经典猜数游戏(python类封装)

五次机会猜测100以内随机正整数,我用初通的python类封装了代码并清屏上一次猜测提示,难有所增加咯。 (笔记模板由python脚本于2023年11月09日 12:31:30创建,本篇笔记适合掌握python循环和条件分支语句用法,初通python类的coder翻阅…

开设自己的网站系类01购买服务器

开始建设自己的网站吧! 编者买了一个服务器打算自己构建一个网站,用于记录生活。网站大概算是一个个人博客吧。记录创建过程的一些步骤 要开设自己的网站,需要执行以下关键步骤 以下只是初步列出了建立自己的网站的大概步骤,后…

用Python的requests库来模拟爬取地图商铺信息

由于谷歌地图抓取商铺信息涉及到API使用和反爬虫策略,直接爬取可能会遇到限制。但是,我们可以使用Python的requests库来模拟爬取某个网页,然后通过正则表达式或其他文本处理方法来提取商铺信息。以下是一个简单的示例: # 导入requ…

【transfer 自定义封装】

【transfer 自定义封装穿梭框-适用用手机端】 tag组件穿梭组件使用示例tag组件 <!--多选按钮组--> <template><div><div v-for="option in options" :key="option.value" class=check_style><van-button:size="size"…

虚假内容检测,谣言检测,不实信息检测,事实核查;纯文本,多模态,多语言;数据集整理

本博客系博主个人理解和整理所得&#xff0c;包含内容无法详尽&#xff0c;如有补充&#xff0c;欢迎讨论。 这里只提供数据集相关介绍和来源出处&#xff0c;或者下载地址等&#xff0c;因版权原因不提供数据集所含的元数据。如有需要&#xff0c;请自行下载。 “Complete d…

redisson中的分布式锁

文章目录 redisson中的分布式锁可重入锁&#xff08;Reentrant Lock&#xff09; redisson中的分布式锁 ​ Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的分布式的Java常用对象&#xff0c;还提供…

【不正经操作】百度深度学习框架paddlepaddle本地运行-Python环境配置笔记

百度深度学习框架PaddlePaddle 百度深度学习框架PaddlePaddle是一个支持深度学习和机器学习的开源框架。它由百度公司于2016年开发并发布&#xff0c;现在已经成为中国最受欢迎的深度学习框架之一&#xff0c;并且在国际上也获得了不少关注。 特点与功能 易于使用 PaddlePa…

渗透测试学习day3

文章目录 靶机&#xff1a;DancingTask 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8 靶机&#xff1a;RedeemerTask 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8Task 9Task 10Task 11 靶机&#xff1a;AppointmentTask 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8Task 9T…

RAW图像处理软件Capture One 23 Enterprise mac中文版功能特点

Capture One 23 Enterprise mac是一款专业的图像处理软件&#xff0c;旨在为企业用户提供高效、快速和灵活的工作流程。 Capture One 23 Enterprise mac软件的特点和功能 强大的图像编辑工具&#xff1a;Capture One 23 Enterprise提供了一系列强大的图像编辑工具&#xff0c;…

开发知识点-golang

golang语言学习 环境搭建win10配置go环境 ubuntu20.04安装golang介绍下载 Go 压缩包调整环境变量验证 Go 安装过程 环境搭建 win10配置go环境 中文网进行下载 https://studygolang.com/dl 配置环境变量 增加GOROOT: 新建 -->变量名为: GOROOT(必须大写) 变量值: 你安装…

不到200一个成长枪皮?成长枪皮返厂,普适性入手方案都在这了

RT&#xff0c;有那种CDKEY换了GB的方案不算。因为有的已经换不了了。 晚秋活动的GB也不算&#xff0c;因为有的人压根没做。或者人就脸黑&#xff08;比如我&#xff09;。所以如果你能省下来一笔GB&#xff0c;那么恭喜你。 视频的文字版。 就是4个成长枪皮啊。可以抽奖或者…

苹果手机如何备份通讯录?看完这篇就懂了!

如果遇到手机丢失或者出现故障的情况&#xff0c;通讯录备份可以避免联系人信息丢失。另外&#xff0c;当用户更换手机或者进行数据迁移时&#xff0c;提前备份好的通讯录数据可以快速还原到新设备上&#xff0c;避免了手动输入联系人的麻烦。苹果手机如何备份通讯录&#xff1…