[DA45] 使用apriori分析导演选择演员倾向

挖掘导演最爱用的演员 关联规则-FPGrowph 概要 FP的全称是Frequent Pattern,在算法中使用了一种称为频繁模式树(Frequent Pattern Tree)的数据结构。FP-tree是一种特殊的前缀树,由频繁项头表和项前缀树构成。FP-Growth算法基于以上的结构加快整个挖掘过程。 Aprior Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们... 阅读详情

        Apriori是常用的关联规则挖掘方法之一, 本例为关联规则挖掘实战练习, 通过python自动化爬虫抓取豆瓣电影中某导演的电影名和演员, 通过apriori算法看出来其选择演员的倾向。

一. 网络爬虫

        本例选择冯小刚导演为分析对象, 先进入豆瓣搜索冯小刚, 分析带爬取的网页:

1. url分析

    首页网址为:

        https://movie.douban.com/subject_search?search_text=冯小刚&cat=1002&start=0

    第二页网址为:

        https://movie.douban.com/subject_search?search_text=冯小刚&cat=1002&start=15

    在查看之后需要爬取的网址, 可以确定网页变化的规律为, 每翻一页'start=' 后面的数字增值15, 其他不变.

2. 页面模块分析

    除首页有16条数据(首页页首多出导演介绍)和末页以外, 其他页均包含15条数据, 通过对源代码分析, 可用Xpath定位每条数据的电影名和演员表, 其中演员表第一位为导演名, 由于网页中存在冯小刚不导演但参演的电影, 如"功夫", 所以可以通过第一位筛除不是冯小刚导演的电影.

首页
第二页

        利用python中的selenium自动化工具, 通过火狐浏览器爬取冯小刚导演的电影名及演员信息, 遇到某页信息不足15条时判定为末页, 在末页爬取完毕或爬取完10000条电影数据后结束自动化爬取, 同时把数据写入本地'冯小刚.csv'文件, 在写入时, 用相应电影名代替导演名, 得到全部'电影-演员'数据.

       爬虫代码:

# -*- coding:utf-8 -*-
from lxml import etree
from selenium import webdriver
import time
import csv


driver = webdriver.Firefox()
# 设置想要下载的导演 数据集
director = '冯小刚'
# 写CSV 文件
file_name = './' + director + '.csv'
base_url = 'https://movie.douban.com/subject_search?search_text=' + director + '&cat=1002&start='
out = open(file_name, 'w', newline='', encoding='utf-8-sig')
csv_write = csv.writer(out, dialect='excel')

# 下载指定页面的数据
# 定义每页抓取函数
def download(request_url):
    driver.get(request_url)
    time.sleep(1)
    html = driver.find_element_by_xpath("//*").get_attribute("outerHTML")
    html = etree.HTML(html)
    # 设置电影名称,导演演员 的 XPATH
    movie_lists = html.xpath(
        "/html/body/div[@id='wrapper']/div[@id='root']/div[1]//div[@class='item-root']/div[@class='detail']/div[@class='title']/a[@class='title-text']")
    name_lists = html.xpath(
        "/html/body/div[@id='wrapper']/div[@id='root']/div[1]//div[@class='item-root']/div[@class='detail']/div[@class='meta abstract_2']")
    # 获取返回的数据个数
    num = len(movie_lists)
    if num > 15:        # 第一页会有 16 条数据,其中第一条为导演介绍 需要去掉
        movie_lists = movie_lists[1:]
        name_lists = name_lists[1:]
    for (movie, name_list) in zip(movie_lists, name_lists):
        # 会存在数据为空的情况
        if name_list.text is None:
            continue
        # 显示下演员名称
        print(name_list.text)
        names = name_list.text.split('/')
        # 判断导演是否为指定的 director
        if names[0].strip() == director:
            # 将第一个字段设置为电影名称
            names[0] = movie.text
            csv_write.writerow(names)
    print('OK')  # 代表这页数据下载成功
    if num >= 15:
        # 继续下一页
        return True
    else:
        # 没有下一页
        return False


