怎么使用ColumnTransformer處理Python中不同類型的數(shù)據(jù),相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
為灤南等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及灤南網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、灤南網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
當(dāng)所有輸入變量都是同一類型時(shí),應(yīng)用數(shù)據(jù)轉(zhuǎn)換(例如縮放或編碼分類變量)非常簡單。Python機(jī)器學(xué)習(xí)庫scikit-learn提供了ColumnTransformer,可選擇地將數(shù)據(jù)轉(zhuǎn)換應(yīng)用于數(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在Python的機(jī)器學(xué)習(xí)庫scikit-learn中,可以選擇地進(jìn)行數(shù)據(jù)轉(zhuǎn)換。例如,它允許將特定的轉(zhuǎn)換或轉(zhuǎn)換序列僅應(yīng)用于數(shù)字列,而將單獨(dú)的轉(zhuǎn)換序列僅應(yīng)用于類別列。
要使用ColumnTransformer,必須指定一個(gè)轉(zhuǎn)換器列表。每個(gè)轉(zhuǎn)換器是一個(gè)三元素元組,用于定義轉(zhuǎn)換器的名稱,要應(yīng)用的轉(zhuǎn)換以及要應(yīng)用于其的列索引,例如:(名稱,對象,列)。
例如,下面的ColumnTransformer將OneHotEncoder應(yīng)用于列0和1。
transformer = ColumnTransformer(transformers=[('cat', OneHotEncoder(), [0, 1])])
下面的示例對數(shù)字列0和1應(yīng)用具有中值插補(bǔ)的SimpleImputer,對分類列2和3應(yīng)用最頻繁插補(bǔ)的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ù)之前選擇性地準(zhǔn)備數(shù)據(jù)集的列。這是最可能的用例,因?yàn)樗梢源_保在擬合模型和進(jìn)行預(yù)測時(shí),例如在通過交叉驗(yàn)證對測試數(shù)據(jù)集上的模型進(jìn)行評估或?qū)π聰?shù)據(jù)進(jìn)行預(yù)測時(shí),對原始數(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ù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!