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在变量资源管理器中不显示类实例变量

Spyder 变量资源管理器:禁用科学记数法

无法在 Spyder IDE 的变量资源管理器中打开数据框

Mayavi 不在 Spyder 中运行:抱怨“ValueError: API 'QString' ...”

在 spyder 中查看返回值

Spyder IDE中的SQL Server资源管理器窗格