关联可视化

规则较多,仍然使用数据表查看,这无疑是一种糟糕的策略。这时关联规则可视化就显得非常重要。在得到关联规则后,如何更加高效地查看关联规则之间的内容和关系?散点图和网络图等可视化方法无疑是分析规则的利器。

#找到关联规则,通过置信阈值发现新规则
rule2=association_rules(df_fre,metric="confidence",min_threshold=0.7)
rule2["antelen"]=rule2.antecedents.apply(lambda x:len(x))
rule2=rule2[(rule2.antelen==1)&(rule2.lift>1)]
print(rule2["support"])

在这里插入图片描述
1.散点图
针对关联每一条规则都有置信度和支持度这两个特征,可以使用散点图来分析它们之间的关系和取值范围

##绘制支持度和置信度的散点图
rule2.plot(kind="scatter",x="support",c="r",y="confidence",s=40,figsize=(8,5))
plt.grid("on")
plt.xlabel("支持度",fontproperties=fonts,size=12)
plt.ylabel("置信度",fontproperties=fonts,size=12)
plt.title("38个规则散点图",fontproperties=fonts)
plt.show()

2.关系网络图
针对一个个规则,如何和网络图联系起来?规则的前项指向后继的连线无疑是规则的一种很好的表达方式,并且根据规则的支持度大小,可以使用
不用类型的连线来区别。带方向的关系网络图是表示规则的最好方式。接下来是使用关系网络图绘制得到的38条规则。

#将部分关联规则使用网络图进行可视化
import networkx as nx
plt.figure(figsize=(12,12))
##生成网络图
G=nx.DiGraph()
#为图像添加边
print(rule2)
for ii in rule2.index:
    G.add_edge(rule2.antecedents[ii],rule2.consequents[ii],weight=rule2.support[ii])
#定义三种边;
elarge=[(u,v)for(u,v,d)in G.edges(data=True)if d['weight']>0.6]
emidle=[(u,v)for(u,v,d)in G.edges(data=True)if(d['weight']<=0.6)&(d['weight']>=0.45)]
esmall=[(u,v)for(u,v,d)in G.edges(data=True)if d['weight']<=0.45]
#图的布局方式
pos=nx.circular_layout(G)
#根据规则的置信度设置节点的大小
nx.draw_networkx_nodes(G, pos,alpha=0.4)
#设置边的形式
nx.draw_networkx_edges(G,pos,edgelist=elarge,width=2,alpha=0.6,edge_color='r')
nx.draw_networkx_edges(G,pos,edgelist=emidle,width=2,alpha=0.6,edge_color='g',style='dashdot')
nx.draw_networkx_edges(G,pos,edgelist=esmall,width=2,alpha=0.6,edge_color='b',style='dashed')
#为节点添加标签
nx.draw_networkx_labels(G,pos,font_size=10)
plt.axis('off')
plt.title('38个规则使用支持度连接',fontproperties=fonts)
plt.show()

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关联规则可视化是一种将关联规则以图形化方式呈现的方法,用于直观地理解和分析数据中的关联关系。在 Python 中,可以使用一些库来实现关联规则可视化,如 matplotlib、seaborn 和 networkx。 首先,你需要计算关联规则。可以使用一些关联规则挖掘算法,如 Apriori 算法或 FP-growth 算法,来从数据集中提取关联规则。这些算法通常在一些数据挖掘库中实现,如 mlxtend 或 Orange。 下面是一个使用 mlxtend 和 matplotlib 进行关联规则可视化的例子: ```python from mlxtend.frequent_patterns import apriori from mlxtend.frequent_patterns import association_rules import matplotlib.pyplot as plt # 假设你已经有一个包含交易数据的 DataFrame,每行代表一个交易,每列代表一个商品 # 这里使用 mlxtend 提供的示例数据 from mlxtend.preprocessing import TransactionEncoder from mlxtend.demo import load_dataset data = load_dataset('Groceries') te = TransactionEncoder() te_ary = te.fit_transform(data, sparse=True) sparse_df = pd.SparseDataFrame(te_ary, columns=te.columns_, default_fill_value=False) # 使用 Apriori 算法计算频繁项集 frequent_itemsets = apriori(sparse_df, min_support=0.01, use_colnames=True) # 根据频繁项集计算关联规则 rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1) # 可视化关联规则 fig, ax = plt.subplots() ax.scatter(rules['support'], rules['confidence'], alpha=0.5) ax.set_xlabel('Support') ax.set_ylabel('Confidence') plt.title('Association Rules') plt.show() ``` 这段代码首先使用 mlxtend 库计算频繁项集,然后根据频繁项集计算关联规则。最后,使用 matplotlib 库绘制散点图来可视化关联规则的支持度和置信度。 你可以根据自己的数据和需求进行适当的调整和修改。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值