web-dev-qa-db-fra.com

Comment importer un fichier de données csv dans scikit-learn?

D'après ma compréhension, scikit-learn accepte les données au format (n échantillon, n entité), qui est un tableau 2D. En supposant que j'ai des données sous la forme ...

Stock prices    indicator1    indicator2
2.0             123           1252
1.0             ..            ..
..              .             . 
.

Comment puis-je importer cela? 

26
user1234440

Ce n'est pas un fichier CSV; c'est juste un fichier séparé par des espaces. En supposant qu'il ne manque aucune valeur, vous pouvez facilement le charger dans un tableau Numpy appelé data avec

import numpy as np

f = open("filename.txt")
f.readline()  # skip the header
data = np.loadtxt(f)

Si le cours de l'action correspond à ce que vous souhaitez prédire (votre valeur y, en termes de connaissance de la connaissance), vous devez fractionner data en utilisant

X = data[:, 1:]  # select columns 1 through end
y = data[:, 0]   # select column 0, the stock price

Vous pouvez également utiliser le module standard Python csv pour gérer ce type de fichier.

47
Fred Foo

Une très bonne alternative à numpy loadtxt est read_csv de Pandas . Les données sont chargées dans une trame de données Pandas avec le gros avantage de pouvoir gérer des types de données mélangés, telles que certaines colonnes contiennent du texte et d'autres colonnes contiennent des chiffres. Vous pouvez ensuite facilement sélectionner uniquement les colonnes numériques et les convertir en tableau numpy avec as_matrix . Les pandas vont aussi lire/écrire des fichiers Excel et un tas d’autres formats .

Si nous avons un fichier csv nommé "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

Ceci lira le csv et convertira les colonnes numériques en un tableau numpy pour scikit_learn, puis modifiera l'ordre des colonnes et l'écrira dans un tableur 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')
55
denson

Vous pouvez rechercher la fonction loadtxt dans numpy .

Pour obtenir les entrées optionnelles dans la méthode loadtxt.

Un simple changement pour CSV est 

data =  np.loadtxt(fname = f, delimiter = ',')
17
William komp

Utilisez numpy pour charger le fichier csv

import numpy as np
dataset = np.loadtxt('./example.csv', delimiter=',')