# 设置开始的ID为0,每页增加 15
start = 0
while start < 10000:  # 最多抽取1万部电影
    request_url = base_url + str(start)
    # 下载数据,并返回是否有下一页
    flag = download(request_url)
    if flag:
        start = start + 15
    else:
        break
out.close()
print('finished')

        打印信息:

        爬取数据文件截图:

冯小刚.csv

        在文件中可以看到, 冯小刚导演的非电影型节目, 如"2014年中央电视台春节联欢晚会" 也被爬取并存入了文件, 在此手动删除了第20、24、25、26行非电影型数据.

二. 关联分析

        python中的第三方工具包efficient_apriori提供了apriori算法关联规则分析, 通过传入list类型数据, 最小支持度和最小置信度参数, 可获得相应的频繁项集和关联规则.

        首先读取.csv文件, 对演员名进行去空格处理后生成每个电影的演员名列表, 最后使用efficient_apriori中的apriori方法得到频繁项集itemsets和关联规则rules.

        关联规则代码:

# -*- coding: utf-8 -*-
from efficient_apriori import apriori
import csv

director = '冯小刚'
file_name = './'+director+'.csv'
lists = csv.reader(open(file_name, 'r', encoding='utf-8-sig'))
# 数据加载
data = []
for names in lists:
     name_new = []
     for name in names:
           name_new.append(name.strip())    # 去掉演员数据中的空格
     data.append(name_new[1:])      # 去掉电影名, 加入列表

# 挖掘频繁项集和关联规则
itemsets, rules = apriori(data, min_support=0.15,  min_confidence=1)
print(itemsets)
print(rules)

        通过调整最小支持度和最小执行度, 在最小支持度为0.15, 最小置信度为1, 得到如下结果:

        由此可以得到, 冯小刚导演比较喜欢用的演员是张国立, 徐帆, 葛优, 且在张国立参演时, 徐帆一般也会参演此电影.

 

PS: 由于豆瓣电影爬取网页中有包含某中间页数据不足15条的情况, 如张艺谋导演第三页只有14条,

       在自动化爬取中需要灵活调整代码第48行 if num >= 15:  的数值, 使爬取信息得以完全.

 

 

相关数据及请点击: GitHub

白话机器学习算法理论+实战之关联规则 1. 写在前面 如果想从事数据挖掘和数据分析的工作,掌握常用的机器学习算法是非常有必要的,比如我之前写过的一篇十大机器学习算法的小总结,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Adaboost等 无监督算法:聚类,降维,关联规则等 为了详细的理解这些,曾经看过西瓜书,统计学习方法,机器学习实战等书,也听过一些... 阅读详情

相关推荐

【管理科学】第三十五篇 企业经营中的管理科学01 权力、风险、运营、物流、人力资源、库存、合同、品牌、业绩、项目

编号类型领域子领域/内容问题问题的数学分析(电磁/信息论/数学物理/数学化学/界面科学/表面科学 + 几何/拓扑/代数/集合论/图论/数论/函数评估/数值估计/概率/统计/向量/张量/矩阵/矢量 + 其他)算法逐步推理思考的数学表达式及实现步骤及时序流程 参数列表及参数的数值范围及数值分析及常量/常数1管理科学问题运营管理生产计划如何分配有限资源生产多种产品以最大化利润?线性代数、凸优化、单纯形法;向量与矩阵目标函数 max c^T x,约束 Ax ≤ b, x ≥ 0。步骤:①标准化引入松弛变量;②构建初

weixin_49199313的博客 247

Python数据挖掘入门与实践(四)之Apriori算法推荐电影

第四章 用亲和性分析方法推荐电影 基于《python数据挖掘入门与实践》这一书的学习笔记,其中数据集和源码可以去图灵社区下载。 一、Apriori算法 数据挖掘十大算法之Apriori详解 Apriori算法是一种用于关联规则挖掘(Association rule mining)的代表性算法,关联规则挖掘是数据挖掘中的一个非常重要的研究方向,也是一个由来已久的话题,它的主要任务就是设法发现事物之间...

