溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用ColumnTransformer處理Python中不同類型的數(shù)據(jù)

發(fā)布時間:2021-10-19 10:22:19 來源:億速云 閱讀:875 作者:柒染 欄目:大數(shù)據(jù)

怎么使用ColumnTransformer處理Python中不同類型的數(shù)據(jù),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

當所有輸入變量都是同一類型時,應用數(shù)據(jù)轉(zhuǎn)換(例如縮放或編碼分類變量)非常簡單。Python機器學習庫scikit-learn提供了ColumnTransformer,可選擇地將數(shù)據(jù)轉(zhuǎn)換應用于數(shù)據(jù)集中的不同列。

工作中常使用的數(shù)據(jù)轉(zhuǎn)換有很多,比如SimpleImputer類可用于替換缺少的值,MinMaxScaler類可用于縮放數(shù)值,而OneHotEncoder可用于編碼分類變量。

...# prepare transformscaler = MinMaxScaler()# fit transform on training datascaler.fit(train_X)# transform training datatrain_X = scaler.transform(train_X)

如何使用ColumnTransformer?

ColumnTransformer在Python的機器學習庫scikit-learn中,可以選擇地進行數(shù)據(jù)轉(zhuǎn)換。例如,它允許將特定的轉(zhuǎn)換或轉(zhuǎn)換序列僅應用于數(shù)字列,而將單獨的轉(zhuǎn)換序列僅應用于類別列。

要使用ColumnTransformer,必須指定一個轉(zhuǎn)換器列表。每個轉(zhuǎn)換器是一個三元素元組,用于定義轉(zhuǎn)換器的名稱,要應用的轉(zhuǎn)換以及要應用于其的列索引,例如:(名稱,對象,列)。

例如,下面的ColumnTransformer將OneHotEncoder應用于列0和1。

transformer = ColumnTransformer(transformers=[('cat', OneHotEncoder(), [0, 1])])

下面的示例對數(shù)字列0和1應用具有中值插補的SimpleImputer,對分類列2和3應用最頻繁插補的SimpleImputer。

t = [('num', SimpleImputer(strategy='median'), [0, 1]), ('cat', SimpleImputer(strategy='most_frequent'), [2, 3])]transformer = ColumnTransformer(transformers=t)

例如,如果第0列和第1列是數(shù)字列,而第2列和第3列是分類列,而我們只想轉(zhuǎn)換分類數(shù)據(jù)并不改變數(shù)字列,則可以按以下方式定義ColumnTransformer:

transformer = ColumnTransformer(transformers=[('cat', OneHotEncoder(), [2, 3])], remainder='passthrough')

ColumnTransformer也可以在管道中使用,以在將模型擬合到轉(zhuǎn)換后的數(shù)據(jù)之前選擇性地準備數(shù)據(jù)集的列。這是最可能的用例,因為它可以確保在擬合模型和進行預測時,例如在通過交叉驗證對測試數(shù)據(jù)集上的模型進行評估或?qū)π聰?shù)據(jù)進行預測時,對原始數(shù)據(jù)自動執(zhí)行轉(zhuǎn)換。

...# define modelmodel = LogisticRegression()# define transformtransformer = ColumnTransformer(transformers=[('cat', OneHotEncoder(), [0, 1])])# define pipelinepipeline = Pipeline(steps=[('t', transformer), ('m',model)])# fit the model on the transformed datamodel.fit(train_X, train_y)# make predictionsyhat = model.predict(test_X)

看完上述內(nèi)容,你們掌握怎么使用ColumnTransformer處理Python中不同類型的數(shù)據(jù)的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI