我正在尝试将自己拥有的数据分为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)
答案 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)
您可以相应地修改代码。
您可以根据需要只使用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)