SVM with univariate feature selection(单因素方差分析)

本文隶属于机器学习的特征选择部分,是训练前对数据的预处理部分。对于机器学习而言,特征选择是影响结果的极其重要的组成部分。这部分内容涉及到数理统计的内容,尤其是方差分析。当然,这些只是我这几天查到的,其背后的知识还有很多,以后的学习会不断加深这方面的理解,这里只对这个例程以及背后的特征选择做个初步总结。
例程和总结如下:

SVM-Anova

"""
=================================================
SVM-Anova: SVM with univariate feature selection
=================================================This example shows how to perform univariate feature selection before running a
SVC (support vector classifier) to improve the classification scores.
"""
print(__doc__)import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets, feature_selection
from sklearn.cross_validation import cross_val_score#交叉验证
from sklearn.pipeline import Pipeline###############################################################################
# Import some data to play with
digits = datasets.load_digits()
y = digits.target
# Throw away data, to be in the curse of dimension settings
y = y[:200]
X = digits.data[:200]
n_samples = len(y)
X = X.reshape((n_samples, -1))
# add 200 non-informative features
X = np.hstack((X, 2 * np.random.random((n_samples, 200))))###############################################################################
# Create a feature-selection transform and an instance of SVM that we
# combine together to have an full-blown estimator
#feature_selection.f_classif:计算所提供样本的方差分析F-值anova:方差分析
#feature_selection.SelectPercentile(k):只留下k值最高的一组特征,返回最终的估计器
transform = feature_selection.SelectPercentile(feature_selection.f_classif)
#anova:Analysis of Variance(方差分析)
#http://baike.baidu.com/link?url=8ufVQvD2KZrWbS3VvvuhYDfw3dk8nSD84QRUNB1P864
#rW8XKSw6-P4-xGIHVkAEBHUIjQGFhFsPtQhazMQrUVmcAqLVDBkQKVXSb3MPq92QFhPaPmVyEgsMNF
#ZJ_p1B-QyQ-tHMQKFJB_recu1qG9nDDpfdDbwMAomoktviOFca
clf = Pipeline([('anova', transform), ('svc', svm.SVC(C=1.0))])###############################################################################
# Plot the cross-validation score as a function of percentile of features
score_means = list()
score_stds = list()
percentiles = (1, 3, 6, 10, 15, 20, 30, 40, 60, 80, 100)for percentile in percentiles:#clf.set_params:设置此估计器的参数。#使用网格搜索(grid search)和交叉验证(cross validation)来选择参数.#对方差分析中的参数percentile进行调节,实现多重比较检验#用于确定控制变量的不同水平对观测变量的影响程度如何clf.set_params(anova__percentile=percentile)# Compute cross-validation score using 1 CPU#http://scikit-learn.org/dev/modules/generated/sklearn.model_selection.#cross_val_score.html#sklearn.model_selection.cross_val_score#cross_val_score:最简单的交叉验证方法,cv选择折数,默认是3折交叉验证this_scores = cross_val_score(clf, X, y, n_jobs=1)score_means.append(this_scores.mean())score_stds.append(this_scores.std())
#plt.errorbar以折线形式画出均值和方差
plt.errorbar(percentiles, score_means, np.array(score_stds))plt.title('Performance of the SVM-Anova varying the percentile of features selected')
plt.xlabel('Percentile')
plt.ylabel('Prediction rate')plt.axis('tight')
plt.show()


参考链接:
方差分析
sklearn.cross_val_score
sklearn.Feature selection
sklearn.pipline
CSDN.pipline
numpy.random
sklearn.UserGuide
np.hstack
特征选择
CSDN.feature_selection

