使用Pandas为Scikit-Learn准备CSV文件数据?

时间:2016-03-28 05:47:11

标签: python csv pandas scikit-learn

我有一个没有标题的csv文件,我正在使用pandas导入到python中。最后一列是目标类,而其余列是图像的像素值。如何使用pandas(80/20)将此数据集拆分为训练集和测试集?

此外,一旦完成,我如何分割每个集合,以便我可以定义x(除最后一列之外的所有列)和y(最后一列)?

我使用以下方式导入了我的文件:

dataset = pd.read_csv('example.csv', header=None, sep=',')

由于

3 个答案:

答案 0 :(得分:9)

我建议使用sklearn' train_test_split

from sklearn.model_selection import train_test_split
# for older versions import from sklearn.cross_validation
# from sklearn.cross_validation import train_test_split
X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1]
kwargs = dict(test_size=0.2, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, **kwargs)

答案 1 :(得分:1)

您可以这样做:

choices = np.in1d(dataset.index, np.random.choice(dataset.index,int(0.8*len(dataset)),replace=False))
training = dataset[choices]
testing = dataset[np.invert(choices)]

然后,将其作为x和y传递给Scikit-Learn:

scikit_func(x=training.iloc[:,0:-1], y=training.iloc[:,-1])

如果这不起作用,请告诉我。

答案 2 :(得分:1)

你可以试试这个。

从其他人那里学习目标课程:

pixel_values = Dataset[df.columns[0:len(Dataset.axes[1])-1]]
target_class = Dataset[df.columns[len(Dataset.axes[1])-1:]]

现在创建测试和培训样本:

我会使用numpy的randn:

 mask = np.random.rand(len(pixel_values )) < 0.8
 train = pixel_values [mask]
 test = pixel_values [~msk] 

现在你已经训练并测试样品,并以80:20的比例进行测试。