带有test_size = 0的train_test_split如何影响数据?

时间:2019-04-30 16:24:31

标签: python machine-learning cross-validation train-test-split

我在代码中使用了train_test_split,然后想将其更改为交叉验证,但奇怪的是,这种情况正在发生。

train, test = train_test_split(data, test_size=0)

x_train = train.drop('CRO', axis=1)
y_train = train['CRO']

scaler = MinMaxScaler(feature_range=(0, 1))
x_train_scaled = scaler.fit_transform(x_train)
x_train = pd.DataFrame(x_train_scaled)

for k in range(1, 5):
    knn = neighbors.KNeighborsRegressor(n_neighbors=k, weights='uniform')
    scores = model_selection.cross_val_score(knn, x_train, y_train, cv=5)
    print(scores.mean(), 'score for k = ', k)

这段代码给出的得分大约为0.8,但是当我删除第一行并更改第二行和第三行中“数据”集的“火车”集时,得分变为​​0.2,这很奇怪,因为我什至将test_size设置为0,这样火车应该等于整个数据。 什么是羽化作用?

1 个答案:

答案 0 :(得分:0)

要注意的一件事是train_test_split中传递的隐式参数。

默认情况下,shuffle=True可以很容易地通过混排将噪声添加到您的训练数据中,而在不混洗的情况下仅传递数据就可以在模型中引入其他模式。