iris

Feature Selection

假装没事ソ 提交于 2020-05-02 10:29:56
两方面(发散,相关)~三方法(FWE) F:方皮卡互 W:RFE E:惩罚树 一、简介   我们的数据处理后,喂给算法之前,考虑到特征的实际情况,通常会从两个方面考虑来选择特征:   1)特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用  2)特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优先选择   根据特征选择的形式又可以将特征选择方法分为3种: Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值选择特征 Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征 Embedded:集成法,先使用某些模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣 二、实践   1)Filter    a)方差法     使用方差法,要先计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。    使用 feature_selection 库的 VarianceThreshold 类来选择特征的代码如下:  from sklearn.datasets import load_iris from sklearn.feature_selection import

数据挖掘——基于sklearn包的分类算法小结

ぃ、小莉子 提交于 2020-04-30 02:06:51
   目录 一、分类算法简介 二、KNN算法 三、贝叶斯分类算法 四、决策树算法 五、随机森林算法 六、SVM算法 一、分类算法简介 1、概念   1.1 监督学习(Supervised Learning)   从给定标注(训练集有给出明确的因变量Y)的训练数据集中学习出一个函数,根据这个函数为新数据进行标注。   1.2 无监督学习(Unsupervised Learning)   从给定无标注(训练集无明确的因变量Y)的训练数据中学习出一个函数,根据这个函数为所有数据标注。   1.3 分类 (Classification)   分类算法通过对已知类别训练数据集的分析,从中发现分类规则,以此预测新数据的类别, 分类算法属于监督学习 。 2、常用的分类算法 KNN算法(K-近邻分类算法) 贝叶斯算法 决策树算法 随机森林算法 SVM算法(支持向量机) 3、分类问题的验证方法 交叉验证(Cross Validation):训练集与测试集 K折交叉验证(K-fold Cross Validation) :设置k=10,那么我们把原来的数据集随机分为10份,分别为{D1,D2,D3...D10} 接着,使用D1作为测试集,{D2,D3...D10}作为训练集,计算得分S1 使用D2作为测试集,{D1,D3...D10}作为训练集,计算得分S2 ......... 最后

scikit-learn学习笔记

雨燕双飞 提交于 2020-04-29 18:47:09
参考资料: python机器学习库scikit-learn简明教程之:随机森林 http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/kaggle/titanic.ipynb Python中的支持向量机SVM的使用(有实例) 基于SIFT特征和SVM的图像分类 scikit-learn sklearn 0.18 官方文档中文版 只需十四步:从零开始掌握 Python 机器学习(附资源) https://github.com/jakevdp/sklearn_pycon2015 官网: http://scikit-learn.org/stable/ Scikit-learn (sklearn) 优雅地学会机器学习 (莫烦 Python 教程) python机器学习库scikit-learn简明教程之:AdaBoost算法 http://www.docin.com/p-1775095945.html https://www.bilibili.com/video/av22530538/?p=6 三维点云目标提取总结 https://github.com/Fdevmsy/Image_Classification_with_5_methods https:/

统计学习方法 | 第3章 k邻近法

独自空忆成欢 提交于 2020-04-28 01:21:33
第3章 k近邻法 1. 近邻法是基本且简单的分类与回归方法。 近邻法的基本做法是:对给定的训练实例点和输入实例点,首先确定输入实例点的 个最近邻训练实例点,然后利用这 个训练实例点的类的多数来预测输入实例点的类。 2. 近邻模型对应于基于训练数据集对特征空间的一个划分。 近邻法中,当训练集、距离度量、 值及分类决策规则确定后,其结果唯一确定。 3. 近邻法三要素:距离度量、 值的选择和分类决策规则。常用的距离度量是欧氏距离及更一般的 pL 距离。 值小时, 近邻模型更复杂; 值大时, 近邻模型更简单。 值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的 。 常用的分类决策规则是多数表决,对应于经验风险最小化。 4. 近邻法的实现需要考虑如何快速搜索k个最近邻点。 kd 树是一种便于对k维空间中的数据进行快速检索的数据结构。kd树是二叉树,表示对 维空间的一个划分,其每个结点对应于 维空间划分中的一个超矩形区域。利用 kd 树可以省去对大部分数据点的搜索, 从而减少搜索的计算量。 距离度量 设特征空间 是 维实数向量空间 , , , ,则: , 的 距离定义为: 曼哈顿距离 欧氏距离 闵式距离minkowski_distance In [1]: import math from itertools import combinations In [2]: def L

kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法

放肆的年华 提交于 2020-04-25 08:14:02
一、KNN算法概述   邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。Cover和Hart在1968年提出了最初的邻近算法。KNN是一种分类(classification)算法,它输入基于实例的学习(instance-based learning),属于懒惰学习(lazy learning)即KNN没有显式的学习过程,也就是说没有训练阶段,数据集事先已有了分类和特征值,待收到新样本后直接进行处理。与急切学习(eager learning)相对应。   KNN是通过测量不同特征值之间的距离进行分类。   思路是:如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某一个类别,则该样本也划分为这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。   提到KNN,网上最常见的就是下面这个图,可以帮助大家理解。   我们要确定绿点属于哪个颜色(红色或者蓝色),要做的就是选出距离目标点距离最近的k个点,看这k个点的大多数颜色是什么颜色。当k取3的时候,我们可以看出距离最近的三个,分别是红色、红色、蓝色,因此得到目标点为红色。   算法的描述:  

神经网络入门回顾(感知器、多层感知器)

我是研究僧i 提交于 2020-04-25 05:25:12
神经网络属于“联结主义”,和统计机器学习的理论基础区别还是很不一样。 以我自己的理解,统计机器学习的理论基于统计学,理论厚度足够强,让人有足够的安全感;而神经网络的理论更侧重于代数,表征能力特别强,不过可解释性欠佳。 这两个属于机器学习的两个不同的流派,偶尔也有相互等价的算法。 本文回顾神经网络最简单的构件:感知器、多层感知器。一些简单的代码实践可以参考: Python 实现感知器的逻辑电路(与门、与非门、或门、异或门) 。 感知器 感知器 是二类分类的线性分类模型,将实例划分为正负两类的分离超平面(separating hyperplane),属于判别模型。 感知器基于 线性阈值单元 (Linear Threshold Unit, LTU )构件的。以下是 LTU: LTU 相当于对输入做一个 线性组合 ,再加一个 阶跃函数 。 常用的阶跃函数是 Heaviside 和 Sign。 哪怕只有一个 LTU 也可以作为简单的线性二分类器,类似于 逻辑回归 或者 线性 SVM 。 感知器 就是由一层 LTU 组成。以下是一个多输出分类器。 为了求得感知器的权重参数,需要确定一个学习策略,即定义损失函数并将损失函数极小化。有这样几种选择: 1. 误分类点的总数:损失函数不是 w, b 的连续可导函数,不易优化。 2. 误分类点到超平面的总距离:感知器所采用的损失函数。 感知器的损失函数

ML.NET技术研究系列-2聚类算法KMeans

最后都变了- 提交于 2020-04-22 05:42:40
上一篇博文我们介绍了ML.NET 的入门: ML.NET技术研究系列1-入门篇 本文我们继续,研究分享一下聚类算法k-means. 一、k-means算法简介 k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。 1. k-means算法的原理是什么样的 ?参考: https://baijiahao.baidu.com/s?id=1622412414004300046&wfr=spider&for=pc k-means算法中的k代表类簇个数,means代表类簇内数据对象的均值(这种均值是一种对类簇中心的描述),因此,k-means算法又称为k-均值算法。 k-means算法是一种基于划分的聚类算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。 数据对象间距离的计算有很多种,k-means算法通常采用欧氏距离来计算数据对象间的距离。算法详细的流程描述如下: 2. k-means算法的优缺点: 优点: 算法简单易实现; 缺点: 需要用户事先指定类簇个数; 聚类结果对初始类簇中心的选取较为敏感; 容易陷入局部最优; 只能发现球形类簇; 接下来我们说一下k-means算法的经典应用场景:鸢尾花 二、鸢尾花 首先,鸢尾花是一种植物

