python - make - ¿Cómo importar un archivo de datos csv en scikit-learn?
sklearn import mnist (4)
Según tengo entendido, el scikit-learn acepta datos en formato (n-sample, n-feature) que es una matriz 2D. Suponiendo que tengo datos en el formulario ...
Stock prices indicator1 indicator2
2.0 123 1252
1.0 .. ..
.. . .
.
¿Cómo importo esto?
Use numpy
para cargar csvfile
import numpy as np
dataset = np.loadtxt(''./example.csv'', delimiter='','')
Este no es un archivo CSV; Esto es solo un archivo separado por espacios. Suponiendo que no falten valores, puede cargarlo fácilmente en una matriz Numpy llamada data
con
import numpy as np
f = open("filename.txt")
f.readline() # skip the header
data = np.loadtxt(f)
Si el precio de las acciones es lo que desea predecir (su valor de y
, en términos de scikit-learn), entonces debe dividir los data
usando
X = data[:, 1:] # select columns 1 through end
y = data[:, 0] # select column 0, the stock price
Alternativamente, puede aplicar el módulo csv
Python estándar para manejar este tipo de archivo.
Una muy buena alternativa para numpy loadtxt es read_csv de Pandas . Los datos se cargan en un marco de datos de Pandas con la gran ventaja de que puede manejar tipos de datos mixtos, como algunas columnas que contienen texto y otras columnas que contienen números. Luego, puede seleccionar fácilmente solo las columnas numéricas y convertirlas a una matriz as_matrix con as_matrix . Pandas también leerá / escribirá archivos de Excel y un montón de otros formatos .
Si tenemos un archivo csv llamado "mydata.csv":
point_latitude,point_longitude,line,construction,point_granularity
30.102261, -81.711777, Residential, Masonry, 1
30.063936, -81.707664, Residential, Masonry, 3
30.089579, -81.700455, Residential, Wood , 1
30.063236, -81.707703, Residential, Wood , 3
30.060614, -81.702675, Residential, Wood , 1
Esto se leerá en el csv y convertirá las columnas numéricas en una matriz numpy para scikit_learn, luego modificará el orden de las columnas y las escribirá en una hoja de cálculo de Excel:
import numpy as np
import pandas as pd
input_file = "mydata.csv"
# comma delimited is the default
df = pd.read_csv(input_file, header = 0)
# for space delimited use:
# df = pd.read_csv(input_file, header = 0, delimiter = " ")
# for tab delimited use:
# df = pd.read_csv(input_file, header = 0, delimiter = "/t")
# put the original column names in a python list
original_headers = list(df.columns.values)
# remove the non-numeric columns
df = df._get_numeric_data()
# put the numeric column names in a python list
numeric_headers = list(df.columns.values)
# create a numpy array with the numeric values for input into scikit-learn
numpy_array = df.as_matrix()
# reverse the order of the columns
numeric_headers.reverse()
reverse_df = df[numeric_headers]
# write the reverse_df to an excel spreadsheet
reverse_df.to_excel(''path_to_file.xls'')