qq_34190232的博客 4706

【信息科学与工程学】【通信工程】第二百四十篇 IPv4/IPv6 功能点、特性和算法及 IPv4→IPv6 迁移特性02

说明:按「纯数学 → 数学物理 → 多物理场 → 界面/表面科学耦合 + 数学化学 + 运动科学(0.01 nm → μm → mm → cm 精度及超长运动)」纵向穿透,每一行给出,最后挂。

weixin_49199313的博客 509

Apriori算法在电影推荐中的运用

Apriori算法介绍 Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。 对于关联度分析,我们首先会用Apriori算法去产生频繁项集。第二步,我们通过其中的频繁项集测试其前提和条件,进而创建关联的规则。 对于第一步,Apriori算法需要一个最小的支持度作为基准。低于这个最小支持度就舍去不考虑。 第二步,在得...

someng的博客 5720

【信息科学与工程学】计算机科学与自动化——第八十六篇 各类应用上云计算 01

数字孪生:核心是实时性不等式(Δ<Δt)与带宽-精度权衡。数学上归结为带约束的非线性优化。预测性维护:从物理退化方程(Paris 定律)出发,结合贝叶斯推断,云端训练用深度时序模型,边缘推理用轻量模型。机器人协同:本质是多商品流 + 动态障碍物,需用图论(冲突检测)+ 最优控制(轨迹平滑)。工业视觉:延迟由四个环节组成,需用排队论分析流水线瓶颈,量化感知是降低延迟的关键。液压/气动系统上云(涉及流体力学、热力学、控制)机械臂力控/阻抗控制上云(涉及动力学、力/位混合控制)

weixin_49199313的博客 201

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 282

关联规则挖掘入门:DataAnalysisInAction项目中的购物篮分析技巧

关联规则挖掘是数据挖掘领域中一种常用的技术,尤其在零售行业的购物篮分析中发挥着重要作用。DataAnalysisInAction项目提供了丰富的关联规则挖掘实践案例,帮助新手快速掌握这一实用技能。 ## 什么是关联规则挖掘? 关联规则挖掘是一种从大量数据中发现项集之间有趣关系的方法。它通过分析数据集中项与项之间的关联程度,找出频繁出现的项集以及项集之间的因果关系。这种技术广泛应用于购物篮分析、

gitblog_01134的博客 318

【信息科学与工程学】【通信工程】第一百五十六篇 SD-WAN 领域核心的算法与函数02

