資料處理與特徵工程
本課程會從資料科學實務流程開始,為所有學員建立基礎且完整的資料處理架構,接著會根據不同資料類型、不同目的與需求講授不同方法,這些方法雖然多,卻都是很基礎、很重要,且也很好理解的技術,期望參與學員都要掌
內容簡介
作者介紹
適合人群
你將會學到什麼
購買須知
-
程式碼與簡報
-
資料處理與特徵工程-程式碼檔案
from sklearn.datasets import load_iris import pandas as pd import numpy as np import seaborn as sns from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import Binarizer from sklearn.ensemble import RandomForestClassifier from matplotlib import pyplot as plt from sklearn.feature_selection import SelectKBest, chi2 from sklearn.feature_selection import RFE # 輸入資料 data = load_iris() df = pd.DataFrame(data=data.data, columns=data.feature_names) df_y = data['target'] df.head() #count nan df.isnull().sum() #count 0 df.isin([0]).sum() max(df['sepal length (cm)']) min(df['sepal length (cm)']) np.mean(df['sepal length (cm)']) np.std(df['sepal length (cm)']) sns.boxplot(y=df['sepal length (cm)']) sns.histplot(df['sepal length (cm)']) df.drop_duplicates(keep='last') df.nunique() #算出現頻率,眾數 df['sepal length (cm)'].value_counts() #中位數 np.percentile(df['sepal length (cm)'], 50) scaler = StandardScaler() scaled_data = scaler.fit_transform(df) #One-Hot Encoding s = pd.Series(list('abca')) pd.get_dummies(s) #binarizer binarizer_1 = Binarizer(5) binarizer_1.fit_transform(df[['sepal length (cm)']]) #binning bins = [ 0, 5,10] pd.cut(df['sepal length (cm)'], bins,labels=["A", "B"]) rf = RandomForestClassifier() rf.fit(df, df_y) sorted_idx = rf.feature_importances_.argsort() plt.barh(df.columns, rf.feature_importances_[sorted_idx]) plt.xlabel("Random Forest Feature Importance") # chi-square KBest = SelectKBest(chi2, k=2).fit(df, df_y) cols = KBest.get_support() features_df_new = df.iloc[:,cols] #Recursive Feature Elimination rfe = RFE(RandomForestClassifier()) rfe = rfe.fit(df, df_y) f = rfe.get_support(2) #the most important features features_df_new = df.iloc[:,f]
-
資料處理與特徵工程-簡報檔
資料科學流程 資料處理與特徵工程 為什麼需要資料處理與特徵工程 資料處理與特徵工程的重要性 「垃圾進,垃圾出」 「數據和特徵決定了機器學習的上限,而模型和算法只是逼近這個上限而已」 資料科學裡最需要創意的一環 需要腦力激盪 需要知道領域知識 知道甚麼特徵在過去是有用的 類別型特徵 通常需要作處理 維度太多會造成太稀疏的矩陣 較難填補缺失值 數值型特徵 比較容易作為演算法的 input 可以是 float,integer 較容易填補遺失值 套件介紹 scikit-learn - 資料前處理,回歸,分類演算法 pandas - 數據分析與操作 numpy - 維度陣列與矩陣運算,提供大量的數學函式庫 seaborn - 畫圖 Part 1 - 資料處理 資料處理 資料探索性分析(Exploratory Data Analysis-EDA) 重覆與單一數值 缺失值處理 標準化 編碼( Encoding) 類別型 數值型 EDA-敘述統計 觀看資料分布的方法 number of NAN number of 0 Max min mean …etc EDA-箱型圖 箱型圖是一個能夠通過 5 個數字來描述數據的分佈的標準方式,這5個數字包括:最小值,第一分位,中位數,第三分位數,最大值。 EDA-直方圖 簡單直觀,很容易根據柱子的長短看出值的大小。 重覆與單一數值 刪除重複資料:若兩筆或以上資料在所有特徵的內容皆相同,則會刪除重複並僅保留一筆資料 特徵欄位若僅包含單一數值或單一類別將不納入建模 缺失值處理 捨棄 補值 固定數值 平均值:基礎 眾數 中位數:對於離群值可以避免受其影響 用其它行去做預測 Standardization 提升模型的收斂速度 提高模型的精準度 類別型 Encoding 標籤編碼( Label Encoding ): 把每個類別轉換到某個整數,不會增加新欄位,使用時機通常是該資料中不同類別是有序的。ex. 類別有小孩、年輕人、老人,根據年齡分組,使用標籤編碼表示為 0, 1, 2 是合理的,因為年齡上老人 > 年輕人、年輕人 > 小孩 獨熱編碼(One-Hot Encoding): 為每個類別新增一個欄位,用 0/1 表示是否。使用時機通常是該資料中不同類別是無序的。 數值型 Encoding Binarizer:根據閾值將數值型轉變為二進制型,閾值可以進行設定,另外只能對數值型數據進行處理 binning:使用邊界,轉成多個組別 Part 2 - 特徵工程 特徵工程 特徵選擇 (Feature Selection) 1.1 Random Forest 1.2 卡方檢定 1.3 Recursive Feature Elimination(RFE) 2. 特徵建立(Feature Construction) 3. 特徵組合(Feature Combination) 4. 特徵交互(Features Interaction) 5. 特徵提取 (Feature Extraction) Random Forest(隨機森林) 介紹 隨機森林是決策樹的組成 甚麼決策樹? 決策樹 決策樹的 Gini 不純度 (Gini Impurity) Random Forest(隨機森林) 為甚麼是隨機? Ans:因為需要隨機抽樣。 特徵選擇 (Feature Selection) 卡方檢定:自變數與因變數的關係,有關、或者獨立互不影響 Recursive Feature Elimination:通過學習器返回的 coef_ 屬性 或者 feature_importances_ 屬性來獲得每個特徵的重要程度。 然後,從當前的特徵集合中移除最不重要的特徵。在特徵集合上不斷的重複遞歸這個步驟,直到最終達到所需要的特徵數量爲止 特徵建立(Feature Construction) user 購物的資料 aggregate 得到 total spend spend in last week 、spend in last month 、spend in last year 某些區域的銷售業績 店內某些品牌的業績 2. 身高、體重、BMI 特徵組合(Feature Combination) continuous 和 categorical ex. Age+Male/Female ex. 某些疾病在某個性別與年齡層的分佈狀況 2. categorical 和 categorical ex. rich/middle/poor +male/female 特徵交互 (Features Interaction) 針對 continuous 特徵 假設你有 A 和 B 兩個 continuous 特徵 你可以用 A + B、A - B、A * B 或 A / B Ex. 購物的資料 spend/people = spend per person family spend = family_member1+family_member2… 品項業績 = 品項*單價金額 女性業績 = 全部業績 - 男性業績
-
-
影片
-
資料處理與特徵工程 - 精選影片1 - 資料科學流程與特徵工程重要性
資料科學流程: 很多資料來源蒐集到的資料→Raw Data→Clean and Transform→產生有用特徵→建模→獲取洞見 特徵工程重要性: - 「垃圾進,垃圾出」是資料科學典型的名言,代表資料若沒有產生適當的特徵,訓練出的模型也不會有好的結果。 - 特徵會牽涉到領域知識,它可以幫助我們提升模型訓練的成效與洞見。 - 數據與特徵本身就決定了機器學習的上限,而模型就只是逼近該上限而已。 特徵工程在資料科學扮演的角色: - 屬於最有創意的一環 - 需要許多腦力激盪 - 最能影響模型效能的過程
-
資料處理與特徵工程 - 精選影片2 - 數值型與類別型特徵介紹
類別型特徵 - 通常會需要處理 - 模型都要以「數值」型態進行運算,因此模型無法計算類別型特徵 - 維度過高容易產生稀疏性 - 缺失值比較難填補 數值型特徵 - 例如:溫度、銷售量 - 比較容易演算法輸入以進行計算 - 遺失值比較容易補值
-
資料處理與特徵工程 - 精選影片3 - 探索性資料分析(EDA)
EDA 有許多觀看資料分布的方法,包含: 1. 確認遺失值(missing data、NaN)的數量-通常有可能是人為失誤、機器紀錄有問題才會導致沒有資料的情況 2. 每個欄位是否有很多「零」,如有太多零則該欄位對結果的鑑別能力會很低 3. 計算些統計量,像是平均數、標準差、最大值或最小值,可知道每個欄位的資料分布與特性 4. 箱型圖:由最小值、第一分位數、中位數、第三分位數與最大值所組成,可呈現出某個欄位資料的集中趨勢與離群值數量 5. 直方圖:可看出某個欄位資料的分布狀況,諸如大部分數值都趨向數值小的分布等。
-
資料處理與特徵工程 - 精選影片4 - 重複與單一數值、缺失值處理
重覆與單一數值 刪除重複資料:若兩筆或以上資料在所有特徵的內容皆相同,則會刪除重複並僅保留一筆資料 特徵欄位若僅包含單一數值或單一類別將不納入建模 缺失值處理 捨棄 補值 固定數值 平均值:基礎 眾數 中位數:對於離群值可以避免受其影響 用其它行去做預測
-
資料處理與特徵工程 - 精選影片5 - 標準化、類別型與數值型變數的Encoding
Standardization 提升模型的收斂速度 提高模型的精準度 類別型 Encoding 標籤編碼( Label Encoding ): 把每個類別轉換到某個整數,不會增加新欄位,使用時機通常是該資料中不同類別是有序的。ex. 類別有小孩、年輕人、老人,根據年齡分組,使用標籤編碼表示為 0, 1, 2 是合理的,因為年齡上老人 > 年輕人、年輕人 > 小孩 獨熱編碼(One-Hot Encoding): 為每個類別新增一個欄位,用 0/1 表示是否。使用時機通常是該資料中不同類別是無序的。 數值型 Encoding Binarizer:根據閾值將數值型轉變為二進制型,閾值可以進行設定,另外只能對數值型數據進行處理 binning:使用邊界,轉成多個組別
-
資料處理與特徵工程 - 精選影片6 - 資料處理程式碼範例
資料處理程式碼範例
-
資料處理與特徵工程 - 精選影片7 - 特徵挑選
Random Forest(隨機森林) 介紹 隨機森林是決策樹的組成 甚麼決策樹? 卡方檢定:自變數與因變數的關係,有關、或者獨立互不影響 Recursive Feature Elimination:通過學習器返回的 coef_ 屬性 或者 feature_importances_ 屬性來獲得每個特徵的重要程度。 然後,從當前的特徵集合中移除最不重要的特徵。在特徵集合上不斷的重複遞歸這個步驟,直到最終達到所需要的特徵數量爲止
-
資料處理與特徵工程 - 精選影片8 - 特徵建立、特徵組合、特徵交互
特徵建立(Feature Construction) 特徵組合(Feature Combination) 特徵交互 (Features Interaction)
-
資料處理與特徵工程 - 精選影片9 - 特徵工程程式碼範例
特徵工程程式碼範例
-
資料處理與特徵工程 - 精選影片10 - 案例1-失智症研究
資料處理與特徵工程 案例 失智症研究
-
資料處理與特徵工程 - 精選影片11 - 案例2-貨運量分析
資料處理與特徵工程 案例 貨運量分析
-