选择属性(weka的书中把特征翻译成属性,那么这里的属性其实也就是指特征了)
选择属性的目的:
就是通过搜索数据中所有可能的属性组合,以找到预测效果最好的属性子集。
也就是说假设属性目前有6个,准确率为80%,假设只取5个属性(这就是子集),反而准确率却变为90%

选择属性和PCA降维有啥不同?
选择属性和PCA的目的都是一样,都是为了降低特征的数量,减少计算量
但是PCA是将原始特征进行一个映射压缩,这使得原始的特征面目全非,生成新的特征。也就是说原本20个特征,PCA以后用
全新的5个特征(这5个特征我已经不知道是代表原来的啥了)来表示。但有时这5个特征并不能完全代替这原本的20个特征,而是容纳了98%的信息,这也是能接收的范围。

在weka Explorer页面中,有Select attributes 选择属性的菜单
进入Select attributes以后
有Attribute Evaluator(属性评估器),Search Method(搜索方法)两个选项,这两项需要组合使用

属性评估器
子集评估器
CfsSubsetEval 评估每个属性的预测能力以及其相互之间的冗余度,倾向于选择与类别属性相关度搞,但相互直接相关度低的属性
WrapperSubsetEval 使用一个分类器(可以是任何分类算法)来评估属性集,它对每一个子集采用交叉验证来估计

单个属性评估器
ReliefFAttributeEval 是基于实例的评估器,它随机抽取实例样本,并检查具有相同和不同类别的邻近实例。它可运行在
离散型类别和连续型类别的数据上,参数包括指定抽样实例的数量,要检查的邻近实例的数量,是否对最近邻的距离加权,以及控制
权重如何根据距离衰减的指数函数

InfoGainAttributeEval 评估器通过测量类别对应的属性信息增益来评估属性
GainRatioAttributeEval 评估器通过测量相应类别的增益率来评估属性
SysmmtricalUncertAttributeEval 评估器通过测量相应类别对称的不确定性来评估属性
OneRAttributeEval 评估器使用见得OneR分类器采用的准确性度量。

搜索方法
搜索方法遍历属性空间以搜索好的子集,然后使用评估器来衡量其质量。
BestFirst 搜索方法执行带回溯的贪婪爬山法。
GreedyStepwise 搜索方法贪婪搜索属性的子集空间

Ranker 不是一个搜索属性子集的方法,而是对单个属性进行排名

在sklearn中如何自动筛选特征
有两种方式,sklearn中都有相应的模块:
1.sklearn.feature_selection
2.sklearn.ensemble(集成模块,对于决策树模型中都会有一个属性feature_importances_,就可通过这个排序后筛选特征)

sklearn.feature_selection

