Feature-Selection
使用 scikit learn 識別特徵選擇後的過濾特徵
這是我在 Python中的特徵選擇方法的代碼:
from sklearn.svm import LinearSVC from sklearn.datasets import load_iris iris = load_iris() X, y = iris.data, iris.target X.shape (150, 4) X_new = LinearSVC(C=0.01, penalty="l1", dual=False).fit_transform(X, y) X_new.shape (150, 3)
但是在獲得新的 X(因變量 - X_new) 之後,我怎麼知道哪些變量被刪除以及在這個新的更新變量中考慮了哪些變量?(刪除哪一個或哪三個存在於數據中。)
獲得此標識的原因是對新的測試數據應用相同的過濾。
您可以做兩件事:
- 檢查
coef_
參數並檢測忽略了哪一列- 使用相同的模型進行輸入數據轉換使用方法
transform
您的示例的小修改
>>> from sklearn.svm import LinearSVC >>> from sklearn.datasets import load_iris >>> from sklearn.cross_validation import train_test_split >>> >>> iris = load_iris() >>> x_train, x_test, y_train, y_test = train_test_split( ... iris.data, iris.target, train_size=0.7 ... ) >>> >>> svc = LinearSVC(C=0.01, penalty="l1", dual=False) >>> >>> X_train_new = svc.fit_transform(x_train, y_train) >>> print(X_train_new.shape) (105, 3) >>> >>> X_test_new = svc.transform(x_test) >>> print(X_test_new.shape) (45, 3) >>> >>> print(svc.coef_) [[ 0. 0.10895557 -0.20603044 0. ] [-0.00514987 -0.05676593 0. 0. ] [ 0. -0.09839843 0.02111212 0. ]]
如您所見,方法
transform
為您完成所有工作。而且從coef_
矩陣你可以看到最後一列只是一個零向量,所以你模型忽略數據中的最後一列