一、算法类型
无监督算法
(小广告)重要事情说三遍~
想听我讲代码,请点这里,进入B站
想听我讲代码,请点这里,进入B站
想听我讲代码,请点这里,进入B站
二、算法原理
(1)算法流程
(2)指标
三、手写Python算法
(1)产生频繁项集
def create_c1(dataset):
"""
#辅助函数1
函数功能:⽣成第⼀个候选项集c1,每个项集只有1个item
参数说明:
dataset:原始数据集
返回:
frozenset形式的候选集合c1
"""
c1=[]
for transaction in dataset:
for item in transaction:
if not {
item} in c1:
c1.append({
item})
c1.sort()
return list(map(frozenset,c1))
def create_freq_transaction(dataset,ck,min_support=0.5):
"""
#辅助函数2
函数功能:⽣成满⾜最⼩⽀持度的频繁项集
参数说明:
dataset:原始数据集
ck:候选项集
min_support:最⼩⽀持度
返回:
support_data:候选项集ck的⽀持度字典(key:候选项, value:⽀持度)
freq_transaction:给定min_support下的ck中的频繁项集
注意:如果ck中得不到频繁项集,则返回的是空list
"""
sscnt={
} #存放项集及频次
for transaction in dataset:
for can in ck: #候选项集
if can.issubset(transaction):
sscnt[can]=sscnt.get(can,0)+1 #频次&