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