webentwicklung-frage-antwort-db.com.de

Wie importiere ich eine CSV-Datei in Scikit-Learn?

Nach meinem Verständnis akzeptiert der Scikit-Learn Daten im (N-Sample, N-Feature) Format, bei dem es sich um ein 2D-Array handelt. Vorausgesetzt, ich habe Daten in der Form ...

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

Wie importiere ich das? 

26
user1234440

Dies ist keine CSV-Datei. Dies ist nur eine durch Leerzeichen getrennte Datei. Vorausgesetzt, es gibt keine fehlenden Werte, können Sie diese problemlos in ein Numpy-Array mit dem Namen data laden

import numpy as np

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

Wenn der Aktienkurs das ist, was Sie vorhersagen möchten (Ihr y-Wert in Bezug auf das Lernen von Lernergebnissen), sollten Sie data mit teilen

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

Alternativ können Sie möglicherweise das standard Python csv-Modul in den Umgang mit diesem Dateityp einbinden.

47
Fred Foo

Eine sehr gute Alternative zu numpy loadtxt ist read_csv von Pandas . Die Daten werden in einen Pandas-Datenrahmen geladen, mit dem großen Vorteil, dass gemischte Datentypen verarbeitet werden können, z. B. einige Spalten Text enthalten und andere Spalten Zahlen enthalten. Sie können dann einfach nur die numerischen Spalten auswählen und mit as_matrix in ein numpy-Array konvertieren. Pandas wird auch Excel-Dateien und einige andere Formate lesen/schreiben .

Wenn wir eine CSV-Datei mit dem Namen "mydata.csv" haben:

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

Dies liest das csv ein und konvertiert die numerischen Spalten in ein numpy-Array für scikit_learn, ändert dann die Reihenfolge der Spalten und schreibt sie in eine Excel-Tabelle:

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

Sie können die loadtxt-Funktion in numpy nachschlagen.

Um die optionalen Eingaben in die loadtxt-Methode zu bekommen.

Eine einfache Änderung für CSV ist 

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

Verwenden Sie numpy, um die CSV-Datei zu laden

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