sklearn学习-SVM例程总结2(特征选择——单因素方差分析(方差分析anova ))相关推荐

  1. sklearn学习-SVM例程总结3(网格搜索+交叉验证——寻找最优超参数)

    网格搜索+交叉验证--寻找最优超参数 1548962898@qq.com 连续三天写了三篇博客,主要是为了尽快了解机器学习中算法以外的重要知识,这些知识可以迁移到每一个算法中,或许说,这些知识是学习并 ...

  2. 5、特征选择(filter):方差分析(ANOVA)

    方差分析ANOVA特征筛选 一.方差分析(Analysis of Variance,简称ANOVA)基本原理 二.连续变量和离散变量的方差分析 2.1.提出假设 2.2.采集数据 2.3.设计统计量 ...

  3. 单因素方差分析_基于R语言开展方差分析(一)——单因素方差分析

    基本原理 方差分析(Analysis of variance, ANOVA)是用于两个或两个以上样本均数比较的方法,还可以分析两个或多个研究因素的交互交互作用以及回归方程的线性假设检验等.其基本思想是 ...

  4. wps2019数据分析加载项_wps单因素分析数据 wps2019单因素方差分析

    请问wps excel如何进行单因素方差分析? 在"数据"选项下的"分析""分析工具"中,选择"方差分析-单因素方差分析" ...

  5. python机器学习库sklearn——支持向量机svm

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 支持向量机svm的相关的知 ...

  6. 机器学习 基础理论 学习笔记 (8)特征选择(feature selection)(一)

    0.说明 本文也许比较乱,请看目录再食用. 后续会 出文 机器学习 基础理论 学习笔记 (8)特征选择(feature selection)(二) 将 分类问题 和 回归问题 分开总结. 以及或将出文 ...

  7. sklearn学习(三)

    简述 从学习三开始,这个系列的blog会围绕着scikit-learn上的实例进行. General Examples (一般实例) 这些都是一些简单的实例 这次只看一个(本来准备写多个的..但是看了 ...

  8. sklearn学习(一)

    学习网站 http://scikit-learn.org/stable/tutorial/basic/tutorial.html#machine-learning-the-problem-settin ...

  9. AI学习笔记(三)特征选择与提取、边缘提取

    AI学习笔记之特征选择与提取.边缘提取 1.特征选择 (1)特征的概念 (2)为什么要做特征选择 (3)什么是特征选择 (4)怎么做特征选择 (5)特征选择算法 (6)搜索方法 2.特征提取 (1)特 ...

最新文章

  1. Ubuntu18.04安装JDK1.8和maven3
  2. 什么是集群(cluster)
  3. 什么是堆(Heap)
  4. 55个高质量的Magento主题,助你构建电子商务站点
  5. CUDA库之NPP(二):NPP实现YUV转BGR
  6. Java去掉字符串首尾的““
  7. 关于微信小程序进行数据统计以及分析问题
  8. Python绘制点线
  9. Appium统计iOS或者Android应用的性能
  10. 给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,然后B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。求最后获胜者的分数
  11. luogu P3398 仓鼠找sugar
  12. B站 MySQL学习随手记 全是满满的干货!
  13. 【PCIe 6.0】讨论:为什么每 Half-Flit 中的 TLP 数目不能超过 8 个?
  14. “苦逼”程序员的日常,你了解吗?
  15. 第150篇 笔记-元宇宙(Metaverse)
  16. 炼丹系列2: Stochastic Weight Averaging (SWA) Exponential Moving Average(EMA)
  17. 对Java的三层架构的理解
  18. Unity声音-音源
  19. Backtrack5 R1 中文支持 ibus输入法
  20. 我喜欢你是寂静的 --聂鲁达

热门文章

  1. ADXL345测量角度
  2. 天童美语植树节:前人栽树后人乘凉
  3. Cyclen-PEG-Bodipy;大环配体-聚乙二醇-氟化硼二吡咯;大环配体-PEG-Bodipy
  4. 移动用户远程接入L2TP配置详解
  5. android hierarchyViewer 的UI工具的使用
  6. HBuilderX软件
  7. 基于控制台的五子棋小游戏(简易)
  8. 《操作系统》工作集详解
  9. Scratch 被禁止访问;Linux 内核历史报告2020 等开源之道每周评论2020 09 15
  10. xshell-xftp