scikit-learn机器学习常用算法原理及编程实战
金字塔下的小蜗牛
落花人独立,微雨燕双飞
展开
-
跟我一起学scikit-learn1:机器学习简介
1.1 什么是机器学习机器学习的概念可以追溯到1959年,Arthur Samuel对机器学习做出的定义是:Field of study that gives computers the ability to learn without being explicitly programmed(即让计算机在没有被显示编程的情况下,具备自我学习的能力)。Tom M. Mitchell在操作层面...原创 2019-05-02 00:40:11 · 355 阅读 · 0 评论 -
跟我一起学scikit-learn10:模型准确性
测试数据集的成本,即Jtest(θ){J}_{test}(\theta)Jtest(θ)是评估模型准确性的最直观的指标,Jtest(θ){J}_{test}(\theta)Jtest(θ)值越小说明模型预测出来的值与真实值差异越小,对新数据的预测准确性就越好。需要特别注意,用来测试模型准确性的测试数据集,必须是模型“没见过”的数据。这就是为什么,要把数据集分成训练数据集和测试数据集。一般原则...原创 2019-06-03 21:29:40 · 451 阅读 · 1 评论 -
跟我一起学scikit-learn18:决策树算法
决策树(Decision Tree,简称DT)是最经典的机器学习模型之一,它的预测结果容易理解,易于向业务部门解释,预测速度快,可以处理离散型数据和连续型数据。原创 2019-06-15 18:25:29 · 1632 阅读 · 1 评论 -
跟我一起学scikit-learn11:学习曲线
我们可以把Jtrain(θ){J}_{train}(\theta)Jtrain(θ)和Jcv(θ){J}_{cv}(\theta)Jcv(θ)作为纵坐标,画出与训练数据集m的大小关系,这就是学习曲线。通过学习曲线,可以直观地观察到模型的准确性与训练数据集大小的关系。如果数据集的大小为m,则通过下面的流程即可画出学习曲线:把数据集分成训练数据集和交叉验证数据集。取训练数据集的20%作为训...原创 2019-06-04 22:30:28 · 578 阅读 · 0 评论 -
跟我一起学scikit-learn12:算法模型性能优化
当我们辛苦开发出来的机器学习算法不能很好地预测新数据时,该怎么办呢?一般情况下,需要先判断这个算法模型是欠拟合还是过拟合。如果是过拟合,可以采取的措施如下:获取更多的训练数据:从学习曲线的规律来看,更多的数据有助于改善过拟合问题。减少输入的特征数量:比如,针对手写识别系统,原来使用200x200的图片,总共40000个特征。优化后,可以把图片等比例缩小为10x10的图片,总共100个特征。...原创 2019-06-04 22:48:01 · 246 阅读 · 0 评论 -
跟我一起学scikit-learn13:查准率和召回率
有时候,模型准确性并不能评价一个算法的好坏。比如针对癌症筛选算法,据统计,普通肿瘤中癌症的概率是0.5%。有个机器学习算法,测试得出的准确率是99.2%,错误率是0.8%。这个算法到底是好还是坏呢?如果努力改进算法,最终得出的准确率是99.5%,错误率是0.5%,模型到底是变好了还是变坏了呢?坦白讲,如果单纯从模型准确性的指标上很难判断到底是变好了还是变坏了。因为这个事情的先验概率太低了,假如写...原创 2019-06-04 23:15:04 · 660 阅读 · 0 评论 -
跟我一起学scikit-learn14:F1 Score
由于现在有两个指标:查准率和召回率,如果有一个算法的查准率是0.5,召回率是0.4;另一个算法的查准率是0.02,召回率是1.0。那么两个算法到底哪个好呢?为了解决这个问题,我们引入了F1Score的概念:F1Score=2PRP+R{F}_{1}Score=2\frac{PR}{P+R}F1Score=2P+RPR其中P是查准率(Precision),R是召回率(Recall)。这样就...原创 2019-06-04 23:28:31 · 746 阅读 · 0 评论 -
跟我一起学scikit-learn19:支持向量机算法
支持向量机(SVM,Support Vector Machine)算法是一种常见的分类算法,在工业界和学术界都有广泛的应用。特别是针对数据集较小的情况下,往往其分类效果比神经网络好。原创 2019-06-17 00:20:56 · 563 阅读 · 0 评论 -
跟我一起学scikit-learn22:K-均值算法
K-均值(K-means)算法是一种典型的无监督机器学习算法,用来解决聚类问题(Clustering)。由于数据标记需要耗费巨大的人力物力,无监督或者半监督学习算法不需要对数据进行标记,可以大大减少工作量。原创 2019-06-25 23:03:31 · 982 阅读 · 0 评论 -
跟我一起学scikit-learn20:朴素贝叶斯算法
朴素贝叶斯(Naive Bayers)算法是一种基于概率统计的分类方法。它在条件独立假设的基础上,使用贝叶斯定理构建算法,在文本处理领域有广泛的应用。原创 2019-06-22 22:58:20 · 2775 阅读 · 0 评论 -
跟我一起学scikit-learn17:逻辑回归算法
逻辑回归算法的名字虽然带有“回归”二字,但实际上逻辑回归算法是用来解决分类问题的算法。原创 2019-06-09 23:36:53 · 539 阅读 · 0 评论 -
跟我一起学scikit-learn09:成本函数
成本是衡量模型与训练样本符合程度的指标。简单地理解,成本是针对所有的训练样本,模型拟合出来的值与训练样本的真实值的误差平均值。原创 2019-06-03 09:59:40 · 699 阅读 · 0 评论 -
跟我一起学scikit-learn2:开发环境搭建
本节介绍了scikit-learn相关开发环境的搭建步骤。这里主要用到IPython、Numpy、Pandas、Matplotlib和scikit-learn等软件包。搭建Python开发环境一般有两种常用的方式:(1)安装Anaconda集成环境Anaconda是一个开源的Python发行版本,其包含了conda、python、ipython、numpy、scipy、pandas、m...原创 2019-05-03 23:30:04 · 305 阅读 · 0 评论 -
跟我一起学scikit-learn3:IPython简介
IPython是公认的现代科学计算中最重要的python工具之一,它是一个加强版的Python交互式命令行工具,与系统自带的Python交互环境相比,IPython具有以下几个明显特征:可以在IPython环境下直接执行Shell命令; 自带jupyter notebook可视化Web UI,在机器学习、探索数据、可视化数据、绘制图形等场景特别有用; 拥有内省、Tab补全、魔术命令等更强大...原创 2019-05-04 00:28:59 · 210 阅读 · 0 评论 -
跟我一起学scikit-learn4:Numpy简介
Numpy是Python科学计算的基础库,主要提供了高性能的N维数组实现以及计算能力,还提供了和其他语言如C/C++集成的能力。此外还实现了一些基础的数学算法,如线性代数相关、傅里叶变换以及随机数生成等。(1)Numpy数组可以直接用Python列表来创建数组。In [1]: import numpy as npIn [2]: a = np.array([1,2,3,4])In ...原创 2019-05-12 23:24:25 · 295 阅读 · 0 评论 -
跟我一起学scikit-learn06:Matplotlib简介
Matplotlib是Python数据可视化工具包,IPython为Matplotlib专门提供了特殊的交互模式。如果要在IPython控制台使用Matplotlib,可以使用ipython–matplotlib命令来启动IPython控制台程序;如果要在IPython notebook里使用Matplotlib,则在notebook的开始位置插入%matplotlib inline魔术命令即可。原创 2019-05-31 15:31:21 · 273 阅读 · 0 评论 -
跟我一起学scikit-learn15:K-近邻算法
KNN(K-Nearest Neighbor,K-近邻算法)算法是一种有监督的机器学习算法,可以解决分类问题,也可以解决回归问题。原创 2019-06-06 00:12:05 · 657 阅读 · 0 评论 -
跟我一起学scikit-learn05:Pandas简介
Pandas是一个强大的时间序列数据处理工具包,最初开发的目的是为了分析财经数据,现在已经广泛应用在Python数据分析领域。本节通过简单的介绍,让读者熟悉简单的Pandas概念及操作。###1.基本数据结构Pandas最基础的数据结构是Series,用它来表达一行数据,可以理解为一维数组。比如下面的代码,创建了一个包含6个数据的一维数组。In [1]: import pandas as p...原创 2019-05-30 08:29:44 · 288 阅读 · 0 评论 -
跟我一起学scikit-learn16:线性回归算法
线性回归算法是使用线性方程对数据集拟合得算法,是一个非常常见的回归算法。原创 2019-06-08 17:55:20 · 522 阅读 · 1 评论 -
跟我一起学scikit-learn07:scikit-learn简介
scikit-learn是一个开源的Python语言机器学习工具包。它涵盖了几乎所有主流机器学习算法的实现,并且提供了一致的调用接口。它基于Numpy和SciPy等Python数值计算库,提供了高效的算法实现。原创 2019-06-02 23:09:25 · 724 阅读 · 0 评论 -
跟我一起学scikit-learn08:过拟合和欠拟合
过拟合:是指模型能很好地拟合训练样本,但对新数据的预测准确性很差。欠拟合:是指模型不能很好地拟合训练样本,且对新数据的预测准确性也不好。原创 2019-06-03 09:58:26 · 239 阅读 · 0 评论 -
跟我一起学scikit-learn21:PCA算法
PCA算法全称是Principal Component Analysis,即主成分分析算法。它是一种维数约减(Dimensionality Reduction)算法,即把高维度数据在损失最小的情况下转换为低维度数据的算法。显然,PCA可以用来对数据进行压缩,可以在可控的失真范围内提高运算速度。原创 2019-06-23 22:51:04 · 624 阅读 · 0 评论