Неправильный выход StraifiedShuffleSplit? - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь запустить StratifiedShuffleSplit на основе категориальной переменной "Accident_Severity" (Fatal, Serious или small).

Исходное распределение:

Незначительный 182994

Серьезный 40442

Фатальный 2973

Имя: Accident_Severity, dtype: int64

Когда я запускаю этот код:

from sklearn.model_selection import StratifiedShuffleSplit

stratified_splitter = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=7)    
train_index, test_index = list(stratified_splitter.split(df_full, df_full["Accident_Severity"]))[0] 
df_train = df_full.loc[train_index]    
df_test = df_full.loc    
[test_index]    
print(f"{df_train.shape[0]} train and {df_test.shape[0]} test instances")

214865 поезд и 115 тестовых экземпляров

Результат не пропорционален, как должен. И набор тестов не составляет 20% от 226409 записей

Итоговый тест пропорции:

Фатальный 115

Имя: Accident_Severity, dtype: int64

Конечная пропорция поезда:

Легко 177630

Серьезно 34856

Смертельно 2379

Имя: Accident_Severity, dtype : int64

Другие мои коллеги запускают тот же код и получают хорошие результаты.

1 Ответ

0 голосов
/ 01 мая 2020

Я удаляю и устанавливаю Anaconda и снова запускаю весь код в своем блокноте Jupyter. Видимо, я получил правильный ответ, и проблема решена ...

Кажется, что в sklearn было что-то не так, что я не смог понять.

...