#coding=utf-8
'''
Created on 2018-3-1'''
# RFE和RFECV
# 作用:通过筛选子集+分类器进行特征筛选
# 参数详情请参考
# http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFE.html#sklearn.feature_selection.RFE
# http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFECV.html#sklearn.feature_selection.RFECV
# 这个方法有个缺点,就是当数据量很大但内存的很小的时候并没有分片训练的功能from sklearn import datasets
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegressiondataset =datasets.load_iris() # 加载数据
print dataset.data.shape
# (150, 4)
model = LogisticRegression() # 构建分类器
rfe = RFE(model)
rfe = rfe.fit(dataset.data,dataset.target)
print(rfe.n_features_) #选出来特征的数量
# 2
print(rfe.support_) #查看哪些特征是被选择的
# [False  True False  True],结果说明第2,4个特征被选择
print(rfe.ranking_) #查看特征排名
# [3 1 2 1],结果说明特征排名分别为3,1,2,1,其中有两个并列第一
print rfe.get_support(True)
# [1 3],返回筛选出来的特征的下标from sklearn.feature_selection import RFECV
# 使用RFECV,和RFE相比,这里分类器的验证结果为交叉验证
rfecv = RFECV(model) # limit number of variables to three
rfecv = rfecv.fit(dataset.data,dataset.target)
print(rfecv.n_features_) #选出来特征的数量
# 3
print(rfecv.support_) #查看哪些特征是被选择的
# [False  True  True  True],结果说明第2,3,4个特征被选择
print(rfecv.ranking_) #查看特征排名
# [2 1 1 1],结果说明特征排名分别为2,1,1,1,其中有三个并列第一# SelectPercentile
# 作用:通过计算每个特征的得分值筛选特征,得分越高,特征就越好
# 参数详情请参考
# http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectPercentile.html#sklearn.feature_selection.SelectPercentilefrom sklearn import datasets
from sklearn.feature_selection import SelectPercentile, f_classif
import numpy as npdataset =datasets.load_iris() # 加载数据
print dataset.data.shape
# (150, 4)
# f_classif为内置的计算函数函数,有多种计算函数供选择;保持10%最有意义的特征
selectorPer = SelectPercentile(f_classif, percentile=10)
selectorPer = selectorPer.fit(dataset.data,dataset.target)
print(selectorPer.scores_) #特征的得分值
# [  119.26450218    47.3644614   1179.0343277    959.32440573]
print(selectorPer.pvalues_) #特征的p-value值
# [  1.66966919e-31   1.32791652e-16   3.05197580e-91   4.37695696e-85],结果说明第2,4个特征被选择
scores = -np.log10(selectorPer.pvalues_)
print scores
# [ 30.77736957  15.87682923  90.51541891  84.35882772]
scores /= scores.max()
print scores
# [ 0.3400235   0.17540469  1.          0.93198296]# SelectKBest
# 作用:根据k最高分选择特征from sklearn import datasets
from sklearn.feature_selection import SelectKBestdataset =datasets.load_iris() # 加载数据
print dataset.data.shape
# (150, 4)
# f_classif为内置的计算函数函数,有多种计算函数供选择;选择前k个最高得分特征
selectKB = SelectKBest(f_classif,k=2)
selectKB = selectKB.fit(dataset.data,dataset.target)
print(selectKB.scores_) #特征的得分值
# [  119.26450218    47.3644614   1179.0343277    959.32440573]
print(selectKB.pvalues_) #特征的得分值
# [  1.66966919e-31   1.32791652e-16   3.05197580e-91   4.37695696e-85]
print(selectKB.get_support()) #特征的得分值
# [False False  True  True]
print selectKB.get_support(True)
# [2 3],返回筛选出来的特征的下标,但是有个缺点就是按得分值进行排序没有排序

sklearn.ensemble

#coding=utf-8
'''
Created on 2018-3-1'''from sklearn import datasets
from sklearn import metrics
from sklearn.ensemble import ExtraTreesClassifierdataset =datasets.load_iris() # 加载数据
model = ExtraTreesClassifier() # 生成决策树
model.fit(dataset.data,dataset.target)
print(model.feature_importances_) #获取关键特征
# [ 0.13826514  0.09158596  0.28037233  0.48977657]

