2012-06-13 14 views

cevap

46

Bu bir CSV dosyası değil; Bu sadece boşluk ayrılmış bir dosyadır. hisse senedi fiyatı (sizin y değer terimleri scikit-bilgi) tahmin etmek istediğiniz buysa hiçbir eksik değerler vardır varsayarsak, kolayca size, sonra

import numpy as np 

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

ile data adında bir Numpy diziye bu yükleyebilirsiniz

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

Alternatif kullanarak data ayrılmalıyız, dosyanın bu tür işleme içine standard Python csv module masaj mümkün olabilir.

+0

Bu yöntemi kullanarak özellik adlarını korumanın bir yolu var mı? – AlexFZ

+1

@AlexFZ: doğrudan değil. Sadece 'f.readline()' yerine 'feature_names = f.readline() 'ı, split()' veya bunun bir varyantını (OP'nin üstbilgi çizgisi güzelce ayrılmış) yapamazsınız. [Pandas] (http://pandas.pydata.org) bunun için daha iyi bir işleve sahiptir. –

+4

Soru soran bir boşluk ayrılmış dosya sağlamasına rağmen, soru bir csv veri dosyasına ilişkin olarak ortaya konmuştur. –

17

numpy'da loadtxt işlevine bakabilirsiniz.

İsteğe bağlı girişleri loadtxt yöntemine almak için.

csv için basit bir değişiklik numpy loadtxt için çok iyi bir alternatif read_csv from Pandas olduğunu

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

olduğunu. Veriler, bazı sütunların metin içermesi ve diğer sütunların sayı içermesi gibi karışık veri türlerini ele alabilmesinin büyük avantajıyla bir Pandas veri karesine yüklenir. Daha sonra, yalnızca sayısal sütunları kolayca seçebilir ve as_matrix ile bir numpy dizisine dönüştürebilirsiniz. Pandalar ayrıca read/write excel files and a bunch of other formats da olacak. Biz "mydata.csv" adlı bir CSV dosyası varsa

:

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 

Bu csv okumak ve scikit_learn için numpy diziye sayısal sütunları dönüştürür, sonra da sütunların sırasını değiştirmek ve yazma bir excel elektronik tabloya dışarı:

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') 
+0

Tamam, ancak bu matristen bir scikit bilgi kümesini nasıl oluşturabilirim? –

+1

Scikit öğrenmek pandas data frame'leri giriş olarak alabilir, bu yüzden neredeyse hazırdır. "Point_granularity" nin hedef değişken olduğunu varsayarak y = df ['point_granularity'] ve X = df [['point_latitude' ', point_longitude', 'line, construction']] – denson

+1

Yapabilirsiniz. Bazı özellikler kategorik olduğundan çoğu scikit-öğrenme modeli için bir-hot-kodlamak gerekir: https://stackoverflow.com/a/43038709/1810559 – denson

0

kullanım numpy yüklemek için

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

CSVfile