(确认 GM/T 0028-2014、GB/T 43697-2024、GB/T 22239-2019 八类四十七控制域、Cipher Suites for TLS 1.3 RFC 8446 §9.1 代码点、ZUC-256、SM2/3/4/9 参数、TLCP 1.1、SDF/SKF 接口)。下面是编号 125–136​ 的完整表格——SASE 安全算法全集(等保 2.0 + 数据安全 + 国密双栈)。【类型】​ 合规量化 / 加权评分【领域】​ 安全(SASE 合规总纲​ ⭐,接续编号 18/38/44/1

weixin_49199313的博客 27

数据分析思维培养:DataAnalysisInAction项目实战经验分享

在数据驱动决策的时代,数据分析思维已成为职场必备技能。GitHub 加速计划中的 DataAnalysisInAction 项目,是一个包含详细笔记、代码和数据的数据分析实战教程,通过45讲内容帮助学习者系统掌握数据分析的核心方法与实战技巧。本文将分享如何通过该项目培养数据分析思维,从理论基础到实战应用,让你快速入门并提升数据分析能力。 ## 一、数据分析思维的核心要素 数据分析思维并非简单的

gitblog_00698的博客 929

(学习用)电影数据库“movies.csv”

学习参考使用!

电影数据集关联规则挖掘

关联规则挖掘在生活中有很多使用场景,不仅是商品的捆绑销售,甚至在挑选演员决策上,你也能通过关联规则挖掘看出来某个导演选择演员的倾向。 如何使用Apriori工具包 Apriori虽然是十大算法之一,不过在sklearn工具包中并没有它,也没有FP-Growth算法。这里教你个方法,来选择Python中可以使用的工具包,你可以通过https://pypi.org/ 搜索工具包。 img 这个网站提供的工具包都是Python语言的,你能找到8个Python语言的Apriori工具包,具体选择哪个呢?建议你使用第二个工具包,即efficient-apriori。后面我会讲到为什么推荐这个工具包。

OpenDrop 实战指南:用 Python 命令行工具实现与苹果 AirDrop 协议兼容的文件互传

本文以 OpenDrop(一个用 Python 编写的开源 Apple AirDrop 实现)为核心,系统讲解其环境要求、安装方式以及 `find` / `send` / `receive` 三条核心命令的完整用法,并结合仓库源码剖析其 mDNS 发现、HTTPS 传输与证书配置的底层原理。读完本文,你将掌握如何在自己的 macOS 或 Linux(配合 OWL)机器上收发文件、向 iOS/mac

gitblog_00923的博客 314

基于RK3588与Gstreamer的端侧实时视频流AI推理系统构建

本文详细介绍了基于RK3588芯片与Gstreamer框架构建端侧实时视频流AI推理系统的完整方案。通过硬件选型、环境配置、OpenCV编译优化、视频流处理实战及模型部署等关键环节的深入解析,展示了如何利用RK3588的6TOPS NPU算力与Gstreamer的低延迟特性,实现工业质检、智能交通等场景下的高效边缘计算。特别针对RTSP推拉流优化、RKNN模型转换等核心技术难点提供了实用解决方案。

weixin_30516243的博客 381

apriori java_Apriori算法的JAVA实现

1 packageapriori;2 import java.io.*;3 import java.util.*;4 public classApriori {5 public static voidmain(String[] args) {6 long t=System.currentTimeMillis();7 File f=new File("E:/T...

weixin_34571972的博客 330

HFSS - 侧馈矩形微带天线设计与仿真

一、设计指标 中心频率:2.45GHz 介质板厚度:1.6mm 介质板相对介电常数:4.4 二、理论计算 辐射贴片宽度w=c2f(εr+12)−12w=\frac{c}{2 f}\left(\frac{\varepsilon_{r}+1}{2}\right)^{-\frac{1}{2}}w=2fc​(2εr​+1​)−21​ 辐射贴片长度L=cfεe−2ΔLL=\frac{c}{f \sqrt{\varepsilon_{\mathrm{e}}}}-2 \Delta LL=fεe​​c​−2ΔL

MaxWei 1万+

STM32H743 LAN8720网口配置避坑指南:用CubeMX v6.5.0快速搞定LWIP+FreeRTOS

本文详细介绍了使用CubeMX v6.5.0配置STM32H743与LAN8720网口的LWIP+FreeRTOS方案,涵盖硬件连接、时钟配置、ETH外设初始化及LWIP协议栈调优等关键步骤。特别针对常见陷阱提供解决方案,帮助开发者快速实现稳定网络通信,适用于嵌入式网络开发场景。

weixin_33739523的博客 357

clementine中Apriori参数解读Maximum number of antecedents

数据挖掘课后作业需要用到这个软件,老师将基本参数设置好了,但是具体各项是什么意思呢? 下面是老师预设的参数, Run Apriori on “transaction” data set. Set the “Type” of “COD” as “Typeless”, set the “direction” of all the other 20 categories as “Both”, set ...

K's Blog 1110

笔记汇总 | 斯坦福 CS229 机器学习

本文为斯坦福大学 2014 秋季 CS229 机器学习课程学习笔记本文主体部分转载自黄海广博士,文末已给出,大家有兴趣可以直接访问笔记首页,下载对应课程资料及作业代码。

ReturnTmp的博客 2463

java 频繁模式_数据挖掘关联分析频繁模式挖掘apriorifpgrowth及eclat算法的java及c++实现.doc...

数据挖掘关联分析频繁模式挖掘apriorifpgrowth及eclat算法的java及c++实现.doc (update 2012.12.28 关于本项目下载及运行的常见问题 FAQ 见 newsgroup18828 文本分 类器、文本聚类器、关联分析频繁模式挖掘算法的 Java 实现工程下载及运行 FAQ ) 一、Apriori 算法Apriori 是非常经典的关联分析频繁模式挖掘算法,其思想简...

weixin_39943383的博客 238

北斗B1频点信号捕获实战:如何应对NH码跳变带来的挑战?

本文深入探讨了北斗B1频点信号捕获中NH码跳变带来的核心挑战。针对NH码以1kHz速率调制导致的相干积分中断和相关峰畸变问题,文章提出并详细解析了一种基于伪码与多普勒频率分离技术的优化捕获方案。该方案通过差分处理消除NH跳变影响,并利用匹配滤波器与FFT分别进行码相位和多普勒频率的快速估计,有效提升了弱信号环境下的捕获灵敏度和稳定性,为北斗接收机设计提供了实用的工程参考。

joy55的博客 535

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案

方案适用场景推荐指数每个tool_use必须生成对应tool_result最基础的原则,所有Harness都必须遵守⭐⭐⭐⭐⭐裁剪历史时成对处理实现了上下文裁剪/压缩逻辑的Harness⭐⭐⭐⭐⭐并行工具调用结果数量校验支持多工具并行调用的场景⭐⭐⭐⭐使用官方SDK高层封装不需要特别定制消息组装逻辑⭐⭐⭐⭐请求前主动校验中间件追求生产级健壮性,提前拦截问题⭐⭐⭐⭐⭐这类报错,本质上是。

一键难忘的博客 1万+

机器学习常见问题

伪代码实现:LR、梯度下降、最小二乘、KNN、Kmeans; LR(logistic回归):一般有两个用途:1、用来预测 2、用来寻找因变量中的影响因素 假设X为自变量,Y为因变量,如果X的个数为1,那么就叫一元回归分析;大于一个就叫多元回归分析; 对于一元回归分析: 对于多元回归分析: 基本知识: 1)监督与非监督区别; 2)L1L2区别; 3)生成模型和判别模型区别 像贝叶斯...

ddfgg9884的博客 125

10、皮肤 - 神经记录实验全流程解析

本博客详细介绍了皮肤-神经记录实验的全流程,涵盖实验所需的材料准备和具体操作方法。内容包括细胞外记录设备的设置、合成间质液(SIF)的制备与调节、小鼠后爪皮肤和胫神经的手术解剖步骤、清洁解剖后的记录准备、纤维分离与感受野识别方法,以及神经纤维机械响应的测量。该实验为研究神经纤维的活动与功能提供了重要的技术支持,适用于神经科学研究领域。

backprop5master的博客 186

机器学习经典算法之Apriori

一、 搞懂关联规则中的几个概念 关联规则这个概念,最早是由 Agrawal 等人在 1993 年提出的。在 1994 年 Agrawal 等人又提出了基于关联规则的 Apriori 算法,至今 Apriori 仍是关联规则挖掘的重要算法。 /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://www.cnblogs.com/jpcflyer/p/11146587....

weixin_30846599的博客 1594

SerDes系列之FFE均衡技术

FFE的基本结构可以在RX侧或TX侧实现,其基本工作原理相同:它通过从同一信号源应用适当的延迟来产生多径信号,然后对它们进行线性缩放和组合以消除信道ISI。

一只豌豆象的博客 4242

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: [PPB] 使用决策树模型进行空气质量评价
下一篇: [PPB] 使用层次聚类划分基站所在商圈类型
Vincent_Chu
博客等级 码龄9年 8粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值