判断喜欢的电影类型——朴素贝叶斯模型的简单应用(1)
之前我做了一个豆瓣电影信息的爬取 https://blog.csdn.net/weixin_43374551/article/details/84029439 ,共获得了8608部电影的概要信息。现在我们利用这些数据,可以做一些分析。
首先我从这8608部电影中随机挑选了520部我已经看过的电影,挑选方法就是进度条随便拉到哪儿算哪儿,保证了一定的随机性。type这一列代表了我对这些电影的态度,1表示喜欢,0表示不喜欢。
标记完毕,其中正例384个,反例136个。
爬虫提取的信息比较多,本次建模我只选取了类型和制片国家两个指标。类型包括剧情、喜剧、动作、爱情、科幻、动画、悬疑、惊悚、恐怖、犯罪、同性、音乐、歌舞、传记、历史、战争、西部、奇幻、冒险、灾难、武侠、情色共计22个分类;制片国家包括中国大陆、美国、香港、中国台湾、日本、韩国、英国、法国、德国、意大利、西班牙、印度、泰国、俄罗斯、伊朗、加拿大、澳大利亚、爱尔兰、瑞典、巴西、丹麦共计21个分类。
于是将数据处理成如下0-1变量的矩阵
结合之前的博客《机器学习十大经典算法之朴素贝叶斯(学习笔记整理)》 https://blog.csdn.net/weixin_43374551/article/details/83449416
伯努利贝叶斯分类器,可以处理因变量均为0-1变量的数据。
实现的Python代码如下
import pandas as pd
from sklearn import model_selection,naive_bayes,metrics
import matplotlib.pyplot as pltdata=pd.read_excel(r'C:\Users\Administrator\Desktop\豆瓣电影\sample.xlsx')
predictors=data.columns[2:]#拆分为训练集和测试集
x_train,x_test,y_train,y_test=model_selection.train_test_split(data[predictors],data.type,test_size=0.25)#调用伯努利朴素贝叶斯
bnb=naive_bayes.BernoulliNB()
bnb.fit(x_train,y_train)
bnb_pred=bnb.predict(x_test)
#显示预测结果,各类别的预测数量#模型检验
print('模型的准确率为:',metrics.accuracy_score(y_test,bnb_pred))
print('模型的评估报告:\n',metrics.classification_report(y_test,bnb_pred))
#绘制ROC曲线
y_score=bnb.predict_proba(x_test)[:,1]
fpr,tpr,threshold=metrics.roc_curve(y_test,y_score) #.map({'Negative':0,'Positive':1})
roc_auc=metrics.auc(fpr,tpr)
plt.stackplot(fpr,tpr,color='steelblue',alpha=0.5,edgecolor='black')
plt.plot(fpr,tpr,color='black',lw=1)
plt.plot([0,1],[0,1],color='red',linestyle='--')
plt.text(0.5,0.3,'ROC Curve (area=%0.2f)' % roc_auc)
plt.xlabel('l-Specificity')
plt.ylabel('Sensitivity')
plt.show()
得到的结果如下:
从ROC曲线看到,其中AUC=0.83>0.8,可以认为模型拟合效果还是比较理想的。同时,模型在测试集上的整体预测准确率为82.3%,其中正例的预测精确率(precision=该类别正确预测的样本量/该类别预测的总样本量)为87%,覆盖率(recall=该类别正确预测的样本量/该类别实际的样本量)为90%;而负例的预测精确率和覆盖率相对要低一点,总体来讲预测效果还是可以的。
有了这个模型,对于还没有看的电影,就可以通过该电影的类型和制片国家初步判断是不是自己喜欢的一款了,还是不错的!
判断喜欢的电影类型——朴素贝叶斯模型的简单应用(1)相关推荐
- 朴素贝叶斯模型的简单应用
朴素贝叶斯模型是贝叶斯理论中最简单的一类,基本假设有两个,一是特征相互独立,二是特征同等重要,这样可以大大简化计算,虽然在实际中属性之间未必是相互独立的,甚至存在严重的依赖性(此时会用到半朴素贝叶斯模 ...
- 从零开始学Python【38】--朴素贝叶斯模型(实战部分)
[前言] 在<从零开始学Python[37]--朴素贝叶斯模型(理论部分)>中我们详细介绍了朴素贝叶斯算法的基本概念和理论知识,在这一期我们继续介绍该算法的实战案例.将会对高斯贝叶斯.多项 ...
- 朴素贝叶斯模型应用实践
实验四:朴素贝叶斯模型应用实践 一.实验目的 1.了解贝叶斯原理: 2.理解朴素贝叶斯算法原理: 3.掌握朴素贝叶斯工作流程 4.初步应用朴素贝叶斯分类器在分类中应用: 二. 实验内容 (以下实验二选 ...
- 【阿旭机器学习实战】【10】朴素贝叶斯模型原理及3种贝叶斯模型对比:高斯分布朴素贝叶斯、多项式分布朴素贝叶斯、伯努利分布朴素贝叶斯
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文介绍了机器学习中的朴素贝叶斯的基本原理,并对3种贝叶斯模型根据鸢尾花实例进行了比较. 目录 朴 ...
- 机器学习算法之朴素贝叶斯模型
基本原理 从统计学知识回到我们的数据分析.假如我们的分类模型样本是: 即我们有m个样本,每个样本有n个特征,特征输出有k个类别,定义为C1,C2,-,Ck,.从样本我们可以学习得到朴素贝叶斯的先验分布 ...
- 朴素贝叶斯模型及案例(Python)
目录 1 朴素贝叶斯的算法原理 2 一维特征变量下的贝叶斯模型 3 二维特征变量下的贝叶斯模型 4 n维特征变量下的贝叶斯模型 5 朴素贝叶斯模型的sklearn实现 6 案例:肿瘤预测模型 6.1 ...
- 机器学习---朴素贝叶斯模型
机器学习-朴素贝叶斯模型 1.通俗解释: 朴素贝叶斯模型的基本思路就是利用贝叶斯的后验概率公式来推算当前属性下的数据样本属于哪一个类别.直白一点说,就是在特征属性为当前取值的条件下,该样本归属于那个类 ...
- 【机器学习】朴素贝叶斯模型原理
介绍 首先我们需要搞清楚条件概率和联合概率的意思,可以通过下图进行描述: 我们在通过一个图来讲解条件概率的意义: 可知:,即:即为我们的朴素贝叶斯模型 Demo 我们通过一个小的Demo来理解贝叶斯理 ...
- 用朴素贝叶斯模型预测柯南中被害人和凶手!
本文来自公众号:超级数学建模 微信号:supermodeling 作者:周铂 本文长度为3000字,建议阅读5分钟 本文介绍朴素贝叶斯模型通过角色特征(性格.行为.与他人关系等)预测其身份(凶手/被害 ...
最新文章
- 云计算的7种变化方式
- Linux之Vim文本代码编辑神器应用get技巧
- 厉害了!单点登录系统用 8 张漫画就解释了。。。
- Ioc 控制反转 实例
- 【Linux 内核 内存管理】RCU 机制 ① ( RCU 机制简介 | RCU 机制的优势与弊端 | RCU 机制的链表应用场景 )
- python token api_python接口自动化之token登录
- opencv 编译报错(CMake Error: The following variables are used in this project, but they are set to not )
- Oracle导入导出批处理
- Revit族库管理系统
- IMDB.COM排名算法(贝叶斯公式)和Reddit评论排行算法
- catia圆角交点如何标注_Catia怎么使用凸台和倒圆角命令?
- nyoj239 月老的难题 (匈牙利算法,最大匹配,邻接表)
- 网易租赁服务器怎么添加组件,《我的世界》租赁服添加MOD教程 租赁服怎么添加小精灵MOD?...
- Ubuntu 18.04 安装Wine 微信
- rk3288 定时器使用
- 帝国cms内容模板sql语句方式调用当前TAG标签
- [python3.6]爬虫实战之爬取淘女郎图片
- 将王者荣耀头像设置成和微信头像不一样
- 校园购物平台功能说明
- 【渝粤教育】广东开放大学 公共关系实务 形成性考核 (37)