Arff Loader : AttributeError: 'dict' object has no attribute 'data'
Arff Loader : AttributeError: 'dict' object has no attribute 'data'
我正在尝试使用 liac-arff 库将 .arff 文件加载到 numpy 数组中。 (https://github.com/renatopp/liac-arff)
这是我的代码。
import arff, numpy as np
dataset = arff.load(open('mydataset.arff', 'rb'))
data = np.array(dataset.data)
执行时出现错误。
ArffLoader.py", line 8, in <module>
data = np.array(dataset.data)
AttributeError: 'dict' object has no attribute 'data'
我看过类似的帖子,Smartsheet Data Tracker: AttributeError: 'dict' object has no attribute 'append'。我是 Python 的新手,无法解决此问题。我该如何解决这个问题?
简短版
dataset
是一个 dict
。对于 dict
,您可以使用 python 索引符号 dataset[key]
访问值,其中 key
可以是字符串、整数、浮点数、元组或任何其他不可变数据类型(它比那更复杂,如果您有兴趣,请参见下文)。
在您的例子中,密钥采用字符串形式。要访问它,您需要提供您想要的字符串作为索引,如下所示:
import arff
import numpy as np
dataset = arff.load(open('mydataset.arff', 'rb'))
data = np.array(dataset['data'])
(你也不应该将导入放在同一行,尽管这只是一个可读性问题)
更详细的解释
dataset
是 dict
,在某些语言中称为 map
或 hashtable
。在 dict
中,您访问值的方式与在列表或数组中建立索引的方式类似,除了 "index" 可以是 "hashable" 的任何数据类型(理想情况下,每个可能值的唯一标识符)。这个"index"被称为"key"。实际上,至少对于内置类型和大多数主要包,只有不可变数据类型或可散列数据类型,但没有实际规则要求这种情况。
你来自MATLAB
吗?如果是这样,那么您可能正在尝试使用 MATLAB's
struct
访问技术。您可以将 dict
视为更快、更灵活的 struct
,但访问值的语法不同。
使用 scipy 很容易将 arff 数据加载到 python。
from scipy.io import arff
import pandas as pd
data = arff.loadarff('dataset.arff')
df = pd.DataFrame(data[0])
df.head()
我正在尝试使用 liac-arff 库将 .arff 文件加载到 numpy 数组中。 (https://github.com/renatopp/liac-arff)
这是我的代码。
import arff, numpy as np
dataset = arff.load(open('mydataset.arff', 'rb'))
data = np.array(dataset.data)
执行时出现错误。
ArffLoader.py", line 8, in <module>
data = np.array(dataset.data)
AttributeError: 'dict' object has no attribute 'data'
我看过类似的帖子,Smartsheet Data Tracker: AttributeError: 'dict' object has no attribute 'append'。我是 Python 的新手,无法解决此问题。我该如何解决这个问题?
简短版
dataset
是一个 dict
。对于 dict
,您可以使用 python 索引符号 dataset[key]
访问值,其中 key
可以是字符串、整数、浮点数、元组或任何其他不可变数据类型(它比那更复杂,如果您有兴趣,请参见下文)。
在您的例子中,密钥采用字符串形式。要访问它,您需要提供您想要的字符串作为索引,如下所示:
import arff
import numpy as np
dataset = arff.load(open('mydataset.arff', 'rb'))
data = np.array(dataset['data'])
(你也不应该将导入放在同一行,尽管这只是一个可读性问题)
更详细的解释
dataset
是 dict
,在某些语言中称为 map
或 hashtable
。在 dict
中,您访问值的方式与在列表或数组中建立索引的方式类似,除了 "index" 可以是 "hashable" 的任何数据类型(理想情况下,每个可能值的唯一标识符)。这个"index"被称为"key"。实际上,至少对于内置类型和大多数主要包,只有不可变数据类型或可散列数据类型,但没有实际规则要求这种情况。
你来自MATLAB
吗?如果是这样,那么您可能正在尝试使用 MATLAB's
struct
访问技术。您可以将 dict
视为更快、更灵活的 struct
,但访问值的语法不同。
使用 scipy 很容易将 arff 数据加载到 python。
from scipy.io import arff
import pandas as pd
data = arff.loadarff('dataset.arff')
df = pd.DataFrame(data[0])
df.head()