【发布时间】:2019-03-21 05:13:51
【问题描述】:
我有一个固定的训练数据集文件train.csv 和另一个测试数据集文件test.csv。我知道 sklearn 中的 train_test_split() 方法可以进行拆分工作。但我想用每个文件中的每个数据集分别创建 2 个数据集。
我已经测试过了
# The X,Y and X_, Y_ following are training and test samples/labels (dataframes)
trainX, testX, trainY, testY = train_test_split( X, Y, test_size = 0)
trainX_, testX_, trainY_, testY_ = train_test_split( X_, Y_, test_size = 1.0)
# not accepted parameter
# ...
dtree = tree.DecisionTreeClassifier(criterion="gini")
dtree.fit(trainX, trainY)
...
Y_pred = dtree.predict(testX_)
并以trainX, trainY 进行训练,以testX_, testY_ 进行预测。
但是train_test_split()方法不接受test_size=1.0,导致失败。
那么分别创建训练和测试数据集的正确方法是什么?
【问题讨论】:
-
给定测试大小为 1,您试图说所有数据都应该在测试集中,而不是在训练集中。这违背了 train_test_split 的目的。如果您想要一个保留测试集,您可以在使用 df.sample 进行拆分之前取出一些数据
-
同时拥有
X, y和X_, y_的目的是什么? -
@G.Anderson 我只想从两个文件分别创建训练和测试数据集。为了实现这一点,我尝试使用
train_test_split()两次,test_size = 0 和 test_size = 1.0。我认为执行此操作的正确方法可能与train_test_split()无关……不过,请展示我的工作。 -
train_test_split的目的是创建随机抽样的训练集和测试集。如果您想使用所有X_, y_作为保留集进行测试,那么您根本不需要拆分它,而只需拆分X,y。如果您已经有 2 个文件,那么您可以只使用dtree.fit(X, y)和dtree.score(X_, y_),假设您对这两个集合都是准确和随机的数据样本感到满意 -
@G.Anderson 我也尝试了你的建议。看来我必须做一些编码工作才能使用分类字段来适应决策树模型。我说的对吗?
标签: python scikit-learn