Я пытаюсь создать тренировочные и тестовые данные, используя StratifiedShuffleSplit в Sklearn со знаменитым набором данных c (файл train.csv).
Все, что я делаю, это загружаю данные в pandas фрейм данных (titanic_train) и удалите две строки, где Embark имеет нулевые значения, используя:
titanic_train.dropna(subset=['Embarked'],axis=0,inplace=True)
Затем я использую следующие строки кода для создания многослойного поезда и тестового набора данных на основе столбца Pclass.
from sklearn.model_selection import StratifiedShuffleSplit
split=StratifiedShuffleSplit(n_splits=1,test_size=0.2,random_state=42)
for train_index, test_index in split.split(titanic_train,titanic_train["Pclass"]):
strat_train_set = titanic_train.loc[train_index]
strat_test_set = titanic_train.loc[test_index]
Приведенный выше код работает нормально, но он создает две пустые строки в strat_train_set
и выдает мне следующее предупреждение.
...python37\lib\site-packages\ipykernel_launcher.py:4: FutureWarning:
Passing list-likes to .loc or [] with any missing label will raise
KeyError in the future, you can use .reindex() as an alternative.
See the documentation here:
https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike
after removing the cwd from sys.path.
Я попытался найти, какие две строки многослойного разбиения не могут быть помещены в strat_train_set
, и вот эти строки:
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked _merge
887 890 1 1 Behr, Mr. Karl Howell male 26.0 0 0 111369 30.00 C148 C left_only
888 891 0 3 Dooley, Mr. Patrick male 32.0 0 0 370376 7.75 NaN Q left_only
Если я заменю lo c на ilo c в следующих двух строках
strat_train_set = titanic_train.iloc[train_index]
strat_test_set = titanic_train.iloc[test_index]
ошибка исчезает, но я хочу понять, почему это происходит. .lo c также должен работать в этой ситуации, так как я использовал точно такой же код где-то еще, но я не получил ни предупреждения, ни пустых строк.
Data-> kaggle competitions download -c titanic
link: https://www.kaggle.com/c/titanic/data
file name: train.csv
Буду признателен за любые советы по этому вопросу