《Python数据挖掘入门与实践》Apriori算法代码中,频繁项集计数是否存在重复问题?

DDD
发布: 2025-02-28 11:48:01
原创
465人浏览过

《python数据挖掘入门与实践》apriori算法代码中,频繁项集计数是否存在重复问题?

关于《Python数据挖掘入门与实践》中Apriori算法代码的改进建议

在学习《Python数据挖掘入门与实践》一书中Apriori算法章节时,读者发现书中提供的代码在生成包含两项的频繁项集时存在重复计数的可能性。 原始代码片段尝试从只包含一项的频繁项集 (k=1) 扩展到包含两项 (k=2) 的频繁项集。 核心问题在于,对于包含多个频繁1-项集的用户评论,相同的2-项集会被多次计数。

原始代码片段(略去部分无关代码):

def find_frequent_itemsets(favorable_reviews_by_users, k_1_itemsets, min_support):
    counts = defaultdict(int)
    # ... (循环遍历用户和k-1项集) ...
        for other_reviewed_movie in reviews - itemset:
            current_superset = itemset | frozenset((other_reviewed_movie,))
            counts[current_superset] += 1
    # ... (返回满足最小支持度的频繁项集) ...
登录后复制

问题在于current_superset的生成方式。例如,如果用户评论包含{a, b},当itemset为{a}时,会生成{a, b};当itemset为{b}时,会生成{b, a}。由于frozenset({a, b})和frozenset({b, a})是相等的,导致重复计数。

立即学习Python免费学习笔记(深入)”;

改进方案:

为了避免重复计数,可以对current_superset进行规范化处理,例如将其元素排序后转换为元组作为字典的键。 这确保了即使顺序不同,相同的项集也只会被计数一次。

改进后的代码片段:

from collections import defaultdict

def find_frequent_itemsets(favorable_reviews_by_users, k_1_itemsets, min_support):
    counts = defaultdict(int)
    for user, reviews in favorable_reviews_by_users.items():
        for itemset in k_1_itemsets:
            if itemset.issubset(reviews):
                for other_reviewed_movie in reviews - itemset:
                    current_superset = itemset | frozenset((other_reviewed_movie,))
                    # 规范化处理:将集合元素排序后转换为元组
                    sorted_superset = tuple(sorted(list(current_superset)))
                    counts[sorted_superset] += 1
    return dict([(itemset, frequency) for itemset, frequency in counts.items() if frequency >= min_support])
登录后复制

这个改进后的版本通过tuple(sorted(list(current_superset)))将frozenset转换为一个有序的元组,从而避免了重复计数的问题。 这保证了相同的频繁项集,无论其元素顺序如何,都只会被计数一次,从而提高了Apriori算法的准确性。 需要注意的是,这仅仅是针对k=2的情况的改进,对于更高阶的频繁项集生成,需要进一步的算法优化。

以上就是《Python数据挖掘入门与实践》Apriori算法代码中,频繁项集计数是否存在重复问题?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号