【特征选择】嵌入式特征选择法
原創(chuàng)博文,轉(zhuǎn)載請注明出處!
??? 嵌入式特征選擇法使用機(jī)器學(xué)習(xí)模型進(jìn)行特征選擇。特征選擇過程與學(xué)習(xí)器相關(guān),特征選擇過程與學(xué)習(xí)器訓(xùn)練過程融合,在學(xué)習(xí)器訓(xùn)練過程中自動進(jìn)行特征選擇。
?
通過L1正則化來選擇特征
?
????? sklearn在feature_selection模塊中集成的模型SelectFromModel實現(xiàn)了嵌入式特征選擇,SelectFromModel模型通過sklearn內(nèi)置的機(jī)器學(xué)習(xí)模型提供的特征重要性指標(biāo)coef_或feature_importance對特征進(jìn)行選擇,即如果特征的coef_或feature_importance的值低于預(yù)設(shè)的閾值,則移除低于閾值的特征。其中閾值的設(shè)定可以指定,也可以通過啟發(fā)式方法選擇合適的閾值。啟發(fā)式的方法通常有mean、median等。
# L1+LR特征選擇
# -*- coding: utf-8 -*- """ # author: wanglei5205 # blog:http://cnblogs.com/wanglei5205 # github:http://github.com/wanglei5205""" ### 生成數(shù)據(jù) from sklearn.datasets import make_classification X, y = make_classification(n_samples=1000, # 樣本個數(shù)n_features=25, # 特征個數(shù)n_informative=3, # 有效特征個數(shù)n_redundant=2, # 冗余特征個數(shù)(有效特征的隨機(jī)組合)n_repeated=0, # 重復(fù)特征個數(shù)(有效特征和冗余特征的隨機(jī)組合)n_classes=8, # 樣本類別n_clusters_per_class=1, # 簇的個數(shù)random_state=0)### 特征選擇 from sklearn.linear_model import LogisticRegression lr = LogisticRegression(penalty="l1",C=0.1)from sklearn.feature_selection import SelectFromModel X_L1 = SelectFromModel(estimator = lr).fit_transform(X,y)### 數(shù)據(jù)劃分 from sklearn.model_selection import train_test_split x_a_train,x_a_test,y_a_train,y_a_test = train_test_split(X,y,random_state = 33,test_size = 0.25) x_b_train,x_b_test,y_b_train,y_b_test = train_test_split(X_L1,y,random_state = 33,test_size = 0.25)### 效果比較 from sklearn.svm import SVC svc1 = SVC().fit(x_a_train,y_a_train) print(svc1.score(x_a_test,y_a_test))from sklearn.svm import SVC svc2 = SVC().fit(x_b_train,y_b_train) print(svc2.score(x_b_test,y_b_test))# 參考博客
http://www.cnblogs.com/stevenlk/p/6543646.html
轉(zhuǎn)載于:https://www.cnblogs.com/wanglei5205/p/8977986.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的【特征选择】嵌入式特征选择法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 30分钟全面解析-SQL事务+隔离级别+
- 下一篇: 伸缩导航及页面伸缩