Мне сложно понять, как конвейеры должны работать в Склеарне. Ниже приведен пример использования титанового набора данных.
data = pd.read_csv('datasets/train.csv')
cat_attribs = ["Embarked", "Cabin", "Ticket", "Name"]
num_pipeline = Pipeline([
('imputer', SimpleImputer(strategy="median")),
])
str_pipeline = Pipeline([
('imputer', SimpleImputer(strategy="most_frequent")),
])
full_pipeline = ColumnTransformer([
("num", num_pipeline, ["Pclass", "Age", "SibSp", "Parch", "Fare"]),
("str", str_pipeline, ["Cabin", "Sex"]),
("cat", OneHotEncoder(), ["Cabin"]),
])
full_pipeline.fit_transform(data)
Я ожидаю, что это заполнит все отсутствующие атрибуты NaN
значений (как в числовом, так и в строковом формате), а затем, наконец, преобразует атрибут Cabin
вчисловой.
Вместо этого код заканчивается следующей ошибкой:
ValueError: Вход содержит NaN. Если я удаляю строку, вызывающую OneHotEncoder и печатающую преобразованный массив, значение NaN отсутствует.
Следовательно, мне интересно. Как я должен звонить OneHotEncoder
в этой ситуации.