热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

特征选择过滤法(特征相关性分析方差、卡方、互信息)

https:blog.csdn.netdili8870articledetails101506788一、绘图判断一般对于强相关性的两个变量,画图就能定性判断是否相
https://blog.csdn.net/dili8870/article/details/101506788
一、绘图判断

一般对于强相关性的两个变量,画图就能定性判断是否相关

  • 散点图
    • seaborn.scatterplot


  1. # 散点图矩阵初判多变量间关系

  2. data = pd.DataFrame(np.random.randn(200,4)*100, columns = ['A','B','C','D'])

  3. pd.plotting.scatter_matrix(data,figsize=(8,8),

  4. c = 'k',

  5. marker = '+',

  6. diagonal='hist',

  7. alpha = 0.8,

  8. range_padding=0.1)

  9. data.head()


  • 折线图
    • seaborn.lineplot

二、单特征

1.方差选择法

删除方差为0的特征

 

# 计算变量的方差
# 如果方差接近于0,也就是该特征的特征值之间基本上没有差异,这个特征对于样本的区分并没有什么用,剔除
from sklearn.feature_selection import VarianceThreshold
selector = VarianceThreshold(threshold=0.1)#默认threshold=0.0
selector.fit_transform(offline_data_shuffle1[numerical_features])# 查看各个特征的方差,
selector.variances_ ,len(selector.variances_)# 特征对应方差
all_used_features_dict = dict(zip(numerical_features,selector.variances_ ))
all_used_features_dict

View Code  

  • sklearn.feature_selection.VarianceThreshold(threshold=0.0)

三、数值特征与数值特征

1.协方差


  • 如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;
  • 如果协方差维负,说明X,Y反向运动,协方差越小说明反向程度越高;
  • 如果两个变量相互独立,那么协方差就是0,说明两个变量不相关。

2.pearson系数


  • 相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差

    

  • 可以反映两个变量变化时是同向还是反向,如果同向变化就为正,反向变化就为负。由于它是标准化后的协方差,因此更重要的特性来了,它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度。
  • 相关系数分类:
    • 0.8-1.0 极强相关;0.6-0.8 强相关;0.4-0.6 中等程度相关;0.2-0.4 弱相关;0.0-0.2 极弱相关或无相关
  • 假设: 对于Pearson r相关性,两个变量都应该是正态分布的(正态分布变量具有钟形曲线)。其他假设包括线性和同态性。线性度假设分析中每个变量之间存在直线关系,同质性假定数据在回归线上正态分布。

皮尔逊系数/斯皮尔曼系数:衡量2个变量之间的线性相关性。
.00-.19 “very weak”
.20-.39 “weak”
.40-.59 “moderate”
.60-.79 “strong”
.80-1.0 “very strong”

  • 如果>0.8,说明2个变量有明显线性关系,只保留一个,保留与label的皮尔逊系数较大的那个变量或者保留lightgbm AUC最大的那个;

优点:可以通过数字对变量的关系进行度量,并且带有方向性,1表示正相关,-1表示负相关,可以对变量关系的强弱进行度量,越靠近0相关性越弱。

缺点:无法利用这种关系对数据进行预测,简单的说就是没有对变量间的关系进行提炼和固化,形成模型。要利用变量间的关系进行预测,需要使用到下一种相关分析方法,回归分析。

使用场景:当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:

  • 两个变量之间是线性关系,都是连续数据。
  • 两个变量的总体是正态分布,或接近正态的单峰分布。
  • 两个变量的观测值是成对的,每对观测值之间相互独立。

