在train_test_split sklearn

时间:2018-09-28 15:30:34

标签: python python-3.x random scikit-learn

我正在尝试将自己拥有的数据分为40%训练和60%验证,然后我想重复30次,每次都使用随机训练和不同的验证。我怎样才能做到这一点? (不使用Kfold

这是我写的内容,但是每次获得的准确性都是相同的,我不知道每次都要经过不同的培训和验证来做到这一点。每次迭代的准确性都是相同的,我不知道为什么。

for i in range (30):
      X_train, X_test, y_train, y_test =train_test_split(df,y, 
      train_size=0.4, shuffle=True)
      metrics.accuracy_score(linsvc.predict(X_train), R_train)

1 个答案:

答案 0 :(得分:2)

要获得30个迭代中每个迭代的随机训练大小,您可以使用随机生成器,然后将其用作训练集大小的一部分。


使用此功能:

from sklearn.model_selection import train_test_split
import random
import numpy as np

X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
y = np.array([1, 2, 1, 2, 1, 2])

for i in range(30):
    # the training size will vary between 0.2 and 0.5 randomly
    random_portion = round(random.uniform(0.2, 0.5) , 3)
    X_train, X_test, y_train, y_test =train_test_split(X,y, train_size= random_portion, shuffle=True)

您可以相应地修改代码。


编辑1

您可以根据需要只使用numpy

from sklearn.model_selection import train_test_split
import numpy as np

X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
y = np.array([1, 2, 1, 2, 1, 2])

for i in range(30):
    random_portion = round(np.random.rand(),3)
    X_train, X_test, y_train, y_test =train_test_split(X,y, train_size= random_portion, shuffle=True)