2017-08-16 225 views
1

我想我的数据集分成使用分层抽样scikitlearn)列车组和测试组。我的方法如下:分层抽样的python scikitlearn

1)我'读CSV文件并加载它使用大熊猫 readCSV.so最终我'存储在数据帧的名字所装载的csv“数据集”

  dataset = pd.readCSV('CSV_NAME) 

2)现在我'施加分层抽样为:

  train,test = train_test_split(dataset,test_size=0.20,stratify=True) 

但它扔以下错误

TypeError: Singleton array array(True, dtype=bool) cannot be considered a valid collection. 

所以,请建议我做它的正确途径。

回答

0

顺便说一句,你的第一行代码中缺少单引号。

您可以通过以下

import numpy 
dataset = pd.readCSV('CSV_NAME') 
dataset = array(dataset) 

像这里的第二个答案提出的大熊猫据帧转换为numpy的数组:https://www.quora.com/How-does-python-pandas-go-along-with-scikit-learn-library-Has-anyone-doing-data-analysis-using-pandas-and-then-then-fit-models-using-scikit-learn

或者你也可以直接读取数据集到一个数组numpy的。

1

'train_test_split'需要知道目标变量是什么。因此,你应该你的电话更改为类似:

train,test = train_test_split(dataset[needed columns], dataset.target,test_size=0.20,stratify=True) 
+0

STERGIOS嗨,我需要在数据集中的所有列,这是什么dataset.target.Still我已经修改了它作为:火车,测试= train_test_split(数据集[target_cols ],dataset.target,test_size = 0.20,stratify = True) 但它抛出错误'DataFrame'对象没有属性'target' –

+0

'Target'是你的目标变量;你试图预测的那个。您应该将其更改为您的实际列名称。 'target_cols'应该是列名的其余部分。 – Stergios