python 关于玻璃数据集apriori结果 对多关联规则置信度的可视化
时间: 2023-12-23 17:02:00 浏览: 36
要可视化多关联规则的置信度,可以使用 Python 中的 Matplotlib 库。下面是一个简单的示例代码:
```python
import matplotlib.pyplot as plt
from apyori import apriori
# 假设你已经执行了 apriori 算法,得到了多关联规则的数据集,
# 并将结果存储在一个名为 rules 的列表中。
# 定义一个函数,用于绘制多关联规则的置信度分布图。
def plot_confidence_distribution(rules):
confidences = [rule.ordered_statistics[0].confidence for rule in rules]
plt.hist(confidences, bins=20)
plt.xlabel('Confidence')
plt.ylabel('Frequency')
plt.title('Confidence Distribution of Association Rules')
plt.show()
# 调用函数,绘制多关联规则的置信度分布图。
plot_confidence_distribution(rules)
```
这段代码会生成一个直方图,其中 x 轴表示置信度的值,y 轴表示对应置信度的多关联规则的数量。你可以根据需要调整直方图的参数,比如调整 bin 的数量,来更好地展示数据。
相关问题
python 对关联规则结果进行可视化
你可以使用 Python 中的 Matplotlib、Seaborn 等数据可视化库来对关联规则结果进行可视化。以下是一个简单的例子:
假设你已经使用 Apriori 算法得到了关联规则结果:
```
rules = [('A', 'B', 0.5), ('B', 'C', 0.6), ('A', 'C', 0.4)]
```
其中每个规则都是一个元组,包含了前项、后项和置信度。你可以将这些规则转化为一个 pandas DataFrame:
```
import pandas as pd
df = pd.DataFrame(rules, columns=['Antecedent', 'Consequent', 'Confidence'])
```
然后,你可以使用 Matplotlib 或 Seaborn 来绘制规则的置信度分布:
```
import matplotlib.pyplot as plt
import seaborn as sns
# 使用 Matplotlib 绘制直方图
plt.hist(df['Confidence'])
plt.xlabel('Confidence')
plt.ylabel('Frequency')
plt.show()
# 使用 Seaborn 绘制箱线图
sns.boxplot(x='Confidence', data=df)
plt.show()
```
这些可视化方法可以帮助你更好地理解关联规则的置信度分布,进而优化你的关联规则挖掘结果。
apriori算法python实现 csv,并且将结果频繁项集的支持度和置信度可视化
以下是使用Python实现Apriori算法并从CSV文件读取数据的示例代码。此外,使用matplotlib库将频繁项集的支持度和置信度绘制成图表。
```python
import csv
import itertools
from collections import defaultdict
import matplotlib.pyplot as plt
# 从CSV文件中读取数据
def load_data(file_path):
data = []
with open(file_path, 'r') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
data.append(row)
return data
# 获取所有单项集
def get_itemset(data):
itemset = set()
for row in data:
for item in row:
itemset.add(item)
return itemset
# 获取所有频繁项集和它们的支持度
def get_frequent_itemset(data, min_support):
itemset = get_itemset(data)
itemset_support = defaultdict(int)
for row in data:
for item in itemset:
if item in row:
itemset_support[item] += 1
frequent_itemset = set()
frequent_itemset_support = {}
for item in itemset:
if itemset_support[item]/len(data) >= min_support:
frequent_itemset.add(frozenset([item]))
frequent_itemset_support[frozenset([item])] = itemset_support[item]/len(data)
k = 2
while True:
candidate_itemset = set([i.union(j) for i in frequent_itemset for j in frequent_itemset if len(i.union(j)) == k])
if not candidate_itemset:
break
candidate_itemset_support = defaultdict(int)
for row in data:
for item in candidate_itemset:
if item.issubset(row):
candidate_itemset_support[item] += 1
frequent_itemset = set([itemset for itemset in candidate_itemset if candidate_itemset_support[itemset]/len(data) >= min_support])
for itemset in frequent_itemset:
frequent_itemset_support[itemset] = candidate_itemset_support[itemset]/len(data)
k += 1
return frequent_itemset, frequent_itemset_support
# 获取所有规则和它们的支持度和置信度
def get_rules(frequent_itemset, frequent_itemset_support, min_confidence):
rules = []
for itemset in frequent_itemset:
if len(itemset) > 1:
for i in range(1, len(itemset)):
for antecedent in itertools.combinations(itemset, i):
consequent = itemset.difference(antecedent)
if antecedent in frequent_itemset and consequent in frequent_itemset:
confidence = frequent_itemset_support[itemset]/frequent_itemset_support[antecedent]
if confidence >= min_confidence:
rules.append((antecedent, consequent, frequent_itemset_support[itemset], confidence))
return rules
# 绘制频繁项集的支持度和置信度图表
def plot_support_confidence(frequent_itemset_support, rules, min_support, min_confidence):
sorted_frequent_itemset_support = sorted(frequent_itemset_support.items(), key=lambda x: x[1], reverse=True)
sorted_rules = sorted(rules, key=lambda x: x[3], reverse=True)
plt.bar(range(len(sorted_frequent_itemset_support)), [support for itemset, support in sorted_frequent_itemset_support], color='b', alpha=0.5)
plt.xticks(range(len(sorted_frequent_itemset_support)), [','.join(itemset) for itemset, support in sorted_frequent_itemset_support], rotation=90)
plt.xlabel('Itemset')
plt.ylabel('Support')
plt.title(f'Frequent itemsets and rules (minimum support = {min_support}, minimum confidence = {min_confidence})')
ax2 = plt.twinx()
ax2.bar(range(len(sorted_rules)), [confidence for antecedent, consequent, support, confidence in sorted_rules], color='r', alpha=0.5)
ax2.set_ylabel('Confidence')
plt.show()
# 测试代码
data = load_data('transactions.csv')
min_support = 0.5
min_confidence = 0.5
frequent_itemset, frequent_itemset_support = get_frequent_itemset(data, min_support)
rules = get_rules(frequent_itemset, frequent_itemset_support, min_confidence)
plot_support_confidence(frequent_itemset_support, rules, min_support, min_confidence)
```
在此示例代码中,我们首先使用 `load_data` 函数从CSV文件中读取数据。然后,我们使用 `get_frequent_itemset` 函数获取所有频繁项集和它们的支持度。接下来,我们使用 `get_rules` 函数获取所有规则和它们的支持度和置信度。最后,我们使用 `plot_support_confidence` 函数将频繁项集的支持度和置信度绘制成图表。
请注意,此示例代码假定CSV文件中的每个项目都是单个项,并用逗号分隔。如果您的CSV文件格式有所不同,您可能需要调整代码以适应您的数据格式。