【问题标题】:How to create train dataset and test dataset separately in sklearn?如何在 sklearn 中分别创建训练数据集和测试数据集?
【发布时间】: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, yX_, 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


【解决方案1】:

train_test_split 的目的是创建一个随机抽样的训练集和一个测试集。如果您想使用所有X_, y_ 作为保留集进行测试,那么您根本不需要拆分它,而只需拆分X, y。如果您已经有 2 个文件,那么您可以只使用 dtree.fit(X, y)dtree.score(X_, y_),假设您对这两个集合都是准确和随机的数据样本感到满意

【讨论】:

    猜你喜欢
    • 2016-05-30
    • 2019-08-01
    • 2015-07-16
    • 2019-05-01
    • 2017-02-20
    • 2014-09-22
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多