Как train_test_split с test_size = 0 влияет на данные? - PullRequest
1 голос
/ 30 апреля 2019

Я использовал 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, но когда я удаляю эту первую строкуи измените набор 'train' для набора 'data' во 2-й и 3-й строках, оценка изменится на 0.2, что странно, потому что я даже установил test_size в 0, чтобы поезд был равен всем данным.Что происходит?

1 Ответ

0 голосов
/ 30 апреля 2019

Следует помнить о неявных аргументах, передаваемых в train_test_split .

По умолчанию, shuffle=True, который может легко добавить некоторый шум в ваши тренировочные данные, перетасовывая его, тогда как просто передавая данные без перемешивания, можно ввести другой образец в модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...