Estoy tratando de cargar un .arff archivo en una colección de matriz de uso de liac-arff de la biblioteca. (https://github.com/renatopp/liac-arff)

Este es mi código.

import arff, numpy as np
dataset = arff.load(open('mydataset.arff', 'rb'))
data = np.array(dataset.data)

cuando se ejecuta, estoy recibiendo el error.

ArffLoader.py", line 8, in <module>
data = np.array(dataset.data)
AttributeError: 'dict' object has no attribute 'data'

He visto temas similares, Smartsheet Datos Tracker: AttributeError: ‘dict’ el objeto no tiene ningún atributo ‘append’. Soy nuevo en Python y no es capaz de resolver este problema. ¿Cómo puedo solucionar este problema?

OriginalEl autor Erdnase | 2015-03-10

2 Comentarios

  1. 19

    Versión corta

    dataset es un dict. Para un dict, puede acceder a los valores de uso de python indexación de la notación, dataset[key], donde key podría ser un string, integer, float, tupla, o cualquier otro inmutable (tipo de datos es un poco más complicado que eso, más abajo si usted está interesado).

    En su caso, la clave está en la forma de una cadena. Para acceder a él, usted necesita dar a la cadena que desea como un índice, así:

    import arff
    import numpy as np
    dataset = arff.load(open('mydataset.arff', 'rb'))
    data = np.array(dataset['data'])

    (usted también no debemos poner a las importaciones en la misma línea, aunque esto es sólo un problema de legibilidad)

    Explicación más detallada

    dataset es un dict, que en algunos idiomas se llama map o hashtable. En un dict, tener acceso a los valores de una manera similar a cómo el índice de una lista o matriz, excepto el «índice» puede ser cualquier tipo de datos que es «hashable» (que es, idealmente, identificador único para cada valor posible). Este «índice» es llamado «clave». En la práctica, al menos para los tipos integrados y la mayoría de los principales paquetes, sólo inmutable o tipos de datos hashable, pero no hay ninguna regla que requiere que este sea el caso.

    Vienen MATLAB? Si es así, entonces usted está probablemente tratando de usar MATLAB's struct técnica de acceso. Se podría pensar en una dict como una mucho más rápido, más flexible struct, pero la sintaxis para acceder a los valores es diferente.

    Gracias, esto es de trabajo. Mi fondo de programación es principalmente Java y acabo de empezar en Python. El código que he usado es de aquí. stackoverflow.com/questions/27264426/….
    acaba de editar mi respuesta en la pregunta se refiere. Gracias!

    OriginalEl autor TheBlackCat

  2. 1

    Su fácil cargar arff de datos en python usando scipy.

    from scipy.io import arff
    
    import pandas as pd
    
    data = arff.loadarff('dataset.arff')
    
    df = pd.DataFrame(data[0])
    
    df.head()

    OriginalEl autor Thirumal Alagu

Dejar respuesta

Please enter your comment!
Please enter your name here