标准预处理
不同特征的取值范圍千差萬別,常見的解決方法是對不同的特征進行規范化,使它們的特征值落在相同的值域或從屬于某幾個確定的類別,比如小、中和大。一旦解決這個問題,不同的特征類型對算法的影響將大大降低,分類正確率就能有大幅提升。
選擇具區分度的特征、創建新特征等都屬于預處理的范疇。scikit-learn的預處理工具叫作轉換器(Transformer),它接受原始數據集,返回轉換后的數據集。除了處理數值型特征, 轉換器還能用來抽取特征。在這里,我們只看下對數值型特征的預處理方法。
下面用MinMaxScaler類進行基于特征的規范化。
from sklearn.preprocessing import MinMaxScaler這個類可以把每個特征的值域規范化為0到1之間。小值用0代替,大值用1代替,其余值介于兩者之間。
接下來,對數據集X進行預處理。我們在預處理器MinMaxScaler上調用轉換函數。有些轉 換器要求像訓練分類器那樣先進行訓練,但是MinMaxScaler 不需要,直接調用 fit_transform()函數,即可完成訓練和轉換。
X_transformed = MinMaxScaler().fit_transform(XX_transformed與X行列數相等,為同型矩陣。然而,前者每列值的值域為0到1。
還有很多其他類似的規范化方法,對于其他類型的應用和特征類型會很有用。
sklearn.preprocessing.Normalizer:使每條數據各特征值的和為1
用sklearn.preprocessing.StandardScaler:使各特征的均值為0,方差為1
sklearn.preprocessing.Binarizer:將數值型特征的二值化,大于閾值的為 1,反之為0。
參考資料
《Python數據挖掘入門與實踐》
總結
- 上一篇: 判断电离层是否存在自由电子
- 下一篇: 创建流水线