import pandas as pd import time from mlxtend.preprocessing import TransactionEncoder from mlxtend.frequent_patterns import apriori from mlxtend.frequent_patterns import fpgrowth dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'], ['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'], ['Milk', 'Apple', 'Kidney Beans', 'Eggs'], ['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'], ['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']] te = TransactionEncoder() te_ary = te.fit(dataset).transform(dataset) df = pd.DataFrame(te_ary, columns=te.columns_) time_start1 = time.time() for i in range(0,100): apriori(df, min_support=0.6, low_memory=True) time_end1 = time.time() print('apriori cost',time_end1-time_start1,'s') time_start2 = time.time() for i in range(0,100): fpgrowth(df, min_support=0.6) time_end2 = time.time() print('fpgrowth cost',time_end2-time_start2,'s') print(df)解释上述每段代码的含义
时间: 2023-08-20 12:05:14 浏览: 181
学习pandas所使用到的数据
这段代码使用了`mlxtend`库中的`apriori`和`fpgrowth`算法,对一个小型的超市销售数据集进行了频繁项集挖掘,下面是每段代码的含义:
1. `import`语句:导入所需的库和模块。
2. `dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'], ['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'], ['Milk', 'Apple', 'Kidney Beans', 'Eggs'], ['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'], ['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']]`:创建一个小型的超市销售数据集。
3. `te = TransactionEncoder()`:创建一个`TransactionEncoder`对象。
4. `te_ary = te.fit(dataset).transform(dataset)`:使用`fit`方法拟合数据集并转换成一个稀疏矩阵。
5. `df = pd.DataFrame(te_ary, columns=te.columns_)`:使用稀疏矩阵构建一个数据框。
6. `time_start1 = time.time() for i in range(0,100): apriori(df, min_support=0.6, low_memory=True) time_end1 = time.time() print('apriori cost',time_end1-time_start1,'s')`:使用`apriori`算法计算频繁项集,并计算算法运行100次的时间,并打印时间。
7. `time_start2 = time.time() for i in range(0,100): fpgrowth(df, min_support=0.6) time_end2 = time.time() print('fpgrowth cost',time_end2-time_start2,'s')`:使用`fpgrowth`算法计算频繁项集,并计算算法运行100次的时间,并打印时间。
8. `print(df)`:打印数据集的内容。
需要注意的是,这个数据集非常小,使用循环计算频繁项集的时间并不准确,仅仅是为了演示如何使用`mlxtend`库中的算法。
阅读全文