特征工程介绍

回眸只為那壹抹淺笑 提交于 2020-04-22 01:26:13
特征工程介绍 作者:林泽龙 1 特征工程是什么? 优秀的模型往往取决于优秀的特征提取,而特征提取就需要涉及到特征工程了。特征工程是的目的是最大限度地从原始数据中提取特征以供算法和模型使用。因此特征工程主要是在特征处理方面进行,接下来向大家介绍几种经典和有效的特征工程方法。 实践前需要安装sklearn库,它提供了较为完整的特征处理方法,包括数据预处理,特征选择,降维等。本文中使用sklearn中的 IRIS(鸢尾花)数据集 来对特征处理功能进行说明。IRIS数据集由Fisher在1936年整理,包含4个特征(Sepal.Length(花萼长度)、Sepal.Width(花萼宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)),特征值都为正浮点数,单位为厘米。目标值为鸢尾花的分类(Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),Iris Virginica(维吉尼亚鸢尾))。 导入IRIS数据集的代码如下: from sklearn.datasets import load_iris #导入IRIS数据集 iris = load_iris() #特征矩阵 iris.data #目标向量 iris.target 2 数据预处理 通过特征提取,我们能得到未经处理的特征,这时的特征可能有以下问题: 不属于同一量纲

用决策树(CART)解决iris分类问题

孤者浪人 提交于 2020-04-20 18:10:07
首先先看Iris数据集 Sepal.Length——花萼长度 Sepal.Width——花萼宽度 Petal.Length——花瓣长度 Petal.Width——花瓣宽度 通过上述4中属性可以预测花卉属于Setosa,Versicolour,Virginica 三个种类中的哪一类 决策树 by CART 决策树有挺多种,这里讲下 CART CART 的执行过程是这样的: 用特征值k和下限tk二分子集 不断二分,直到到达最大深度或者划分不能再减少不纯度为止 这一下sklearn都会自动帮我们完成,我们调用就行了 如何避免过拟合问题 减小最大深度等等 一个tip: ​ min_* 的调大 ​ max_*的调小 ​ 就是DecisionTreeClassifier里面的参数,具体看文档_(:з」∠)_ 损失函数的比较 sklearn提供了两种损失函数gini和entropy gini是通过计算每个节点的不纯度,具体公式如下↓ $J(k,t_k) = \frac{m_{left}}{m}G_{left} + \frac{m_{right}}{m}G_{right}$ entropy在这里就不再赘述了 sklearn默认的是调用gini,因为gini的速度会快点,而且两者最后的效果是差不多的,真要比的话entropy产生的决策树会更平衡点 接下来我们来看代码 from sklearn

Python之将Python字符串生成PDF

不羁岁月 提交于 2020-04-18 00:23:19
  笔者在今天的工作中,遇到了一个需求,那就是如何将Python字符串生成PDF。比如,需要把Python字符串‘这是测试文件’生成为PDF, 该PDF中含有文字‘这是测试文件’。   经过一番检索,笔者决定采用wkhtmltopdf这个软件,它可以将HTML转化为PDF。wkhtmltopdf的访问网址为: https://wkhtmltopdf.org/downloads.html ,读者可根据自己的系统下载对应的文件并安装。安装好wkhtmltopdf,我们再安装这个软件的Python第三方模块——pdfkit,安装方式如下: pip install pdfkit   我们再讨论如下问题: 如何将Python字符串生成PDF; 如何生成PDF中的表格; 解决PDF生成速度慢的问题。 如何将Python字符串生成PDF   该问题的解决思路还是利用将Python字符串嵌入到HTML代码中解决,注意换行需要用 <br> 标签,示例代码如下: import pdfkit # PDF中包含的文字 content = '这是一个测试文件。' + '<br>' + 'Hello from Python!' html = '<html><head><meta charset="UTF-8"></head>' \ '<body><div align="center"><p>%s</p><