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

2023-01-12 05:22:13   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《Python版数据挖掘实验5报告:使用朴素贝叶斯进行社会媒体挖掘》,欢迎阅读!
叶斯,数据挖掘,朴素,挖掘,实验
一、实验名称:使用朴素贝叶斯进行社会媒体挖掘



1、实验目的:

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

2、实验内容:

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

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



设备:笔记本电脑 软件Python idle

实验数据:python_classes.datapython_tweets.data



4、实验步骤:

1. 安装相关PythonJsonnltkNumpySklearntwitter 2. 从社交网站下载数据;

import twitter

consumer_key = "" consumer_secret = "" access_token = ""

access_token_secret = ""

authorization = twitter.OAuth(access_token, access_token_secret, consumer_key, consumer_secret)

import os

output_filename = os.path.join(os.path.expanduser("~"),"Data", "twitter", "python_tweets.json") import json

t = twitter.Twitter(auth=authorization)



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

输出文件中; with open(output_filename, 'a') as output_file:

search_results = t.search.tweets(q="python", count=100)['statuses'] for tweet in search_results: if 'text' in tweet: output_file.write(json.dumps(tweet)) output_file.write("\n\n")



4. 加载库,提取消息; import os import json


from sklearn.feature_extraction import DictVectorizer from sklearn.naive_bayes import BernoulliNB import numpy as np

from sklearn.base import TransformerMixin from nltk import word_tokenize

from sklearn.model_selection import cross_val_score from sklearn.pipeline import Pipeline

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

input_filename = os.path.join("../", "Data", "twitter", "python_tweets.json") labels_filename = os.path.join("../", "Data", "twitter", "python_classes.json")

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

with open(input_filename) as inf: for line in inf:

# strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 if len(line.strip()) == 0: continue

tweets.append(json.loads(line)['text'])

#加载数据集:消息的类别(设置消息的类别为10 with open(labels_filename) as inf: labels = json.load(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)


本文来源:https://www.dy1993.cn/9SZK.html

相关推荐