機器學習進階 第一節 第四課

我是小白呀發表於2020-12-07

概述

特徵選擇 (future selection): 目的是剔除不相關 (irrelevant) 或冗餘 (redundant) 的特徵, 從而達到減少特徵個數.

特徵選擇就是單純地從提取到的所有特徵中選擇部分特徵作為訓練集特徵. 特徵在選擇在選擇前和選擇後可以改變值, 也不該變值. 但是選擇後的特徵維數肯定比選擇前小, 畢竟我們只選擇了其中的一部分特徵.

主要方法

  1. Filter (過濾式): VarianceThreshold
  2. Embedd (嵌入式): 正則化, 決策樹
  3. Wrapper (包裹式)

VarianceThreshold 語法

VarianceThreshold(threshold = 0.0) 刪除所有低方差特徵

Variance.fit_transform(X)

  • X: numpy array 格式的資料[n_samples, n_features]
  • 返回值:訓練集差異低於 threshold 的特徵將被刪除
  • 預設值是保留所有非零方差特徵, 即刪除所有樣本中具有相同值的特徵

流程

  1. 初始化 VarianceThreshold, 指定閾值方差
  2. 呼叫 fit_transform
from sklearn.feature_selection import VarianceThreshold

def var():
    """
    特徵選擇: 刪除低方差的特徵
    :return: None
    """

    var = VarianceThreshold(threshold= 1.0)
    data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])

    print(data)
    return None

if __name__ == "__main__":
    var()

輸出結果:
[[0]
 [4]
 [1]]

噪點

在這裡插入圖片描述

其他特徵選擇方法

  • 神經網路

sklearn 主成分分析 API

sklearn.decomposition

PCA 是什麼

本質: PCA 是一種分析, 簡化資料集的技術.

目的: 是資料維數壓縮, 儘可能降低原資料的維度 (複雜度), 損失少量資訊.

作用: 可以削減迴歸分析或者聚類分析中特徵的數量.
在這裡插入圖片描述

PCA 語法

PCA(n_componts=None) 將資料分解為較低維度空間

PCA.fit_transform(X)

  • X: numpy array 格式的資料 [n_samples, n_features]
  • 返回值: 轉換後指定維度的 array

PCA 流程 (程式碼演示)

  1. 初始化 PCA, 指定減少後的維度
  2. 呼叫 fit_transform
from sklearn.decomposition import PCA

def pca():
    """
    主成分分析進行特徵降維
    :return:
    """

    pca = PCA(n_components=0.9)
    data = pca.fit_transform([[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]])

    print(data)
    return None


if __name__ == "__main__":
    pca()

輸出結果:
[[ 0.          3.82970843]
 [-5.74456265 -1.91485422]
 [ 5.74456265 -1.91485422]]

相關文章