举例1:


  1. # 方法1,numpy.corrcoef,求多个数组的相关系数

  2. import numpy as np

  3. np.corrcoef([a,b,c,d])

  4. # 方法2.计算特征间的pearson相关系数,画heatmap图

  5. plt.figure(figsize = (25,25))

  6. corr_values1 = data[all_used_features].corr() # pandas直接调用corr就能计算特征之间的相关系数

  7. sns.heatmap(corr_values1, annot=True,vmax=1, square=True, cmap="Blues",fmt='.2f')

  8. plt.tight_layout()

  9. # plt.savefig('prepare_data/columns37.png',dpi=600)

  10. plt.show()

  11. # 方法3.Scipy的pearsonr方法能够同时计算相关系数和p-value

  12. import numpy as np

  13. from scipy.stats import pearsonr

  14. np.random.seed(0)

  15. size = 300

  16. x = np.random.normal(0, 1, size)

  17. print("Lower noise", pearsonr(x, x + np.random.normal(0, 1, size)))

  18. print("Higher noise", pearsonr(x, x + np.random.normal(0, 10, size)))

  

 举例2:计算各特征与label的相关系数,并画出直方图


  1. x_cols = [col for col in train_csv.columns if col not in ['信用分'] if train_csv[col].dtype!='object']#处理目标的其他所有特征

  2. labels = []

  3. values = []

  4. for col in x_cols:

  5. labels.append(col)

  6. values.append(np.corrcoef(train_csv[col].values, train_csv.信用分,values)[0, 1])

  7. corr_df = pd.DataFrame({'col_labels':labels, 'corr_values':values})

  8. corr_df = corr_df.sort_values(by = 'corr_values')

  9. ind = np.arange(len(labels))

  10. width = 0.5

  11. fig,ax = plt.subplots(figsize = (12,40))

  12. rects = ax.barh(ind, np.array(corr_df.corr_values.values), color='y')

  13. ax.set_yticks(ind)

  14. ax.set_yticklabels(corr_df.col_labels.values, rotation='horizontal')

  15. ax.set_xlabel('Correlation coefficient')

  16. ax.set_title('Correlation coefficient of the variables')

  


3.距离相关系数

  距离相关系数是为了克服Pearson相关系数的弱点而生的。在  和  这个例子中,即便Pearson相关系数是  ,我们也不能断定这两个变量是独立的(有可能是非线性相关);但如果距离相关系数是  ,那么我们就可以说这两个变量是独立的。

  尽管有MIC和距离相关系数在了,但当变量之间的关系接近线性相关的时候,Pearson相关系数仍然是不可替代的。第一、Pearson相关系数计算速度快,这在处理大规模数据的时候很重要。第二、Pearson相关系数的取值区间是[-1,1],而MIC和距离相关系数都是[0,1]。这个特点使得Pearson相关系数能够表征更丰富的关系,符号表示关系的正负,绝对值能够表示强度。当然,Pearson相关性有效的前提是两个变量的变化关系是单调的。

 4.一元回归及多元回归

准备工作:

  • 第一确定变量的数量
  • 第二确定自变量和因变量

一元回归:y = b0 + b1x

多元回归:y = b0 + b1x1 + b2x2 + ... + bnxn 


5.去掉不相关的列


  1. # 去掉日期列

  2. def drop_date(data):

  3. columns = list(data.columns)

  4. not_date_columns = []

  5. for column in columns:

  6. tmp_num = data[column].max()

  7. if str(tmp_num).find('2017') == -1 and str(tmp_num).find('2016') == -1:

  8. not_date_columns.append(column)

  9. return data[not_date_columns]

  10. # 去掉object、int类型的列

  11. def drop_non_number(data):

  12. data_types = data.dtypes.reset_index()

  13. data_types.columns = ['col','dtype']

  14. data_object = data_types[data_types.dtype=='object'].col.values

  15. data_object = data[data_object]

  16. data_object.to_csv('non_number.csv',index=False)

  17. col_val = data_types[data_types.dtype == 'float64'].col.values

  18. return data[col_val]

  


四、类别特征与类别特征

1.卡方检验

