Подтвердить что ты не робот

Как импортировать файл данных csv в scikit-learn?

По моему мнению, scikit-learn принимает данные в формате (n-sample, n-feature), который представляет собой 2D-массив. Предполагая, что у меня есть данные в форме...

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

Как мне импортировать это?

4b9b3361

Ответ 1

Это не файл CSV; это просто файл, разделенный пробелом. Предполагая, что нет пропущенных значений, вы можете легко загрузить это в массив Numpy с именем data с помощью

import numpy as np

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

Если цена акций - это то, что вы хотите предсказать (ваше значение y, в условиях scikit-learn), вы должны разделить data на

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

В качестве альтернативы вы можете массировать стандартный модуль Python csv для обработки этого типа файла.

Ответ 2

Хорошей альтернативой numpy loadtxt является read_csv из Pandas. Данные загружаются в фреймворк Pandas с большим преимуществом, что он может обрабатывать смешанные типы данных, такие как некоторые столбцы, содержащие текстовые и другие столбцы, содержащие числа. Затем вы можете легко выбрать только числовые столбцы и преобразовать в массив numpy с as_matrix. Pandas также будет читать/писать файлы excel и кучу других форматов.

Если у нас есть файл csv с именем "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

Это будет прочитано в csv и преобразует числовые столбцы в массив numpy для scikit_learn, затем изменит порядок столбцов и запишет его в таблицу 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')

Ответ 3

Вы можете найти функцию loadtxt в numpy.

Чтобы получить дополнительные входы в метод loadtxt.

Простым изменением для csv является

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

Ответ 4

использовать numpy для загрузки csvfile

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