桶排序(又称箱排序)是一种基于分治思想、效率很高的排序算法,其核心思想是,讲数据依次放入顺序摆放的若干个桶内,然后每个桶内元素再进行排序,完后成将桶内元素合并,得到最终排序结果。
编程学院分类,是在编程过程中,记录开发心得体会的板块。目前主要涉及PHP、Python、Linux、前端等内容。
桶排序(又称箱排序)是一种基于分治思想、效率很高的排序算法,其核心思想是,讲数据依次放入顺序摆放的若干个桶内,然后每个桶内元素再进行排序,完后成将桶内元素合并,得到最终排序结果。
上一篇文章介绍了特征的方差过滤,方差过滤完毕之后,我们要考虑下一个问题:相关性。Sklearn中有三种常用方法,来判断特征和标签之间的相关性:卡方、F检验、互信息。本文先介绍第一种卡方过滤。
计数排序算法,就是通过统计序列中各个元素出现的次数,完成对整个序列的升序或降序排序的算法,其时间复杂度为O(n)。该算法时间复杂度很低,但对序列的条件比较苛刻,一是要求待排序元素都是整数,二是数值不能太大(通常为100以下)。
希尔排序算法是一种分组插入排序算法,是一种更高效的插入排序算法。和普通的插入排序算法相比,希尔排序算法减少了移动元素和比较元素大小的次数,从而提高了排序效率。
方差过滤,是机器学习特征选择的一种方法。所谓的特征选择,就是从所有特征中,选择出有意义,对模型有帮助的特征,避免将所有特征都导入模型去训练。本文以Kaggle上的手写数字识别训练集为例,来演示特征选择对模型训练时间和准确率的影响。
在数据处理中,除了前面文章介绍过的非数值数据外,可能还有一些连续数值需要处理。比如年龄这个特性,如果按未成年和成年来划分,就是二值化,如果按少年、青年、中年、老年来划分,就是分箱。下面我们依然用泰坦尼克号的数据,来演示二值化和分箱。
上一篇文章中,我们使用OrdinalEncoder把分类特征Sex和Embarked转换成了数值,但在Embarked这个特征中,我们用[0,1,2]表示港口其实是不合理的。对于这类没有关联的名义变量,我们需要使用OneHot编码,将其转换成哑变量。
归并排序算法是在分治算法基础上设计出来的一种排序算法,它可以对指定序列完成升序(由小到大)或降序(由大到小)排序,对应的时间复杂度为O(nlogn)。
在机器学习中,大多数场景都只能处理数值型数据,但在现实场景中,很多特征和标签在采集完毕后,都不是以数字呈现的,这种情况下为了让数据适应算法和库,我们必须对数据进行编码,即文字型数据转化为数值型。
在机器学习和数据挖掘的实际场景中,数据一般都不会像Sklearn给我们提供的数据那么完美,难免会有一些缺失值,所以在做数据预处理时,对缺失值的处理,是必不可少的一个步骤。
开始学习编程算法,遇到排序问题,一般都是用冒泡法,因为冒泡法好理解,代码量少。但是这种算法时间复杂度高,当需要排序的元素较多时,程序运行时间很长,因此产生了快速排序算法,快排算法也是面试中常考的算法。
和前面介绍的冒泡排序算法、选择排序算法类似,插入排序算法也是一种基础排序算法,其时间复杂度也是O(n^2)。实现思路是:从当前位置开始,从后往前遍历其之前的序列,如果比当前位置的值大,则往后挪动一位,直到遇见比其小的位置结束。
前一篇文章讲到数据归一化,本文继续讲解无量纲化的第二种方法,数据标准化。其过程是先将数据按均值中心化后,再按标准差缩放,得到的数据服从均值为0,标准差为1的标准正态分布。
前面文章介绍最基简单的冒泡排序算法,本文介绍另一种排序算法:选择排序,该算法适用于较少的序列排序,时间复杂度也是O(n^2)。实现思路是:将无序区所有值与第一个值比较,将最小的值放到第一个位置,查找过程重复n-1次。
归一化(Normalization)和数据标准化(Standardization),是数据无量纲化的两大常用方法。归一化的方法是先按最小值中心化之后,再按极差(最大值-最小值)缩放,即数据先移动最小值个单元,在缩放使其收敛于[0,1]之间。归一化后的数据服从正态分布。
冒泡排序是所有排序算法中最简单、最易实现的算法。实现思路是:比较相邻两个元素的值,如果后者比前者的值小就交换它们的位置;一趟排序完成后,则无序区减少一个数,有序区增加一个数。时间复杂度为O(n^2)。
随机森林是最简单的集成学习算法,其核心是两个随机加多棵CART树,最后通过投票表决,决定数据属于哪一类别。本文依然以Sklearn数据为例,来对比随机森林和决策树的分类效果。
Sklearn红酒数据集,是一份非常适合用来做决策树模型数据集,本文介绍使用GraphViz在线工具,来绘制一个Sklearn红酒数据集决策树。
在这个Sklearn决策树泰坦尼克号幸存者预测挑战中,我们要求你完成对哪些人可能生存的分析。特别是,我们要求您运用机器学习的工具来预测哪些乘客幸免于难。
在上一篇文章中,介绍了Sklearn使用决策树训练分类模型,但在模型构建过程中,出现了拟合的问题。本文主要介绍两种剪枝方式,并使用GridSearchCV网格搜索方式,找到最优参数。