亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

OneHotEncoder 在 SimpleImputer 已被調用后引發 NaN 問題

OneHotEncoder 在 SimpleImputer 已被調用后引發 NaN 問題

米脂 2022-06-22 15:20:14
我很難理解管道應該如何在 Sklearn 中工作。以下是使用 Titanic 數據集的示例。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。
查看完整描述

1 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

我建議將OneHotEncoder其應用于所有分類變量。因此,將其作為單獨的管道。


由于它是數字列的單步過程,因此您可以ColumnTransformer直接使用。


嘗試這個!


from sklearn.impute import SimpleImputer

from sklearn.compose import ColumnTransformer, make_column_transformer

from sklearn.preprocessing import OneHotEncoder

from sklearn.pipeline import Pipeline, make_pipeline


cat_preprocess = make_pipeline(SimpleImputer(strategy="most_frequent"), OneHotEncoder())


ct = make_column_transformer([

        ("num", SimpleImputer(strategy="median"), ["Pclass", "Age", "SibSp", "Parch", "Fare"]),

        ("str", cat_preprocess, ["Cabin", "Sex"]),

    ])


pipeline = Pipeline([('preprocess', ct)])


查看完整回答
反對 回復 2022-06-22
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號