Python版数据挖掘实验5报告:使用朴素贝叶斯进行社会媒体挖掘

Python版数据挖掘实验5报告:使用朴素贝叶斯进行社会媒体挖掘


2024年1月23日发(作者:)

一、实验名称:使用朴素贝叶斯进行社会媒体挖掘

1、实验目的:

使用朴素贝叶斯进行社会媒体挖掘

2、实验内容:

学习朴素贝叶斯算法原理,并使用朴素贝叶斯进行社会媒体挖掘

3、实验环境(设备、软件、实验数据):

设备:笔记本电脑

软件:Python idle

实验数据:python_、python_

4、实验步骤:

1. 安装相关Python库Json、nltk、Numpy、Sklearn、twitter;

2. 从社交网站下载数据;

import twitter

consumer_key = ""

consumer_secret = ""

access_token = ""

access_token_secret = ""

authorization = (access_token, access_token_secret,

consumer_key, consumer_secret)

import os

output_filename = (user("~"),"Data", "twitter", "python_")

import json

t = r(auth=authorization)

3. 获取到Twitter消息,使用json库的dump函数将其转换为字符串形式后,写入到输出文件中;

with open(output_filename, 'a') as output_file:

search_results = (q="python", count=100)['statuses']

for tweet in search_results:

if 'text' in tweet:

output_((tweet))

output_("nn")

4. 加载库,提取消息;

import os

import json

from e_extraction import DictVectorizer

from _bayes import BernoulliNB

import numpy as np

from import TransformerMixin

from nltk import word_tokenize

from _selection import cross_val_score

from ne import Pipeline

# 添加文件路径,路径最好不要出现中文

input_filename = ("../", "Data", "twitter", "python_")

labels_filename = ("../", "Data", "twitter", "python_")

#加载消息。我们只对消息内容感兴趣,因此只提取和存储它们的text值,存在tewwts[]内

tweets = []

with open(input_filename) as inf:

for line in inf:

# strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

if len(()) == 0:

continue

((line)['text'])

#加载数据集:消息的类别(设置消息的类别为1或0)

with open(labels_filename) as inf:

labels = (inf)

5. 构造一个用于抽取特征的类,返回结果为一个元素为字典的列表,第一个字典的各项为第一条消息中的所有词语;

class NLTKBOW(TransformerMixin):

def fit(self, X, y=None):

return self

def transform(self, X):

#word_tokenize 对句子进行分词

return [{word: True for word in word_tokenize(document)} for document in X]

6. 抽取特征,将字典转换为矩阵,分类器安装顺序组装起来,创建流水线,将之前获取的消息导入流水线进行处理,得出结果;

#流水线的每一步都用元组(‘名称’,步骤)来表示。现在来创建流水线。

#具体使用流水线在第三章实验流水线。

pipeline = Pipeline([('bag-of-words', NLTKBOW()), ('vectorizer', DictVectorizer()), ('naive-bayes',

BernoulliNB())])

#通过交叉检验使用流水线,导入数据

scores = cross_val_score(pipeline, tweets, labels, scoring='f1',cv=3)

print("Score: {:.3f}".format((scores)))

输出结果:

5、总结及心得体会:

通过本次实验,我学习朴素贝叶斯算法原理,并使用朴素贝叶斯进行社会媒体挖掘,学会了如何到社交网络上获取数据并进行分析处理。


发布者:admin,转转请注明出处:http://www.yc00.com/news/1705979735a1432829.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信