[在我在Spyder中打开规则时,对市场购物篮优化数据集应用了先验算法后,没有显示frozenset({'light cream', 'chicken'})
,而是显示了frozenset object of builtins module
我的代码:
import pandas as pd
# Read dataset
dataset = pd.read_csv('Market_Basket_Optimisation.csv', header = None)
transactions = []
for i in range(0, 7501):
transactions.append([str(dataset.values[i,j]) for j in range(0, 20)])
# Train model
from apyori import apriori
rules = apriori(transactions, min_support = 0.003, min_confidence = 0.2, min_lift = 3, min_length = 2)
# To get the output
results = list(rules)
供参考的图像:
(这里是Spyder维护者)简短答案:此问题的原因非常简单:我们的变量资源管理器不支持frozenset
。这就是为什么不显示它们的原因,除非您关闭名为Exclude unsupported data types
的选项,然后它们将显示为通用对象。
长回答:我们不能简单地使用对象的repr
在变量浏览器中显示该对象。这是因为,如果您的对象非常复杂(即,元素太多或由repr
长的对象组成),则Spyder控制台将挂起,尝试计算其repr
。经过多年支持复杂的科学工作流程,我们了解到了这一艰辛的方法。
因此,对于每个类型对象,我们需要决定如何在变量资源管理器中显示它。例如,我们显示数据框的列名称以及列表和字典的前十个元素。我们已经有一个小型图书馆可以这样做,但是每当人们希望看到新型对象时,我们都需要对其进行扩展。
注:我们计划通过Spyder 4(将于2019年发布)中的插件来扩展该过程。
您需要执行print(results)
,因为Spyder中的变量资源管理器不支持Frozenset数据类型。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.read_csv("Market_Basket_Optimisation.csv",header=None)
transaction=[]
for i in range(0,7501):
transaction.append([str(df.values[i,j]) for j in range(0,20)])
from apyori import apriori
rules = apriori(transaction, min_support = 0.003, min_confidence = 0.2, min_lift = 3, min_length = 2)
result=list(rules)
results=str(result)
frozensets=results.split("RelationRecord")
要打印每条规则,并在两者之间稍加分隔,请尝试“
for i in results:
print(i)
print('**********')