思想:

  • 先假设两个变量确实是独立的(“原假设”),然后观察实际值(观察值)与理论值(这个理论值是指“如果两者确实独立”的情况下应该有的值)的偏差程度,如果偏差足够小,我们就认为误差是很自然的样本误差,是测量手段不够精确导致或者偶然发生的,两者确确实实是独立的,此时就接受原假设;如果偏差大到一定程度,使得这样的误差不太可能是偶然产生或者测量不精确所致,我们就认为两者实际上是相关的,即否定原假设,而接受备择假设.

  • 这个式子就是卡方检验使用的差值衡量公式。当提供了数个样本的观察值x1,x2,…xi,…xn之后,代入到式中就可以求得开方值,用这个值与事先设定的阈值比较,如果大于阈值(即偏差很大),就认为原假设不成立,反之则认为原假设成立。

使用方法:

  • 特征为连续型,可将其分箱,变成有序的类别型特征,然后和label计算卡方值;如果特征为类别型,不需要one-hot
  • 步骤:
    • 步骤1:做出H0,H1这对互斥的假设,计算出H0为真时的期望值,统计出实际的观测值,通过期望值和观测值求得chi-square(卡方),再通过卡方查表(知道自由度和alpha),得到p值。
    • 步骤2&#xff1a;根据p值与α&#xff08;1-置信度&#xff09;的比较&#xff0c;如果p-value<α&#xff0c;则拒绝&#xff08;reject&#xff09;H0&#xff0c;推出H1成立&#xff1b;如果p-value>α&#xff0c;则接受&#xff08;accpet&#xff09;H0&#xff0c;推出H1不成立。
  • p值&#xff1f;为什么小于0.05就很重要&#xff1f;p值的作用&#xff1f;
    • p值可通过计算chi-square后查询卡方分布表得出&#xff0c;用于判断H0假设是否成立的依据。
    • 大部分时候&#xff0c;我们假设错误拒绝H0的概率为0.05&#xff0c;所以如果p值小于0.05&#xff0c;说明错误拒绝H0的概率很低&#xff0c;则我们有理由相信H0本身就是错误的&#xff0c;而非检验错误导致。大部分时候p-value用于检验独立变量与输入变量的关系&#xff0c;H0假设通常为假设两者没有关系&#xff0c;所以若p值小于0.05&#xff0c;则可以推翻H0&#xff08;两者没有关系&#xff09;&#xff0c;推出H1&#xff08;两者有关系&#xff09;。
    • 当p值小于0.05时&#xff0c;我们就说这个独立变量重要&#xff08;significant&#xff09;&#xff0c;因为这个独立变量与输出结果有关系。
    • p-value就是用来判断H0假设是否成立的依据。因为期望值是基于H0假设得出的&#xff0c;如果观测值与期望值越一致&#xff0c;则说明检验现象与零假设越接近&#xff0c;则越没有理由拒绝零假设。如果观测值与期望值越偏离&#xff0c;说明零假设越站不住脚&#xff0c;则越有理由拒绝零假设&#xff0c;从而推出对立假设的成立。
  • sklearn使用方法
  • sklearn源码


  1. sklearn.feature_selection.chi2(X, y)

  2. 参数&#xff1a;

  3. X&#xff1a;{array-like&#xff0c;sparse matrix} shape &#61; (n_samples,n_features)

  4. y&#xff1a;{array-like} shape&#61;(n_samples,)

  5. 返回&#xff1a;

  6. chi2&#xff1a;array&#xff0c;shape&#61;(n_features,) 每个特征的卡方统计数据

  7. pval&#xff1a;array&#xff0c;shape&#61;(n_features,) 每个特征的p值

  8. 算法时间复杂度O&#xff08;n_classes * n_features&#xff09;

