Я пытаюсь запустить 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
Другие мои коллеги запускают тот же код и получают хорошие результаты.