|  | 
 
| 
本帖最后由 小伤口 于 2021-8-22 23:59 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 
 python 机器学习:预测十部动漫  
 程序效果
 
 数据是由本人自己通过爬虫爬取 b 站评论制作的
 
 目前只支持以下十部动漫预测
 
 
 
   
 为了更直观一点外观也用了 Tkinter 当界面,看看实现效果怎么样吧
 我去腾讯视频找评论进行预测
 
 (界面默认是罗小黑封面)
 预测《刺客伍六七》
 
 
       
 预测之后顺便爬取 B 站封面(之前已经用爬虫爬取下载地址与简介,所以这个程序并没有爬取简介图片的代码
 
 如果想要我也可以把这个代码分享出去
  ) 
 预测《天宫赐福》
 
 
       
 貌似效果不错~
   
 不过他的预测准确率只有 60.9% 有一半多一些的准确率
 
 造成这样的主要原因,是我做的数据数量太少了
  ,总共只有 10w 左右的数据,除去测试集 也只有不到十万拿来做训练,不过只要评论偏向动漫内容,一般预测的准确率还是挺高的
   我会一直更新数据的,力求将预测准确率达到 80% 以上
  ,并且增加更多的动漫类别 
 需要安装的库
 
 
 复制代码pip install -U scikit-learn
(非必须)复制代码pip3 install Beautifulsoup4 
 
 数据制作
 我会不定时更新关于 B 站评论的数据,到时候帖子也会进行提示
 大家点击下面的链接就可以下载到最新的数据(文件名称有更新时间)
 数据
 如果大家自己想更新数据集我这儿也有更新的脚本,有详细注释,和操作说明跟着一步步来就可实现更新
 制作数据集
 
 数据集图片:
 
 
     
 爬取原理和过程
 
 经过分析得知 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 和 _ 参数就可以访问了
 
 
 
 
 这里面也包含了将除中文以外所有的符号删除
 这里简单爬取一下来演示
 爬取完成之后打开文件
 
   
 然后通过下面代码(文件中是 Brief.py 文件)进行简单数据处理
 
 复制代码#简单处理数据
import pandas as pd
#修改路径即可
#读取你要处理数据
a=pd.read_csv("凸变英雄LEAF.csv")
b=pd.DataFrame(a,columns=["Name","Comment"])
#添加列
b['Name']="《凸变英雄LEAF》"
#数据去重
b=b.drop_duplicates(keep='last')
#重新保存
b.to_csv('凸变英雄LEAF.csv')
 
 
 就变成这样
 
   大家想爬取其他的就直接改名字就好了
   
 机器学习
 
 数据爬取的差不多的时候,就把文件放在数据集文件中
 
 
 
 复制代码#获取数据
    print("获取数据中...")
    
    Tu=pd.read_csv("数据集\凸变英雄LEAF.csv")
    Hui=pd.read_csv("数据集\辉夜大小姐想让我告白?~天才们的恋爱头脑战~.csv")
    Ling=pd.read_csv("数据集\灵笼.csv")
    Luo=pd.read_csv("数据集\罗小黑战记.csv")
    Qi=pd.read_csv("数据集\齐木楠雄的灾难.csv")
    Tian=pd.read_csv("数据集\天宫赐福.csv")
    Wu=pd.read_csv("数据集\伍六七之玄武国篇.csv")
    Xiao=pd.read_csv("数据集\小林家的龙女仆.csv")
    Zai=pd.read_csv("数据集\在下坂本,有何贵干?.csv")
    Zhou=pd.read_csv("数据集\咒术回战.csv")
    #数据处理
    print("数据处理中...")
    
    #数据拼接
    Data=pd.concat([Tu,Hui,Ling,Luo,Qi,Tian,Wu,Xiao,Zai,Zhou],axis=0)
    Data=Data.drop('Unnamed: 0', 1)
    print("数据拼接成功...")
 
 以上代码是将读取的所有数据进行拼接整合在一起
 
 然后将数据中的空值删除,以及将中文的语气词之类无用的词语删掉
 停用词存放在一个 txt 文件中加载他进行删除
   
 
 复制代码#清洗空值
    Data1=Data.dropna()
    print("成功清洗数据")
    
    print("正在进行数据构建..")    
    #将Name类转换成id
    Data1["Name_id"]=Data1['Name'].factorize()[0]
    Name_id_N = Data1[['Name', 'Name_id']].drop_duplicates().sort_values('Name_id').reset_index(drop=True)
    id_Name = dict(Name_id_N[['Name_id', 'Name']].values)
    print("正在进行中文分词")
    #加载停用词
    stop_words=StopWords("StopWords.txt")
    
    print("删掉无用数据中..")
    #分词,并过滤停用词
    Data1['Comment'] = Data1['Comment'].apply(lambda x: " ".join([w for w in list(jieba.cut(x)) if w not in stop_words]))
    print("数据处理完毕")
    #数据集划分
    x_train,x_test,y_train,y_test=train_test_split(Data1["Comment"],Data1["Name_id"],test_size=0.2,random_state=100)
    print("数据集划分成功")
 数据处理完成就开始特征工程
 
 
 复制代码#特征处理-特征提取-tfid
    #实例化一个转换器
    print("正在进行特征工程")
    count_vect = CountVectorizer()
    transfer=TfidfVectorizer(norm='l2', ngram_range=(1, 2))
    x_train=transfer.fit_transform(x_train)
    x_test=transfer.transform(x_test)
 tfid 简单来说就是体现一个词语在文章的重要程度
 
 最后就是算法和建立模型了
 
 
 复制代码#朴素贝叶斯算法预估器流程
    bayes=MultinomialNB(alpha=1.0)
    #建立模型
    bayes.fit(x_train,y_train)
    print("模型建立成功")
    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
 [b]
 运行请双击 main.py 文件
 [/b]
 
 exe文件请关注小伤口公众号回复预测怪获取
 (不建议下载文件有点大 200 多 MB)
 (但建议关注小伤口公众号
  ) exe文件运行请找到dist 文件夹里面找到 main.exe(很好找的有专属图标)
   
 
   
 
 还要下载 jieba 库进行中文分词
 | 
 评分
查看全部评分
 |