Sklearn中的f_classif和f_regression
来源:互联网 发布:java就业培训教程 pdf 编辑:程序博客网 时间:2024/05/20 07:53
这两天在看Sklearn的文档,在feature_selection一节中遇到俩f值,它们是用来判断模型中特征与因变量的相关性的。刚开始看的时候一头雾水,因为需要数理统计中方差分析的背景,现在在这里简要剖析一下这两个方法的原理和用法。
我们先来看看sklearn的API是怎么解释这两个方法的:
Compute the ANOVA F-value for the provided sample. ——sklearn.feature_selection.f_classif
f_calssif计算ANOVA中的
下面是对f_regression的解释,更晕了。。
Univariate linear regression tests.
Linear model for testing the individual effect of each of many regressors. This is a scoring function to be used in a feature seletion procedure, not a free standing feature selection procedure.
This is done in 2 steps:
The correlation between each regressor and the target is computed, that is,
((X[:, i] - mean(X[:, i])) * (y - mean_y)) / (std(X[:, i]) * std(y)).
It is converted to an F score then to a p-value.
——sklearn.feature_selection.f_regression
方差分析(ANOVA)
在传统的统计学中
我们开发出了一种降血压的药,需要检验这个降血压药品的药效如何。我们就做了如下实验,给定不同剂量,分别是0,1,2,3,4这四个级别的剂量(0剂量表示病人服用了安慰剂),给4组病人服用,在一定时间后测量病人的血压差,在得到数据以后。我们要问,这种新药是不是有显著药效,也就是说病人的血压差是不是显著的不等于0。
数据如下:
我们得到了5个总体
继而构造检验统计量
举这个例子是为了说明
ps:你似乎可以隐隐的感受到,这似乎是在说变量
f_calssif
前面做了那么多铺垫,终于进入正题了。前面提到利用
那么在机器学习的分类问题中,怎么理解呢?
我们可以把样本所属的不同的类别视作不同的总体,假设是个二分类问题,我们要考虑特征
当样本
我们当然希望集合
所以我们可以根据样本的某个特征
另外,我们也可以利用f_calssif方法来计算两个特征之间的相关性,前提是其中一个变量是离散型的类别变量。
f_regression
前面讲了在分类问题中的
那么回归问题中,怎么算
我们参照sklearn官方给的公式:
似曾相识的感觉,我们把它写的规范一点,是这样的:
式中
那么这个我们一直在讨论的
学过统计的旁友可能还会记得,我们常用
如果你还是有点迷糊,我们再来总结一下:
要计算f_regression中的
f 值,我们首先要计算的是ri=(X[:,i]−mean(X[:,i])(y−mean(y))std(X[:,i])std(y) ,这个就是i号特征和因变量y之间的样本相关系数。我们计算的
f=r2i1−r2i∗(n−2) ,才是f_regression中的f 值,服从F(1,n−2) 分布。f 值越大,i号特征和因变量y之间的相关性就越大,据此我们做特征选择。
关于p-value的碎碎念
如果你参考了这两个方法的API,会看到这个方法返回两个变量,一个是
小结
其实你可以看到,Sklearn中的f_classif和f_regression基于的原理是有所差异的,前者是基于方差分析的检验统计量
如果看了这篇文章你还闹不清的话,请记住
- Sklearn中的f_classif和f_regression
- sklearn中的交叉验证和数据划分
- 数据归一化和其在sklearn中的处理
- Sklearn中的随机森林
- sklearn 中的 Pipeline 机制
- sklearn 中的 Pipeline 机制
- sklearn中的模型评估
- sklearn中的nearest neighbor
- sklearn中的线性回归
- sklearn 中的 Pipeline 机制
- sklearn中的模型评估
- sklearn中的数据预处理
- sklearn中的Pipeline
- sklearn.linear_model中的LogisticRegression
- sklearn中的PCA
- sklearn中的模型评估
- Sklearn 中的 GridSearchCV
- sklearn中的Pipeline机制
- 逆向工程重复生成代码导致出错
- 从键盘任意输入三角形的三边长为a,b,c,编程判断a,b,c的值能否构成一个三角形,若能,请算出面积·若不能就输出不能构成三角形。
- 【面向对象】面向对象五大原则
- 【hadoop】启动hadoop进程提示Permission denied
- RecyclerView 使用Glide加载远端图片导致图片错乱问题解决。
- Sklearn中的f_classif和f_regression
- GameObject.find和obj.transform.find的区别
- 使用Spring Boot Starter开发RocketMQ
- Tomcat 架构分析(五) 核心Catalina模块
- 欧几里得算法和唯一分解定理(数论)
- Jetty源码分析之WebAppContext
- git的常用操作
- java堆内存
- java并发之死锁