您好,登錄后才能下訂單哦!
怎么使用ColumnTransformer處理Python中不同類型的數據,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
當所有輸入變量都是同一類型時,應用數據轉換(例如縮放或編碼分類變量)非常簡單。Python機器學習庫scikit-learn提供了ColumnTransformer,可選擇地將數據轉換應用于數據集中的不同列。
工作中常使用的數據轉換有很多,比如SimpleImputer類可用于替換缺少的值,MinMaxScaler類可用于縮放數值,而OneHotEncoder可用于編碼分類變量。
...# prepare transformscaler = MinMaxScaler()# fit transform on training datascaler.fit(train_X)# transform training datatrain_X = scaler.transform(train_X)
ColumnTransformer在Python的機器學習庫scikit-learn中,可以選擇地進行數據轉換。例如,它允許將特定的轉換或轉換序列僅應用于數字列,而將單獨的轉換序列僅應用于類別列。
要使用ColumnTransformer,必須指定一個轉換器列表。每個轉換器是一個三元素元組,用于定義轉換器的名稱,要應用的轉換以及要應用于其的列索引,例如:(名稱,對象,列)。
例如,下面的ColumnTransformer將OneHotEncoder應用于列0和1。
transformer = ColumnTransformer(transformers=[('cat', OneHotEncoder(), [0, 1])])
下面的示例對數字列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列是數字列,而第2列和第3列是分類列,而我們只想轉換分類數據并不改變數字列,則可以按以下方式定義ColumnTransformer:
transformer = ColumnTransformer(transformers=[('cat', OneHotEncoder(), [2, 3])], remainder='passthrough')
ColumnTransformer也可以在管道中使用,以在將模型擬合到轉換后的數據之前選擇性地準備數據集的列。這是最可能的用例,因為它可以確保在擬合模型和進行預測時,例如在通過交叉驗證對測試數據集上的模型進行評估或對新數據進行預測時,對原始數據自動執行轉換。
...# 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)
看完上述內容,你們掌握怎么使用ColumnTransformer處理Python中不同類型的數據的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。