举例&#xff1a;


  1. non_neg_cate_feats &#61; [&#39;cardIndex&#39;, &#39;downNetwork&#39;,&#39;signalStrengthNum&#39;,&#39;signalQualityNum&#39;,&#39;mostGridLTE&#39;,&#39;mostGridLTEPlus&#39;,

  2. &#39;signalPerformanceADDNum&#39;,&#39;signalPerformanceDIVNum&#39;,&#39;signalPerformanceMULNum&#39;]

  3. # 卡方检验 用来检验两个样本or变量是否独立

  4. from sklearn.feature_selection import SelectKBest

  5. from sklearn.feature_selection import chi2

  6. X, y &#61; offline_data_shuffle[non_neg_cate_feats], offline_data_shuffle.label

  7. select_k_best &#61; SelectKBest(chi2, k&#61;6) # scores按升序排序&#xff0c;选择排前k名所对应的特征

  8. X_new &#61; select_k_best.fit_transform(X, y)

  9. X_new.shape

  10. p_scores &#61; zip(select_k_best.scores_,select_k_best.pvalues_)

  11. dict_p_scores &#61; dict(zip(non_neg_cate_feats,p_scores))

  12. >>>sorted(dict_p_scores.items(),key&#61;lambda x:x[1],reverse&#61;False)

  13. [(&#39;signalQualityNum&#39;, (0.0047487364247874265, 0.9450604019371723)),

  14. (&#39;cardIndex&#39;, (0.42794079034586147, 0.5130011047102445)),

  15. (&#39;downNetwork&#39;, (4.232840836040372, 0.039649024714896966)),

  16. (&#39;mostGridLTEPlus&#39;, (22.54372206267445, 2.0541471820820565e-06)),

  17. (&#39;signalPerformanceADDNum&#39;, (83.2781756776784, 7.128224882894165e-20)),

  18. (&#39;mostGridLTE&#39;, (108.06852404196152, 2.596443689456046e-25)),

  19. (&#39;signalPerformanceDIVNum&#39;, (114.25902772721962, 1.1435127027103025e-26)),

  20. (&#39;signalPerformanceMULNum&#39;, (118.46298229427805, 1.3729262834830412e-27)),

  21. (&#39;signalStrengthNum&#39;, (176.53365084245885, 2.768884720816111e-40))]

  22. results_indexs &#61; select_k_best.get_support(True)

  23. results &#61; [non_neg_cate_feats[idx] for idx in results_indexs] # 卡方检验选出的6个特征

  24. >>>print(results)

  25. [&#39;signalStrengthNum&#39;, &#39;mostGridLTE&#39;, &#39;mostGridLTEPlus&#39;, &#39;signalPerformanceADDNum&#39;, &#39;signalPerformanceDIVNum&#39;, &#39;signalPerformanceMULNum&#39;]

  26. 卡方检验的结果显示&#xff1a;

  27. p值小于0.05&#xff0c;说明拒绝原假设&#xff08;原假设特征与label是独立的&#xff09;

  28. signalQualityNum、cardIndex与label是独立的&#xff1b;

  29. [&#39;signalStrengthNum&#39;, &#39;mostGridLTE&#39;, &#39;mostGridLTEPlus&#39;, &#39;signalPerformanceADDNum&#39;, &#39;signalPerformanceDIVNum&#39;, &#39;signalPerformanceMULNum&#39;]与label相关

  


2.Fisher得分

对于分类而言&#xff0c;好的特征应该是在同一个类别中的取值比较相似&#xff0c;而在不同类别之间的取值差异比较大&#xff1b;fisher得分越高&#xff0c;特征在不同类别中的差异性越大&#xff0c;在同一类别中的差异性越小&#xff0c;则特征越重要。


3.F检验

作用&#xff1a; 用来判断特征与label的相关性的&#xff0c;F 检验只能表示线性相关关系


4.斯皮尔曼等级相关&#xff08;分类&#xff0c;类别型与类别型&#xff09;

特征为类别型&#xff0c;标签为类别型

Spearman秩相关系数&#xff1a;是度量两个变量之间的统计相关性的指标&#xff0c;用来评估当前单调函数来描述俩个变量之间的关系有多好。 
在没有重复数据的情况下&#xff0c;如果一个变量是另一个变量的严格单调函数&#xff0c;二者之间的spearman秩相关系数就是1或&#43;1 &#xff0c;称为完全soearman相关. 
如果其中一个变量增大时&#xff0c;另一个变量也跟着增大时&#xff0c;则spearman秩相关系数时正的 
如果其中一个变量增大时&#xff0c;另一个变量却跟着减少时&#xff0c;则spearman秩相关系数时负的 
如果其中一个变量变化时&#xff0c;另一个变量没有变化&#xff0c;spearman秩相关系为0 
随着两个变量越来越接近严格单调函数时&#xff0c;spearman秩相关系数在数值上越来越大。

假设:
Spearman等级相关性测试对于分布没有做任何假设。Spearman rho相关的假设是数据必须至少是序数&#xff0c;一个变量上的分数必须与其他变量单调相关。

.10和.29之间表示小关联; 
.30和.49之间;
.50及以上的系数表示大的关联或关系

有序量表对待测量的项目进行排序&#xff0c;以指示它们是否具有更多&#xff0c;更少或相同量的被测量变量。序数量表使我们能够确定X> Y&#xff0c;Y> X&#xff0c;或者如果X &#61; Y。一个例子是排序舞蹈比赛的参与者。排名第一的舞者是比排名第二的舞者更好的舞者。排名第二的舞者是比排名第三的舞者更好的舞者&#xff0c;等等。虽然这个规模使我们能够确定大于&#xff0c;小于或等于&#xff0c;但它仍然没有定义单位之间关系的大小。

 

5.Kendall&#xff08;肯德尔等级&#xff09;相关系数&#xff08;分类&#xff09;

特征为类别型&#xff0c;标签为类别型

肯德尔相关系数是一个用来测量两个随机变量相关性的统计值。 

一个肯德尔检验是一个无参数假设检验&#xff0c;检验两个随机变量的统计依赖性。 
肯德尔相关系数的取值范围在-1到1之间&#xff0c;

当τ为1时&#xff0c;表示两个随机变量拥有一致的等级相关性&#xff1b;当τ为-1时&#xff0c;表示两个随机变量拥有完全相反的等级相关性&#xff1b;

当τ为0时&#xff0c;表示两个随机变量是相互独立的。


6.互信息和最大互系数&#xff08;非参数&#xff09;

&#xff08;1&#xff09;互信息

作用&#xff1a;估计类别特征与label之间的相关性&#xff0c;互信息是非负值。当且仅当两个特征是独立的&#xff0c;它等于0&#xff0c;而更高的值意味着更高的依赖性。

使用方法&#xff1a;

在sklearn中&#xff0c;可以使用mutual_info_classif(分类)和mutual_info_regression(回归)来计算各个输入特征和输出值之间的互信息。使用feature_selection库的SelectKBest类结合最大信息系数法来选择特征

sklearn使用方法

sklearn.feature_selection.mutual_info_classif(X, y, discrete_features&#61;’auto’, n_neighbors&#61;3, copy&#61;True, random_state&#61;None)

参数&#xff1a;

X&#xff1a;shape &#61; (n_samples,n_features)

y&#xff1a;shape &#61; (n_samples)

discrete_features&#xff1a; {&#39;auto&#39;,bool,array_like},默认&#61;&#39;auto&#39;

n_neighbors&#xff1a;int&#xff0c;默认&#61;3&#xff0c;用于连续变量的MI估计的邻居数量&#xff0c;较高的值会减少估算的方差&#xff0c;但是可能引入偏差

copy&#xff1a;bool&#xff0c;默认&#61;True&#xff0c;是否复制给定数据&#xff0c;如果设置为False&#xff0c;则初始数据将被覆盖

random_state&#xff1a;int&#xff0c;RandomState实例或None&#xff0c;可选&#xff0c;默认&#61;None&#xff0c;伪随机数发生器的种子&#xff0c;用于向连续变量添加小噪声以去除重复值。 如果是int&#xff0c;则random_state是随机数生成器使用的种子; 如果是RandomState实例&#xff0c;则random_state是随机数生成器; 如果为None&#xff0c;则随机数生成器是&#96;np.random&#96;使用的RandomState实例。

返回&#xff1a;

mi&#xff1a;ndarray&#xff0c;shape&#61;&#xff08;n_features&#xff09;每个特征与目标之间的互信息

举例&#xff1a;

X, y &#61; data[features], data.label # 互信息 from sklearn.feature_selection import mutual_info_classif mutual_info_classif(X,y)

卡方检验和互信息的区别

  卡方检验对于出现次数较少的特征更容易给出高分。例如某一个特征就出现过一次在分类正确的数据中&#xff0c;则该特征会得到相对高的分数&#xff0c;而互信息则给分较低。其主要原因还是由于互信息在外部乘上了一个该类型出现的概率值&#xff0c;从而打压了出现较少特征的分数。

&#xff08;2&#xff09;最大信息系数

  想把互信息直接用于特征选择其实不是太方便&#xff0c;因为它不属于度量方式&#xff0c;也没有办法归一化&#xff0c;在不同数据及上的结果无法做比较&#xff1b;对于连续变量的计算不是很方便&#xff08;X和 Y 都是集合, xi,y都是离散的取值&#xff09;&#xff0c;通常变量需要先离散化&#xff0c;而互信息的结果对离散化的方式很敏感。

  最大信息系数克服了这两个问题。它首先寻找一种最优的离散化方式&#xff0c;然后把互信息取值转换成一种度量方式&#xff0c;MIC值越大&#xff0c;两个特征间的相似程度越高。minepy提供了MIC功能。

MIC计算三步骤&#xff1a;参考

给定i、j&#xff0c;对XY构成的散点图进行i列j行网格化&#xff0c;并求出最大的互信息值

对最大的互信息值进行归一化

选择不同尺度下互信息的最大值作为MIC值

举例&#xff1a;


  1. import numpy as np

  2. from minepy import MINE

  3. from numpy import array

  4. from sklearn.feature_selection import SelectKBest

  5. def mic(x, y):

  6. m &#61; MINE()

  7. m.compute_score(x, y)

  8. return (m.mic(), 0.5) # 选择 K 个最好的特征&#xff0c;返回特征选择后的数据

  9. mic_select &#61; SelectKBest(lambda X,y: tuple(map(tuple,array(list(map(lambda x:mic(x, y), X.T))).T)), k&#61;10)

  10. X_new&#61; mic_select.fit_transform(X,y) # k个最好的特征在原特征中的索引

  11. mic_results_indexs &#61; mic_select.get_support(True) # 得分

  12. mic_scores &#61; mic_select.scores_ # 特征与最大信息系数的对应

  13. mic_results &#61; [(features[idx],mic_scores[idx]) for idx in mic_results_indexs]

  14. mic_results

  


7.距离相关系数

  好的特征子集应该使得属于同一类的样本距离尽可能小&#xff0c;属于不同类的样本之间的距离尽可能远。同样基于此种思想的有fisher判别分类反法。常用的距离度量&#xff08;相似性度量&#xff09;包括欧氏距离、标准化欧氏距离、马氏距离等。

  距离相关系数是为了克服Pearson相关系数的弱点而生的。在  和  这个例子中&#xff0c;即便Pearson相关系数是  &#xff0c;我们也不能断定这两个变量是独立的&#xff08;有可能是非线性相关&#xff09;&#xff1b;但如果距离相关系数是  &#xff0c;那么我们就可以说这两个变量是独立的。

   


五、数值特征与类别特征

1.数值特征离散化

将数值特征离散化&#xff0c;然后&#xff0c;使用类别与类别变量相关性分析的方法来分析相关性。

数值特征离散化方法

2.箱形图

使用画箱形图的方法&#xff0c;看类别变量取不同值&#xff0c;数值变量的均值与方差及取值分布情况。

如果&#xff0c;类别变量取不同值&#xff0c;对应的数值变量的箱形图差别不大&#xff0c;则说明&#xff0c;类别变量取不同值对数值变量的影响不大&#xff0c;相关性不高&#xff1b;反之&#xff0c;相关性高。

seaborn.boxplot

3.Relief&#xff08;Relevant Features&#xff09;

Relief 借用了“假设间隔”&#xff08;hypothesis marginhypothesis margin&#xff09;的思想&#xff0c;我们知道在分类问题中&#xff0c;常常会采用决策面的思想来进行分类&#xff0c;“假设间隔”就是指在保持样本分类不变的情况下&#xff0c;决策面能够移动的最大距离

当一个属性对分类有利时&#xff0c;则该同类样本在该属性上的距离较近&#xff08;第一项越小&#xff09;&#xff0c;异常样本在该类属性上的距离较远&#xff08;第二项越大&#xff09;&#xff0c;则该属性对分类越有利。

假设数据集D为(x1,y1),(x2,y2),...,(xm,ym)&#xff0c;对每个样本xi&#xff0c;计算与xi同类别的最近邻xi,nh&#xff0c;称为是“猜中近邻”(near-heat)&#xff0c;然后计算与xi非同类别的最近邻xi,nm&#xff0c;称为是“猜错近邻”&#xff08;near-miss&#xff09;&#xff0c;具体点我

对离散型特征&#xff1a;

对连续型特征&#xff1a;

适用场景&#xff1a;二分类

举例&#xff1a;二分类 


4.Relief-F

适用场景&#xff1a;多分类

 

参考文献&#xff1a;

【1】特征选择&#xff1a; 卡方检验、F 检验和互信息

【2】特征工程总结&#xff08;三&#xff09;特征相关性分析

【3】P值解释和误区

【4】机器学习特征选择之卡方检验与互信息

【5】Maximal Information Coefficient (MIC)最大互信息系数详解与实现

【6】结合Scikit-learn介绍几种常用的特征选择方法

【7】Sklearn中的f_classif和f_regression

【8】特征选择&#xff1a;方差选择法、卡方检验、互信息法、递归特征消除、L1范数、树模型

【9】结合Scikit-learn介绍几种常用的特征选择方法&#xff08;优秀&#xff09;

【10】Relief 特征选择算法简单介绍

【11】Relief特征选择算法Python实现

【12】浅谈关于特征选择算法与Relief的实现

转:https://www.cnblogs.com/nxf-rabbit75/p/11122415.html

相关资源&#xff1a;数据特征分析&#xff1a;相关性分析&#xff08;Pandas中的corr方法&#xff09;


推荐阅读
  • seaborn箱线图_Seaborn线图的数据可视化
    seaborn箱线图Hello,folks!Inthisarticle,wewillbetakingtheSeaborntutorialaheadandunderstandingt ... [详细]
  • 开发笔记:共享单车数据分析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了共享单车数据分析相关的知识,希望对你有一定的参考价值。共享单车数据分析和共享单车用户行为分析PPT从数据分 ... [详细]
  • 全卷积网络fcn详解_全卷积神经网络原理
    全卷积网络fcn详解_全卷积神经网络原理原文链接:全卷积网络FCN详解背景CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题。神经网 ... [详细]
  • 循环发电厂电能输出预测
    前言本次项目是就某联合循环发电厂的数据,运用线性回归模型进行预测电能输出,若文中出现错误的地方,还望指正,谢谢!目录1.数据来源及背景2.数据探索分析3.相关分析4.回 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 本文介绍了Hive常用命令及其用途,包括列出数据表、显示表字段信息、进入数据库、执行select操作、导出数据到csv文件等。同时还涉及了在AndroidManifest.xml中获取meta-data的value值的方法。 ... [详细]
  • 前言:拿到一个案例,去分析:它该是做分类还是做回归,哪部分该做分类,哪部分该做回归,哪部分该做优化,它们的目标值分别是什么。再挑影响因素,哪些和分类有关的影响因素,哪些和回归有关的 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • pythonMatplotlib(二)
    Matplotlib+pandas作图一、对csv文件进行提取ruixi.csv对上述表格进行提取并做图画出图像二、对.xlsx进行提取:rui ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
  • 如何在mysqlshell命令中执行sql命令行本文介绍MySQL8.0shell子模块Util的两个导入特性importTableimport_table(JS和python版本 ... [详细]
  • Ihavethisfollowinginputfile:我有以下输入文件:test.csvdone_cfg,,,,port<0>,clk_in,subcktA,ins ... [详细]
author-avatar
风云再起2012668
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有