机器学习-自动筛选特征相关推荐

  1. R语言基于机器学习算法进行特征筛选(Feature Selection)

    R语言基于机器学习算法进行特征筛选(Feature Selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(featu ...

  2. 机器学习实战之特征工程

    机器学习实战与特征工程 1.机器学习概述 1.1 什么是机器学习 1.2 为什么要机器学习 1.3 机器学习应用场景 1.4 学习框架和资料的介绍 2.特征工程 2.1 特征工程介绍 2.1.1 数据 ...

  3. XGBoost输出特征重要性以及筛选特征

    XGBoost输出特征重要性以及筛选特征 1,梯度提升算法是如何计算特征重要性的? 使用梯度提升算法的好处是在提升树被创建后,可以相对直接地得到每个属性的重要性得分.一般来说,重要性分数,衡量了特征在 ...

  4. 机器学习中的特征建模(特征工程)和算法选型建模 - 以暴力破解识别为例

    catalogue 1. 特征工程是什么?有什么作用? 2. 特征获取方案 - 如何获取这些特征? 3. 特征观察 - 运用各种统计工具.图标等工具帮助我们从直观和精确层面认识特征中的概率分布 4. ...

  5. 1. 机器学习概述与特征工程

    文章目录 1.机器学习概述 1.机器学习工作流程 学习目标 1 什么是机器学习 2 机器学习工作流程 2.1 获取到的数据集介绍 2.2 数据基本处理 2.3 特征工程 2.4 机器学习 2.5 模型 ...

  6. 机器学习 笔记05——特征工程之特征处理:字典特征提取、文本特征提取

    目录 1.类别型特征的处理-特征编码 1.1 处理少量特征 1.2 处理大量的类别特征 1.3 字典特征提取(特征离散化) ⭐ 1.4   文本特征提取(英文+中文)⭐ 1.4.1 英文数据演示 1. ...

  7. 机器学习中的特征工程——分类变量的处理

    出品 | CDA数据分析研究院,转载需授权 文章目录 分类变量 概念 判断 类型 少类别分类变量处理方法 独热编码(One-hot encoding) 虚拟编码(Dummy coding) 效应编码( ...

  8. 机器学习中的特征是什么?机器学习知识点详解

    在机器学习中,特征(feature)指的是描述一个实例的属性或特征,也可以称为自变量(independent variable)或输入变量(input variable).特征是机器学习中非常重要的概 ...

  9. XGBoost学习(六):输出特征重要性以及筛选特征

    XGBoost学习(一):原理 XGBoost学习(二):安装及介绍 XGBoost学习(三):模型详解 XGBoost学习(四):实战 XGBoost学习(五):参数调优 XGBoost学习(六): ...

最新文章

  1. Plotly_绘图画图作图交互
  2. MATLAB实现微积分基础知识(求导,积分,插值,曲线拟合,最小二乘)
  3. UA MATH566 统计理论 证明UMVUE的方法
  4. boost::mpl::negate相关的测试程序
  5. oracle与sqlserver差异,Oracle与SQLServer的SQL语法差异总结
  6. 直通输出设备 android kodi,【本地播放】利用Kodi媒体播放器轻松实现源码输出DTS到功放...
  7. 面向对象-day02
  8. [转载] Python-科赫雪花(科克曲线)
  9. 殷人昆数据结构第二版_从入门到拿offer,必须看的数据结构与算法书籍推荐,不好不推荐...
  10. 彻底清除狗太阳的3721病毒完全手册!
  11. Image.save()
  12. android手机性能如何界定,手机性能测试最新资讯
  13. 每日一题——洛谷 P1551 亲戚 (并查集)
  14. 正睿OI DAY12 ks5
  15. java 抽奖系统_【小型系统】抽奖系统-使用Java Swing完成
  16. 使用IJ写scala的两种方式
  17. c语言文件合并,c++实现合并文件以及拆分实例代码
  18. (非usb方式)树莓派4BCentos系统下使用SIM7600G-H进行4G上网(PPPD模式)(直接插在树莓派上使用)
  19. LocalDate和LocalDate比较相隔多少天及相隔几年几月几天
  20. Astah Sequence Diagram图

热门文章

  1. 全国计算机等级考试报名照上传失败 教你怎么解决
  2. Meteor入门介绍
  3. 主---谓---宾 和 主---谓---间接宾语---直接宾语 学习笔记
  4. Python哈希算法模块hashlib
  5. 虚拟机安装centos7网络配置
  6. 如何将照片里的脖子和脸PS成同一个颜色
  7. 如何给图片加边框?三招教你图片上加边框怎么弄
  8. HTML表格中字体居中
  9. Java类加载器及自定义类加载器
  10. 关于node环境下用npm下载node-sass错误的解决方法