40

据我了解,scikit-learn 接受 (n-sample, n-feature) 格式的数据,这是一个 2D 数组。假设我有表格中的数据......

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

我如何导入这个?

4

4 回答 4

66

numpy loadtxt的一个很好的替代方法是Pandas的 read_csv 。数据被加载到 Pandas 数据帧中的一大优势是它可以处理混合数据类型,例如某些列包含文本,而其他列包含数字。然后,您可以轻松地仅选择数字列并使用as_matrix转换为 numpy 数组。Pandas 还将读/写 excel 文件和许多其他格式

如果我们有一个名为“mydata.csv”的 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 并将数字列转换为 scikit_learn 的 numpy 数组,然后修改列的顺序并将其写入 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')
于 2015-06-12T22:42:28.907 回答
54

这不是 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

或者,您可以使用标准 Pythoncsv模块来处理这种类型的文件。

于 2012-06-14T15:04:49.227 回答
20

您可以在numpy中查找 loadtxt 函数。

获取 loadtxt 方法的可选输入。

csv 的一个简单更改是

data =  np.loadtxt(fname = f, delimiter = ',')
于 2014-07-23T05:02:10.523 回答
1

用于numpy加载 csvfile

import numpy as np
dataset = np.loadtxt('./example.csv', delimiter=',')
于 2017-11-10T10:58:26.667 回答