我编写了一个函数,根据总大小的百分比将numpy个数组x_data
和y_data
分为训练和测试数据。
功能如下:
def split_data_into_training_testing(x_data, y_data, percentage_split):
number_of_samples = x_data.shape[0]
p = int(number_of_samples * percentage_split)
x_train = x_data[0:p]
y_train = y_data[0:p]
x_test = x_data[p:]
y_test = y_data[p:]
return x_train, y_train, x_test, y_test
在此功能中,数据的顶部进入训练数据集,数据样本的底部进入基于percentage_split
的测试数据集。在将数据拆分输入机器学习模型之前,如何使其更加随机化?
答案 0 :(得分:2)
假设您有理由自己执行此操作而不是使用sklearn.train_test_split
,则可以改组索引数组(这使训练数据保持不变)并在其上进行索引。
def split_data_into_training_testing(x_data, y_data, split, shuffle=True):
idx = np.arange(len(x_data))
if shuffle:
np.random.shuffle(idx)
p = int(len(x_data) * split)
x_train = x_data[idx[:p]]
x_test = x_data[idx[p:]]
... # Similarly for y_train and y_test.
return x_train, x_test, y_train, y_test
答案 1 :(得分:2)
您可以使用let str = "12345";
//convertion to array:
let strArr = [...str]; // strArr = ["1", "2", "3", "4", "5"]
随机选择的真实元素创建遮罩,并以此方式对数组进行索引。我将通过改组可用索引的数组来创建掩码:
p
仅当原始数据在x中单调递增或递减并且您希望保持这种方式时,才需要对索引进行排序。否则,ind = np.arange(number_of_samples)
np.random.shuffle(ind)
ind_train = np.sort(ind[:p])
ind_test = np.sort(ind[p:])
x_train = x_data[ind_train]
y_train = y_data[ind_train]
x_test = x_data[ind_test]
y_test = y_data[ind_test]
就可以了。