資料預處理 : ColumnTransformer水平合併器 === 王辰禎, DCT, NTCU(Taiwan) --- ###### tags: `ColumnTransformer` `Pipeline` `Data Frame` `python` **資料科學與問題解決week08HW(4/11)** [Colab 程式碼](https://colab.research.google.com/drive/1JmcRya5zUkS_22DyndjHNTlNcbRxm3ou?usp=sharing) --- #### import(匯入)套件 ##### 由於Sklearn有六大部分,from Sklearn.[某部分] import [某部件] ![image](https://hackmd.io/_uploads/BkKbbp5gll.png) --- #### 將題目的資料丟進Data Frame ![image](https://hackmd.io/_uploads/BkOG-6cxlx.png) --- #### 定義數值管道器(Pipeline) ##### ***用於數值欄位的資料(data中的price和quantity)** ![image](https://hackmd.io/_uploads/BJPXbp5exl.png) SimpleImputer:處理遺漏值 strategy='median(中位數)、mean(平均值)、most_frequent(眾數,出現最多次的數) MinMaxScaler() : 最小最大值標準化(將min->0, max->1,故數據會縮到0~1之間) *sklearn中常見資料預處理: StandardScaler,MinMaxScaler, MaxAbsScaler, and RobustScaler --- #### 定義類別管道器categorical pipeline ##### ***用於非數值欄位的資料(data中的size和color)** ![image](https://hackmd.io/_uploads/HJLNW65glx.png) make_pipeline( [內容] ):製作(定義)管道器 SimpleImputer(strategy='most_frequent')使用眾數(最多次的值)填補遺漏值 OneHotEncoder()用獨熱編碼進行類別資料轉換 --- #### 定義ColumnTransformer水平合併器 ##### 告訴電腦哪些資料用哪種管道器pipeline處理 ![image](https://hackmd.io/_uploads/r1XBZ6ceex.png) --- #### 轉換數據(應用先前定義好的管道器,套用水平合併器便可直接使用兩個管道器) ![image](https://hackmd.io/_uploads/Bk1LZT5gxg.png) [何種格式(管道器)].fit_transform([原資料]) .round(2) : 由於小數點太多看著不舒服,故四捨五入至小數點第二位,但實際處理數據不應該隨意四捨五入,避免數據不精確。 --- #### 將資料擺進Dataframe並印出 ```python processed_df = pd.DataFrame(processed_data, columns=['price', 'quantity', 'size_M', 'size_S', 'size_XL', 'color_black', 'color_blue', 'color_red']) print(processed_df) ``` --- #### 參考資料 1. [(scikit-learn.org)sklearn.impute.SimpleImputer](https://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html) 2. [(scikit-learn.org)sklearn.preprocessing](https://scikit-learn.org/stable/api/sklearn.preprocessing.html) *[MinMaxScaler](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html#sklearn.preprocessing.MinMaxScaler) 3. [(scikit-learn.org)sklearn.preprocessing.OneHotEncoder獨熱編碼](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder) 4. [(iT邦幫忙)Day 18 : 模型前的資料處理 (2)](https://ithelp.ithome.com.tw/articles/10272964) 5. [(medium.com) (機器學習)Pipelines。Ben Hu(2020)](https://medium.com/@hupinwei/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-pipelines-1967209a5c7a) 6. [(scikit-learn.org)sklearn.preprocessing: Normalization](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.normalize.html#sklearn.preprocessing.normalize)