python - make - cargar datos de csv en Scikit learn SVM
sklearn import mnist (2)
El problema era con el archivo csv en lugar de la función loadtxt (). El formato en el que guardé no proporcionaba un archivo .csv adecuado (¡no sé por qué!). Quizás no lo guardé en absoluto. Pero hay una manera de verificar si el archivo csv se guarda en el formato correcto o no. Abra el archivo .csv usando el bloc de notas. Si los datos tienen comas entre ellos, entonces se guardan correctamente. Y loadtxt () funcionará. Si muestra algún galimatías, créelo de nuevo y luego verifique.
Quiero entrenar a un SVM para realizar una clasificación de muestras. Tengo un archivo csv que tiene 3 columnas con encabezados: función 1, función 2, etiqueta de clase y 20 filas (= número de muestras).
Ahora cito de la documentación de Scikit-Learn "Como otros clasificadores, SVC, NuSVC y LinearSVC toman como entrada dos matrices: una matriz X de tamaño [n_samples, n_features] que contiene las muestras de entrenamiento, y una matriz y de etiquetas de clase (strings o enteros), tamaño [n_samples]: "
Entiendo que necesito obtener dos arreglos (uno 2d y uno 1d) para alimentar los datos al SVM. Sin embargo, no puedo entender cómo obtener la matriz requerida del archivo csv. He intentado el siguiente código
import numpy as np
data = np.loadtxt(''test.csv'', delimiter='','')
print data
Sin embargo, muestra un error "ValueError: could not convert string to float: ࡱ "
No hay encabezados de columna en el csv. ¿Estoy cometiendo un error al llamar a la función np.loadtxt o debería usar algo más?
Actualización: Así es como se ve mi archivo .csv.
12 122 34
12234 54 23
23 34 23
Pasaste el param delimiter='',''
pero tu csv no estaba separada por comas.
Entonces el siguiente funciona:
In [378]:
data = np.loadtxt(path_to_data)
data
Out[378]:
array([[ 1.20000000e+01, 1.22000000e+02, 3.40000000e+01],
[ 1.22340000e+04, 5.40000000e+01, 2.30000000e+01],
[ 2.30000000e+01, 3.40000000e+01, 2.30000000e+01]])
Los documentos muestran que, de forma predeterminada, el delimitador es None
por lo que trata el espacio en blanco como el delimitador:
delimiter: str, opcional La cadena utilizada para separar los valores. Por defecto, este es cualquier espacio en blanco.