Frozenset 不在 Spyder 变量资源管理器中显示其内容
Posted
技术标签:
【中文标题】Frozenset 不在 Spyder 变量资源管理器中显示其内容【英文标题】:Frozenset doesn't display its contents in Spyder Variable Explorer 【发布时间】:2018-05-07 09:33:34 【问题描述】:当我在 Spyder 中打开规则时,将先验算法应用于 Market Basket Optimization 数据集后,而不是显示 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)
Dataset
图片供参考:
First case
Second case
【问题讨论】:
请不要发布您的代码或数据的图片链接。在 SO 上,您必须在问题内发布实际的代码或数据的 sn-ps。见How to create a Minimal, Complete, and Verifiable example。此外,您将不得不自己调试一些我们无法在您的 IDE 中看到这两个对象之间的区别。 感谢回复。我对帖子做了一些必要的修改 好的,现在我们有了代码,但是我们没有你的数据集,所以我们无法重现这个并获得你得到的任何 freezeset 输出。您能否生成一些随机种子数据,以便我们在其上进行复制? 感谢您的耐心等待。我已经编辑了帖子并附上了数据集链接。 我在 jupyter 中尝试了确切的代码,它就像一个魅力。我认为问题在于 spyder 中的一些设置,因为我使用的是 spyder 【参考方案1】:(这里是 Spyder 维护者) 简短回答:这个问题的原因很简单:我们的变量资源管理器不支持frozenset
。这就是为什么它们不会显示的原因,除非您关闭名为 Exclude unsupported data types
的选项,然后它们将显示为通用对象。
长答案:我们不能简单地使用对象的repr
在变量资源管理器中显示它。那是因为如果你的对象非常复杂(即它有太多的元素或者它由带有长 repr
的对象组成),Spyder 控制台会挂起试图计算它的 repr
。经过多年支持复杂的科学工作流程,我们了解到这一点很艰难。
因此,对于每个类型对象,我们需要决定它在变量资源管理器中的显示方式。例如,我们显示数据框的列名以及列表和字典的前十个元素。我们已经有一个小型库可以做到这一点,但每次人们想看到新类型对象时,我们都需要对其进行扩展。
注意:我们计划通过 Spyder 4(将于 2019 年发布)中的插件扩展该过程。
【讨论】:
你能告诉我如何关闭排除不支持的数据类型吗?【参考方案2】:您需要执行print(results)
,因为Spyder 中的变量资源管理器不支持frozenset 数据类型。
【讨论】:
【参考方案3】: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")
【讨论】:
【参考方案4】:要打印每条规则并在其间留出一点间隔,请尝试"
for i in results:
print(i)
print('**********')
【讨论】:
以上是关于Frozenset 不在 Spyder 变量资源管理器中显示其内容的主要内容,如果未能解决你的问题,请参考以下文章
在调试python期间,Spyder在变量资源管理器中不显示类实例变量