特征选择的几种方法

更新时间:2023-07-31 20:42:59 阅读: 评论:0

特征选择的⼏种⽅法
小儿心率
1、过滤法(Filter)
1.1⽅差选择法
  使⽤⽅差选择法,先要计算各个特征的⽅差,然后根据阈值,选择⽅差⼤于阈值的特征。使⽤feature_lection库的VarianceThreshold类来选择特征的代码如下:
from sklearn.feature_lection import VarianceThreshold
#⽅差选择法,返回值为特征选择后的数据
#参数threshold为⽅差的阈值
VarianceThreshold(threshold=3).fit_transform(iris.data)
1.2相关系数法
  使⽤相关系数法,先要计算各个特征对⽬标值的相关系数以及相关系数的P值。⽤feature_lection库的SelectKBest类结合相关系数来选择特征的代码如下:
from sklearn.feature_lection import SelectKBest
from scipy.stats import pearsonr
#选择K个最好的特征,返回选择特征后的数据
#第⼀个参数为计算评估特征是否好的函数,该函数输⼊特征矩阵和⽬标向量,输出⼆元组(评分,P值)的数组,数组第i项为第i个特征的评分和P值。在此定义为计算相关系数
#参数k为选择的特征个数
SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)
1.3卡⽅检验
  经典的卡⽅检验是检验定性⾃变量对定性因变量的相关性。假设⾃变量有N种取值,因变量有M种取值,考虑⾃变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:
  不难发现,这个统计量的含义简⽽⾔之就是⾃变量对因变量的相关性。⽤feature_lection库的SelectKBest类结合卡⽅检验来选择特征的代码如下:
from sklearn.feature_lection import SelectKBest
超越自我的名言
from sklearn.feature_lection import chi2
#选择K个最好的特征,返回选择特征后的数据
SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)
1.4互信息法
  经典的互信息也是评价定性⾃变量对定性因变量的相关性的(例如决策树ID3算法),互信息计算公式如下:
  为了处理定量数据,最⼤信息系数法被提出,使⽤feature_lection库的SelectKBest类结合最⼤信息系数法来选择特征的代码如下:
from sklearn.feature_lection import SelectKBest
关于茶叶的诗句
from minepy import MINE
#由于MINE的设计不是函数式的,定义mic⽅法将其为函数式的,返回⼀个⼆元组,⼆元组的第2项设
置成固定的P值0.5
def mic(x, y):
m = MINE()
return(m.mic(),0.5)
#选择K个最好的特征,返回特征选择后的数据
SelectKBest(lambda X, Y: array(map(lambda x:mic(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)
1.5 relief算法
Relief算法最早由Kira提出.基本内容:从训练集D中随机选择⼀个样本R,然后从和R同类的样本中寻找k最近邻样本H,从和R不同类的样本中寻找k最近邻样本M,最后按照公式更新特征权重.
Relief算法python实现:blog.csdn/qq_40871363/article/details/86511843
2、包裹法(Wrapper)
2.1递归特征消除法
方脸适合什么短发  递归消除特征法使⽤⼀个基模型来进⾏多轮训练,每轮训练后,消除若⼲权值系数的特征,再基于新的特征集进⾏下⼀轮训练。使⽤feature_lection库的RFE类来选择特征的代码如下:
from sklearn.feature_lection import RFE
from sklearn.linear_model import LogisticRegression
#递归特征消除法,返回特征选择后的数据
#参数estimator为基模型
#参数n_features_to_lect为选择的特征个数
RFE(estimator=LogisticRegression(), n_features_to_lect=2).fit_transform(iris.data, iris.target)
2.2特征⼲扰法
秦桧死因
特征选择原理:⽤加上噪声的特征和原特征下的误差对⽐来评价特征重要性,误差越⼤,说明特征越重要。以随机森林为例:
对随机森林中的每⼀颗决策树,⽤OOB(袋外数据)计算误差errOOB1;
对OOB所有样本特征X加上噪声⼲扰,再次计算误差errOOB2;
N棵树,特征X的重要性=
若某个特征加上噪声后,袋外的准确率⼤幅度降低,说明此特征对于样本的分类结果影响很⼤,即重要程度越⾼。
sklearn中会对每个特征赋予⼀个分数,分数越⼤,特征越重要,因此,可以根据特征重要性排序,然后选择最佳特征组合;
RandomForestClassifier(n_estimators=200,oob_score=True)
oob_score :bool(default=Fal) Whether to u out-of-bag samples to estimate the generalization accuracy.
oob_score:bool(默认=Fal)是否使⽤袋外样品进⾏估算泛化精度。
3、嵌⼊法(Embedded)
嵌⼊特征选择⽅法和算法本⾝紧密结合,在模型训练过程中完成特征选择。例如,
决策树算法每次都选择分类能⼒最强的特征;
线性回归+L2正则化:某些信号⽐较弱的特征权重减⼩;
线性回归+L1正则化:某些信号⽐较弱的特征权重为0;
弹性⽹络:L1惩罚项降维的原理在于保留多个对⽬标值具有同等相关性的特征中的⼀个,所以没选到的特征不代表不重要。
3.1基于惩罚项的特征选择法
考公考什么  使⽤带惩罚项的基模型,除了筛选出特征外,同时也进⾏了降维。使⽤feature_lection库的SelectFromModel类结合带L1惩罚项的逻辑回归模型,来选择特征的代码如下:
from sklearn.feature_lection import SelectFromModel
from sklearn.linear_model import LogisticRegression
#带L1惩罚项的逻辑回归作为基模型的特征选择
SelectFromModel(LogisticRegression(penalty="l1", C=0.1)).fit_transform(iris.data, iris.target)
3.2基于树模型的特征选择法
  树模型中GBDT也可⽤来作为基模型进⾏特征选择,使⽤feature_lection库的SelectFromModel类结合GBDT模型,来选择特征的代码如下:
from sklearn.feature_lection import SelectFromModel
ble import GradientBoostingClassifier
#GBDT作为基模型的特征选择
SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)最新会计准则
4、机器学习中的特征选择和优缺点
4、机器学习中的特征选择和优缺点
参考:blog.csdn/piaodexin/article/details/77203696
————————————————房地产销售说辞
版权声明:本⽂为CSDN博主「Rnan-prince」的原创⽂章,遵循CC 4.0 BY-SA版权协议,转载请附上原⽂出处链接及本声明。原⽂链接:blog.csdn/qq_19446965/article/details/104229910

本文发布于:2023-07-31 20:42:59,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1125071.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:特征   选择   样本   模型   变量   代码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图