我有一个没有标题的csv文件,我正在使用pandas导入到python中。最后一列是目标类,而其余列是图像的像素值。如何使用pandas(80/20)将此数据集拆分为训练集和测试集?
此外,一旦完成,我如何分割每个集合,以便我可以定义x(除最后一列之外的所有列)和y(最后一列)?
我使用以下方式导入了我的文件:
dataset = pd.read_csv('example.csv', header=None, sep=',')
由于
答案 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的比例进行测试。