特征选择的三种方法介绍:

  1. 过滤型:

    选择与目标变量相关性较强的特征。缺点:忽略了特征之间的关联性。

  2. 包裹型:

    基于线性模型相关系数以及模型结果AUC逐步剔除特征。如果剔除相关系数绝对值较小特征后,AUC无大的变化,或降低,则可剔除

  3. 嵌入型:

    利用模型提取特征,一般基于线性模型与正则化(正则化取L1),取权重非0的特征。(特征纬度特别高,特别稀疏,用svd,pca算不动)

python 实现

"""1.过滤型"""
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2iris=load_iris()
X,y=iris.data,iris.target
print X.shape
X_new=SelectKBest(chi2,k=2).fit_transform(X,y)
print X_new.shape"""输出:(150L, 4L)(150L, 2L)""""""2.包裹型"""
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_bostonboston=load_boston()
X=boston["data"]
Y=boston["target"]
names=boston["feature_names"]lr=LinearRegression()
rfe=RFE(lr,n_features_to_select=1)#选择剔除1个
rfe.fit(X,Y)print "features sorted by their rank:"
print sorted(zip(map(lambda x:round(x,4), rfe.ranking_),names))"""输出:按剔除后AUC排名给出
features sorted by their rank:
[(1.0, 'NOX'), (2.0, 'RM'), (3.0, 'CHAS'), (4.0, 'PTRATIO'), (5.0, 'DIS'), (6.0, 'LSTAT'), (7.0, 'RAD'), (8.0, 'CRIM'), (9.0, 'INDUS'), (10.0, 'ZN'), (11.0, 'TAX')
, (12.0, 'B'), (13.0, 'AGE')]""""""3.嵌入型 ,老的版本没有SelectFromModel"""
from sklearn.svm import  LinearSVC
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModeliris=load_iris()
X,y=iris.data,iris.target
print X.shapelsvc=LinearSVC(C=0.01,penalty='l1',dual=False).fit(X,y)
model=SelectFromModel(lsvc,prefit=True)
X_new=model.transform(X)
print X_new.shape"""输出:(150,4)(150,3)"""

机器学习(一): python三种特征选择方法相关推荐

  1. 一文介绍机器学习中的三种特征选择方法

    作者 | luanhz 来源 | 小数志 导读 机器学习中的一个经典理论是:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.也正因如此,特征工程在机器学习流程中占有着重要地位.广义的特征 ...

  2. python三种注释方法

    python三种注释方法 方式1: 单行注释:shift + #(在代码的最前面输入,非选中代码进行注释) 多行注释:同单行一样在每一行的前面输入shift + #(较麻烦了) 方式2: 单行和多行一 ...

  3. 按照100分制,90分以上成绩为A,80到90为B, 60到80为C,60一下为D,写一个程序, 当用户输入分数,自动转换为ABCD的形式打印,Python三种解决方法

    # method1暴力输入法: score=int(input("请输入一个分数:")) if 100>=score>=90:     print("A&qu ...

  4. python中保留小数_python保留小数位的三种实现方法

    前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:fo ...

  5. 将python中的小数直接进位的函数_python保留小数位的三种实现方法

    python保留小数位的三种实现方法 前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单 ...

  6. Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n

    Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n 首先, 让我们看下数据demo.txt, 就两行数据. 35durant teamGSW 1 ...

  7. python保留两位小数_python保留小数位的三种实现方法

    前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:fo ...

  8. python三种方法实现阶乘

    # python三种方法实现阶乘 # while循环实现阶乘 def fact(n):if n == 0:return 1 # 0 的阶乘为 1elif n < 0:return '负数没有阶乘 ...

  9. python三种保留两位小数的方法

    python三种保留两位小数方法汇总 1.'%.2f'%f 该方法会进行四舍五入 代码如下所示: f = 2.3456789print('%.2f'%f) print('%.3f'%f) print( ...

最新文章

  1. 【SLAM后端】—— ceres优化相机位姿求解
  2. 一次受限制、无连接的故障处理
  3. 图灵2010.07书讯
  4. uva 544(kruskal 变形)
  5. Java使用JAX-WS来写webservice时 Unable to create JAXBContext
  6. [洛谷P1040] 加分二叉树
  7. 华为路由器命令手册_华为路由器+蒲公英路由器,如何做双层路由器映射?
  8. 为什么spyder这么慢_微区成分分析为什么这么慢?
  9. python3中浮点数float的四舍五入,round跟decimal区别
  10. 网上订餐系统的设计与实现(论文+源码)_kaic
  11. Web 攻防第一阶段 I-03:收集 Web 站点信息
  12. 探索性测试--极限测试法
  13. ESX通过命令行重启虚拟机
  14. 移动端下拉刷新与页面内滑动冲突问题 iscroll 固定行表头 苹果下拉反弹
  15. b560主板怎么样 b560主板支持的cpu
  16. svg 地图_一秒带你制作出全国各省市区县地图
  17. win10主题更换_【小A问答】遇到超好看的Win10主题壁纸如何提取?
  18. 老闪创业那些事儿(外传)——教人与用人的撕裂
  19. Linux之shell脚本循环语句for while until
  20. revit软件如何创建放样体量?revi哪个插件好用?

热门文章

  1. Java常用类之Calendar类和GregorianCalendar类
  2. 震灾区民自杀会否成骨牌效应?
  3. SDUT-D-表达式语法分析——递归子程序法-附带解释函数
  4. mac冒险游戏:死亡细胞Dead Cells 中文版
  5. 搜索方法_本地文本文件内容搜索
  6. 51单片机初级项目开发10套资料(适合初学者练手题目)
  7. 常见算法-孩子们的游戏
  8. Unity3D组件 | Excel导出
  9. 什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
  10. Java泛型-泛型作用+泛型在各种数据结构中的使用+自定义泛型