2014-10-27 109 views
4

我试图重现R的createDataPartition函数在python中的行为。我有一个用布尔目标变量进行机器学习的数据集。我想在训练集(60%)和测试集(40%)中分割我的数据集。等效于Python中的createDataPartition

如果我这样做是完全随机的,我的目标变量将无法在两组之间正确分配。

我使用实现它在R:

inTrain <- createDataPartition(y=data$repeater, p=0.6, list=F) 
training <- data[inTrain,] 
testing <- data[-inTrain,] 

我怎么可以这样做在Python?

PS:我使用scikit-learn作为我的机器学习lib和python熊猫。

回答

3

在scikit学习,你得到的工具train_test_split

from sklearn.cross_validation import train_test_split 
from sklearn import datasets 

# Use Age and Weight to predict a value for the food someone chooses 
X_train, X_test, y_train, y_test = train_test_split(table['Age', 'Weight'], 
                table['Food Choice'], 
                test_size=0.25) 

# Another example using the sklearn pre-loaded datasets: 
iris = datasets.load_iris() 
X_iris, y_iris = iris.data, iris.target 
X, y = X_iris[:, :2], y_iris 
X_train, X_test, y_train, y_test = train_test_split(X, y) 

这打破了以

  • 输入的数据进行训练
  • 输入,用于评估数据
  • 输出为培训数据
  • 输出评估数据

。您还可以添加一个关键字参数:test_size = 0.25改变用于训练的数据的百分比和测试

要拆分单一数据集,你可以使用这样的呼吁得到40%的测试数据:

>>> data = np.arange(700).reshape((100, 7)) 
>>> training, testing = train_test_split(data, test_size=0.4) 
>>> print len(data) 
100 
>>> print len(training) 
60 
>>> print len(testing) 
40 
+1

这个函数是否理解它应该根据目标/标签变量拆分数据?它不是写在文档中的任何地方。 – poiuytrez 2014-10-27 13:08:07

+0

我增加了另一个例子,您明确选择变量和目标 – 2014-10-27 13:12:42

+0

...另一个随机将输入“数据”分成两个数组 - 60:40 – 2014-10-27 13:23:00