鱼C论坛

 找回密码
 立即注册
查看: 8148|回复: 51

[作品展示] python 机器学习:通过评论预测十部动漫

[复制链接]
发表于 2021-8-22 17:24:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小伤口 于 2021-8-22 23:59 编辑

python 机器学习:预测十部动漫


程序效果

数据是由本人自己通过爬虫爬取 b 站评论制作的

目前只支持以下十部动漫预测


QQ截图20210822152728.png

为了更直观一点外观也用了 Tkinter 当界面,看看实现效果怎么样吧
我去腾讯视频找评论进行预测

(界面默认是罗小黑封面)
预测《刺客伍六七》

QQ截图20210822153642.png QQ截图20210822153817.png QQ截图20210822153832.png

预测之后顺便爬取 B 站封面(之前已经用爬虫爬取下载地址与简介,所以这个程序并没有爬取简介图片的代码

如果想要我也可以把这个代码分享出去

预测《天宫赐福》

QQ截图20210822155039.png QQ截图20210822155009.png QQ截图20210822154843.png

貌似效果不错~

不过他的预测准确率只有 60.9% 有一半多一些的准确率

造成这样的主要原因,是我做的数据数量太少了 ,总共只有 10w 左右的数据,除去测试集
也只有不到十万拿来做训练,不过只要评论偏向动漫内容,一般预测的准确率还是挺高的
我会一直更新数据的,力求将预测准确率达到 80% 以上 ,并且增加更多的动漫类别

需要安装的库

  1. pip install requests
复制代码
  1. pip3 install pillow
复制代码
  1. pip3 install pandas
复制代码
  1. pip install -U scikit-learn
复制代码
  1. pip3 install Beautifulsoup4
复制代码
  1. pip3 install lxml
复制代码
  1. pip install jupyter
复制代码
(非必须)


数据制作
我会不定时更新关于 B 站评论的数据,到时候帖子也会进行提示
大家点击下面的链接就可以下载到最新的数据(文件名称有更新时间)
数据
如果大家自己想更新数据集我这儿也有更新的脚本,有详细注释,和操作说明跟着一步步来就可实现更新
制作数据集

数据集图片:

QQ截图20210822163609.png QQ截图20210822163722.png

爬取原理和过程       

经过分析得知 b站评论存储在 有 main 名字的 json 文件中
https://api.bilibili.com/x/v2/reply/main?callback=jQuery1720002087738314316301_1629621752570&jsonp=jsonp&next=0&type=1&oid=7961887&mode=3&plat=1&_=1629621766385

然而我们却并不能打开网址,通过百度得知只要删除 callback 和 _ 参数就可以访问了
爬虫代码:


游客,如果您要查看本帖隐藏内容请回复


这里面也包含了将除中文以外所有的符号删除
这里简单爬取一下来演示
爬取完成之后打开文件
QQ截图20210822165045.png

然后通过下面代码(文件中是 Brief.py 文件)进行简单数据处理
  1. #简单处理数据
  2. import pandas as pd
  3. #修改路径即可
  4. #读取你要处理数据

  5. a=pd.read_csv("凸变英雄LEAF.csv")
  6. b=pd.DataFrame(a,columns=["Name","Comment"])

  7. #添加列
  8. b['Name']="《凸变英雄LEAF》"

  9. #数据去重
  10. b=b.drop_duplicates(keep='last')
  11. #重新保存
  12. b.to_csv('凸变英雄LEAF.csv')
复制代码




就变成这样
QQ截图20210822165303.png
大家想爬取其他的就直接改名字就好了

机器学习

数据爬取的差不多的时候,就把文件放在数据集文件中


  1. #获取数据
  2.     print("获取数据中...")
  3.    
  4.     Tu=pd.read_csv("数据集\凸变英雄LEAF.csv")
  5.     Hui=pd.read_csv("数据集\辉夜大小姐想让我告白?~天才们的恋爱头脑战~.csv")
  6.     Ling=pd.read_csv("数据集\灵笼.csv")
  7.     Luo=pd.read_csv("数据集\罗小黑战记.csv")
  8.     Qi=pd.read_csv("数据集\齐木楠雄的灾难.csv")
  9.     Tian=pd.read_csv("数据集\天宫赐福.csv")
  10.     Wu=pd.read_csv("数据集\伍六七之玄武国篇.csv")
  11.     Xiao=pd.read_csv("数据集\小林家的龙女仆.csv")
  12.     Zai=pd.read_csv("数据集\在下坂本,有何贵干?.csv")
  13.     Zhou=pd.read_csv("数据集\咒术回战.csv")

  14.     #数据处理
  15.     print("数据处理中...")
  16.    
  17.     #数据拼接
  18.     Data=pd.concat([Tu,Hui,Ling,Luo,Qi,Tian,Wu,Xiao,Zai,Zhou],axis=0)
  19.     Data=Data.drop('Unnamed: 0', 1)

  20.     print("数据拼接成功...")
复制代码



以上代码是将读取的所有数据进行拼接整合在一起

然后将数据中的空值删除,以及将中文的语气词之类无用的词语删掉
停用词存放在一个 txt 文件中加载他进行删除

  1. #清洗空值
  2.     Data1=Data.dropna()
  3.     print("成功清洗数据")
  4.    
  5.     print("正在进行数据构建..")   
  6.     #将Name类转换成id
  7.     Data1["Name_id"]=Data1['Name'].factorize()[0]

  8.     Name_id_N = Data1[['Name', 'Name_id']].drop_duplicates().sort_values('Name_id').reset_index(drop=True)
  9.     id_Name = dict(Name_id_N[['Name_id', 'Name']].values)

  10.     print("正在进行中文分词")
  11.     #加载停用词
  12.     stop_words=StopWords("StopWords.txt")

  13.    
  14.     print("删掉无用数据中..")
  15.     #分词,并过滤停用词
  16.     Data1['Comment'] = Data1['Comment'].apply(lambda x: " ".join([w for w in list(jieba.cut(x)) if w not in stop_words]))

  17.     print("数据处理完毕")
  18.     #数据集划分
  19.     x_train,x_test,y_train,y_test=train_test_split(Data1["Comment"],Data1["Name_id"],test_size=0.2,random_state=100)
  20.     print("数据集划分成功")

复制代码


数据处理完成就开始特征工程

  1. #特征处理-特征提取-tfid
  2.     #实例化一个转换器
  3.     print("正在进行特征工程")
  4.     count_vect = CountVectorizer()
  5.     transfer=TfidfVectorizer(norm='l2', ngram_range=(1, 2))
  6.     x_train=transfer.fit_transform(x_train)
  7.     x_test=transfer.transform(x_test)
复制代码


tfid 简单来说就是体现一个词语在文章的重要程度

最后就是算法和建立模型了

  1. #朴素贝叶斯算法预估器流程
  2.     bayes=MultinomialNB(alpha=1.0)
  3.     #建立模型
  4.     bayes.fit(x_train,y_train)
  5.     print("模型建立成功")

  6.     print("启动程序。。。")
复制代码


这里用的算法是朴素贝叶斯算法

完整代码

游客,如果您要查看本帖隐藏内容请回复


运行结果:
真实值
[5 3 9 ... 4 8 9]
真实值与测试值比对
7978    False
8292     True
5712     True
2829    False
6233     True
        ...  
478      True
4713    False
6072    False
1369     True
4396     True
Name: Name_id, Length: 23518, dtype: bool
准确率
0.6097457266774385
Forecast("来了 他来了 他带着剪刀走来了🙃")
《伍六七之玄武国篇》
6
Forecast("齐神yyds!又来回顾了")
《齐木楠雄的灾难》
4
Forecast("怎么赤司征十郎在里面")
《齐木楠雄的灾难》
4
Forecast("小白的爸爸为什么我总是看不见他的脸呢?总是用报纸给他蒙上了。")
《罗小黑战记》
3
Forecast("小黑真萌,比丢真憨,哈哈")
《罗小黑战记》
3
Forecast("最后一个片段真的很感动啊,隐隐约约把谢怜花城的800年来由啥的都交代了,特别是配乐也太合适了啊,让我重新感受到看天官时的感动,“惊鸿一瞥,百世沦陷”的爱情,我们作为一个旁观者,也能感受到那至死不渝的感情以及感动…天官赐福,百无禁忌!")
《天宫赐福》
5


游客,如果您要查看本帖隐藏内容请回复

运行请双击 main.py 文件


exe文件请关注小伤口公众号回复预测怪获取
(不建议下载文件有点大 200 多 MB)
(但建议关注小伤口公众号
        exe文件运行请找到dist 文件夹里面找到 main.exe(很好找的有专属图标)




还要下载 jieba 库进行中文分词

评分

参与人数 9荣誉 +41 鱼币 +41 贡献 +15 收起 理由
cjjJasonchen + 5 + 5 + 3 感谢楼主无私奉献!
YYL爱吃小甲鱼 + 5 + 5 + 3 wow 楼主太厉害了
糖甜弯了嘴 + 5 + 5 + 3 鱼C有你更精彩^_^
qq1151985918 + 5 + 5 无条件支持楼主!
hrpzcf + 5 + 5 + 3 鱼C有你更精彩^_^
hrp + 5 + 5 鱼C有你更精彩^_^
Ⅲ只小猪 + 1 + 1 鱼C有你更精彩^_^
0HB + 5 + 5 + 3 感谢楼主无私奉献!学习!
青出于蓝 + 5 + 5 学习学习,厉害!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-22 17:34:49 | 显示全部楼层
沙发求评分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-22 18:03:31 From FishC Mobile | 显示全部楼层
程序第一次启动时,耗时可能会比较长
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-23 09:04:50 | 显示全部楼层

回帖奖励 +2 鱼币

大佬666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-23 09:50:40 | 显示全部楼层

回帖奖励 +2 鱼币

66666666666666666666666666666666666666666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-23 10:10:22 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-23 11:42:02 | 显示全部楼层

回帖奖励 +2 鱼币

厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-23 16:15:10 | 显示全部楼层

回帖奖励 +2 鱼币

。。太牛了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-23 16:29:20 | 显示全部楼层

回帖奖励 +2 鱼币

哇,这个好强。
最近也在学习机器学习(keras),感觉很难
赞!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-23 17:52:48 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-23 23:30:45 From FishC Mobile | 显示全部楼层
青出于蓝 发表于 2021-8-23 16:29
哇,这个好强。
最近也在学习机器学习(keras),感觉很难
赞!

过奖了,我也感觉很难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 08:24:11 | 显示全部楼层

回帖奖励 +2 鱼币

学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-24 09:32:10 | 显示全部楼层

回帖奖励 +2 鱼币

大佬牛批,支持一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 10:00:15 | 显示全部楼层

回帖奖励 +2 鱼币

大佬66666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 11:19:09 | 显示全部楼层

回帖奖励 +2 鱼币

牛蛙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-24 11:34:49 | 显示全部楼层

回帖奖励 +2 鱼币

学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-24 16:33:49 | 显示全部楼层

回帖奖励 +2 鱼币

大佬,都哪些网站可以爬啊?一般的常规网站不涉及违法的都能爬吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 17:20:26 | 显示全部楼层

回帖奖励 +2 鱼币

挣鱼币做作业
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 19:31:41 From FishC Mobile | 显示全部楼层
隐市仙 发表于 2021-8-24 16:33
大佬,都哪些网站可以爬啊?一般的常规网站不涉及违法的都能爬吗?

其实一般只需要一个人用,都没啥事,如果你因为爬取内容导致服务器出问题,或者赚了好多钱出名了这些,应该会有危险吧哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 21:57:38 | 显示全部楼层

回帖奖励 +2 鱼币

kankan
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 22:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表