Python 将数据集拆分为90,10,而不是n_倍

Python 将数据集拆分为90,10,而不是n_倍,python,pandas,random,dataset,random-forest,Python,Pandas,Random,Dataset,Random Forest,我使用随机森林算法。我想使用以下代码。我不想通过n_折叠来评估算法,而是将其分为90%用于训练,10%用于测试。 我将n\u folds更改为n\u folds=1,并添加了以下行: train, test = train_test_split(dataset1, test_size=0.1, random_state = 0) ###<----- df = dataset1.astype('str') dataset = df.values.tolist() train1 = trai

我使用随机森林算法。我想使用以下代码。我不想通过n_折叠来评估算法,而是将其分为90%用于训练,10%用于测试。 我将
n\u folds
更改为
n\u folds=1
,并添加了以下行:

train, test = train_test_split(dataset1, test_size=0.1, random_state = 0) ###<-----
df = dataset1.astype('str')
dataset = df.values.tolist()

train1 = train.astype('str')
train = train1.values.tolist()

test1 = test.astype('str')
test = test1.values.tolist()
train,test=train\u test\u split(数据集1,test\u size=0.1,random\u state=0)最大深度:
节点['left'],节点['right']=到_终端(左),到_终端(右)
返回
#进程左子女

如果len(左)我建议,这允许您从培训中选择一定数量的项目进行验证。你只需要计算出你需要留下多少,它才是样本的10%

当您进行n\u折叠验证时,它会自动循环折叠并在n-1折叠上训练模型。
例如,如果将其分成4个25%的折叠(a、b、c、d),则它将在(a、b、c)上进行训练,并在(d)上进行测试
在(a、b、d)上训练,在(c)上测试
在(a、c、d)上进行训练,在(b)上进行测试
在(b、c、d)上训练,在(a)上测试 然后取平均误差。
在这种情况下,如果您进行10次折叠,它将在90%的数据上进行10次训练。
但如果您根本不想使用折叠,只需单独使用train\u test\u split。
考虑下面的代码:

import pandas as pd
from sklearn.datasets import make_classification
from sklearn.cross_validation import train_test_split

X, y = make_classification(n_samples=100)
features = ['f_{}'.format(i) for i in range(X.shape[1])]
df = pd.DataFrame(X, columns=features)
df['target'] = y

X_train, X_test, y_train, y_test = train_test_split(
    df[features].values, 
    df['target'].values, 
    test_size=0.1,
    stratify=df['target'],
    random_state=42
)

print('X_train:', X_train.shape, 'y_train:', y_train.shape,)
print('X_test:', X_test.shape, 'y_test:', y_test.shape,)
输出:

X_train: (90, 20) y_train: (90,)
X_test: (10, 20) y_test: (10,)

谢谢@Jblasco,我需要修改代码,这样就不用n_fold来训练90%的人,并在10%以上进行测试了。我的拆分完成了工作,但是我会出错。非常感谢@AlexOzerov,这就是我需要的代码类型。如何将其插入到原始代码中?
import pandas as pd
from sklearn.datasets import make_classification
from sklearn.cross_validation import train_test_split

X, y = make_classification(n_samples=100)
features = ['f_{}'.format(i) for i in range(X.shape[1])]
df = pd.DataFrame(X, columns=features)
df['target'] = y

X_train, X_test, y_train, y_test = train_test_split(
    df[features].values, 
    df['target'].values, 
    test_size=0.1,
    stratify=df['target'],
    random_state=42
)

print('X_train:', X_train.shape, 'y_train:', y_train.shape,)
print('X_test:', X_test.shape, 'y_test:', y_test.shape,)
X_train: (90, 20) y_train: (90,)
X_test: (10, 20) y_test: (10,)