數據挖掘的步驟
我們使用sklearn進行虛線框內的工作(sklearn也可以進行文本特征提取)。通過分析sklearn源碼,我們可以看到除訓練,預測和評估以外,處理其他工作的類都實現了3個方法:fit、transform和fit_transform。從命名中可以看到,fit_transform方法是先調用fit然后調用transform,我們只需要關注fit方法和transform方法即可。
transform方法主要用來對特征進行轉換。從可利用信息的角度來說,轉換分為無信息轉換和有信息轉換。無信息轉換是指不利用任何其他信息進行轉換,比如指數、對數函數轉換等。有信息轉換從是否利用目標值向量又可分為無監督轉換和有監督轉換。無監督轉換指只利用特征的統計信息的轉換,統計信息包括均值、標准差、邊界等等,比如標准化、PCA法降維等。有監督轉換指既利用了特征信息又利用了目標值信息的轉換,比如通過模型選擇特征、LDA法降維等。通過總結常用的轉換類,我們得到下表:
包 | 類 | 參數列表 | 類別 | fit方法有用 | 說明 |
sklearn.preprocessing | StandardScaler | 特征 | 無監督 | Y | 標准化 |
sklearn.preprocessing | MinMaxScaler | 特征 | 無監督 | Y | 區間縮放 |
sklearn.preprocessing | Normalizer | 特征 | 無信息 | N | 歸一化 |
sklearn.preprocessing | Binarizer | 特征 | 無信息 | N | 定量特征二值化 |
sklearn.preprocessing | OneHotEncoder | 特征 | 無監督 | Y | 定性特征編碼 |
sklearn.preprocessing | Imputer | 特征 | 無監督 | Y | 缺失值計算 |
sklearn.preprocessing | PolynomialFeatures | 特征 | 無信息 | N | 多項式變換(fit方法僅僅生成了多項式的表達式) |
sklearn.preprocessing | FunctionTransformer | 特征 | 無信息 | N | 自定義函數變換(自定義函數在transform方法中調用) |
sklearn.feature_selection | VarianceThreshold | 特征 | 無監督 | Y | 方差選擇法 |
sklearn.feature_selection | SelectKBest | 特征/特征+目標值 | 無監督/有監督 | Y | 自定義特征評分選擇法 |
sklearn.feature_selection | SelectKBest+chi2 | 特征+目標值 | 有監督 | Y | 卡方檢驗選擇法 |
sklearn.feature_selection | RFE | 特征+目標值 | 有監督 | Y | 遞歸特征消除法 |
sklearn.feature_selection | SelectFromModel | 特征+目標值 | 有監督 | Y | 自定義模型訓練選擇法 |
sklearn.decomposition | PCA | 特征 | 無監督 | Y | PCA降維 |
sklearn.lda | LDA | 特征+目標值 | 有監督 | Y | LDA降維 |
示例代碼:
把 StandardScaler
, PCA
, LogisticRegression
運用管道連接起來
from sklearn.preprocessing import StandardScaler |
Test Accuracy: 0.956
可以把 Pipeline
當作對這些轉化器(trainsformers)和估算器(estimators)的封裝。