
scikit-learn修炼之路
文章平均质量分 81
修炼之路
主要研究领域包括图像分类、目标检测、OCR、人脸识别等,搞过跨平台的深度学习模型的部署解决方案,设计过分布式的深度学习模型服务架构。
展开
-
使用sklearn报AttributeError: ‘NoneType‘ object has no attribute ‘split‘
使用sklearn报AttributeError: 'NoneType' object has no attribute 'split'原创 2023-11-15 10:41:06 · 1350 阅读 · 0 评论 -
在线算法外存学习处理大数据集
在上一篇文章中,使用了logistic回归来对电影评论进行分类,消耗了2到3个小时,在使用网格搜索对50000条电影评论构建特征向量的时候计算成本是非常大的。在实际应用中,可能会遇见更大的数据集,如果直接把数据集加载到内存中,可能会超出计算机的最大内存,同时也会需要更久的训练时间。在这篇文章中,将介绍外存学习来处理大数据集,使用外存学习来处理50000条电影评论只需要1分钟。在梯度下降算法中,我们...原创 2018-04-19 21:51:49 · 1537 阅读 · 0 评论 -
评价分类模型的性能指标
当一个模型构建完成之后,我们可以通过几个不同的性能指标来衡量分类模型的相关性能,常用的分类性能指标有准确率(precision)、召回率(recall)和F1分数(F1-score)。一、混淆矩阵混淆矩阵(confusion matrix):是展示分类学习算法的一种性能矩阵(方阵),包括分类器预测结果真正(true positive)、真负(true negative)、假正(false ...原创 2018-03-28 22:52:59 · 13821 阅读 · 2 评论 -
AdaBoost算法详细介绍
一、Boosting算法Boosting集成分类器包含多个非常简单的成员分类器,这些成员分类器的性能仅好于随机猜想,常被称为弱学习机。典型的弱学习机的例子就是单层决策树。Boosting算法主要针对难以区分的样本,弱学习机通过在分类错误的样本上进行学习来提高继承分类器的分类性能。Boosting与Bagging不同,在Boosting的初始化阶段采用的是无返回抽样从训练样本中随机抽取一个子集,而B...原创 2018-04-06 14:11:15 · 20160 阅读 · 0 评论 -
使用flask将机器学习模型嵌入到web系统中(五)
在这篇文章中,主要介绍如何将一个机器学习的模型嵌入到web系统中,这篇文章的主要内容包括:1、利用flask构建一个简单的web2、将机器学习模型嵌入到web系统中3、根据用户的反馈来更新模型主要包括三个页面,评论提交页面、分类结果页面、感谢页面。当用户提交评论后跳转到结果页面,后台根据已有的模型来预测用户评论是属于正面评论还是负面评论,返回属于哪一种评论并且返回属于该种类的概率为多少...原创 2018-04-22 17:24:07 · 12836 阅读 · 17 评论 -
情感分析之词袋模型TF-IDF算法(三)
在这篇文章中,主要介绍的内容有:1、将单词转换为特征向量2、TF-IDF计算单词关联度在之前的文章中,我们已经介绍过一些文本的预处理和分词。这篇文章中,主要介绍如何将单词等分类数据转成为数值格式,以方便我们后面使用机器学习来训练模型。一、将单词转换为特征向量词袋模型(bag-of-words model):将文本以数值特征向量的形式来表示。主要通过两个步骤来实现词袋模型:1...原创 2018-04-14 00:28:36 · 11140 阅读 · 12 评论 -
回归预测分析(RANSAC、多项式回归、残差图、随机森林)
在本篇文章中,主要是介绍利用波士顿房价数据来掌握回归预测分析的一些方法。通过本篇文章你可以学习到:1、可视化数据集的重要特征2、估计回归模型的系数3、使用RANSAC拟合高鲁棒性回归模型4、如何来评价回归模型5、多项式回归6、决策树回归7、随机森林回归数据集下载地址:https://archive.ics.uci.edu/ml/machine-learning-databases/housing/...原创 2018-04-26 22:05:23 · 19280 阅读 · 12 评论 -
聚类算法之DBSCAN划分高密度区域
关于聚类算法的前面两篇文章,已经介绍过了常用的原型聚类算法k-measn算法和层次聚类中的凝聚算法,这篇文章介绍一些密度聚类算法DBSCAN。k-means算法需要事先指定簇的个数,而凝聚不需要指定簇的个数,这两个算法会将所有的样本的划分到簇中,无法区分出噪声,k-means算法的簇空间是球状的,它们都无法很好的区分出高密度的区域。这篇文章主要介绍聚类算法中的DBSCAN算法,它划分出来的簇空间可...原创 2018-05-01 17:46:23 · 4294 阅读 · 2 评论 -
K-Means算法详细介绍(SSE、轮廓分析)
在前面我们介绍过了很多的监督学习算法,分类和回归。这篇文章主要介绍无监督算法,通过聚类分析来处理无类标数据。我们事先并不知道数据的正确结果(类标),通过聚类算法来发现和挖掘数据本身的结构信息,对数据进行分簇(分类)。聚类算法的目标是,簇内相似度高,簇间相似度低。有点像LDA降维算法,类内方差最小,类间方差最大。这篇文章主要包括:1、K-Means算法2、K-Means++3、硬聚类和软聚类4、聚类...原创 2018-04-29 10:29:55 · 44096 阅读 · 6 评论 -
聚类算法之层次聚类
一、原型聚类和层次聚类原型聚类也称基于原型的聚类(prototype-based clustering),这类算法假设聚类结构能够通过一组原型刻画,先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示、不同的求解方式,产生不同的算法。常用的原型聚类算法有k-means算法。层次聚类(hierarchical clustering)是一种基于原型的聚类算法,试图在不同层次对数据集进行划...原创 2018-04-30 01:13:32 · 49684 阅读 · 4 评论 -
logistic实现评论的分类(四)
在之前我们介绍了对电影评论的预处理的方法,分词、提取词干、去除停用词、提取句子的TF-IDF特征向量。在这篇文章中,我们将介绍使用评论的TF-IDF特征向量,使用logistic回归实现对评论的分类,并使用表格搜索来寻找最优参数。1、导入相关包import pandas as pdfrom sklearn.model_selection import train_test_splitfrom ...原创 2018-04-19 21:33:56 · 1447 阅读 · 1 评论 -
bagging通过bootstrap构建集成分类器
集成学习是将不同分类器组合成为一个元分类器,元分类器与其包含的当个分类器相比,元分类器具有更好的泛化性能。一、bagging集成分类器bagging没有使用相同的训练集拟合集成分类器中的单个成员分类器,bagging集成分类器的训练集使用了bootstrap抽样(有放回的随机抽样)。bagging可以提高不稳定模型的准确率,并且可以降低过拟合的程度。注:抽样后的子集T可以与其他的子集相同,因为是有...原创 2018-04-02 23:03:36 · 2085 阅读 · 0 评论 -
scikit-learn广义线性模型之岭回归
在上一篇文章中,我们了解了最小二乘法同时也了解了最小二乘法的一些使用限制。岭回归就是来解决最小二乘法所存在的哪些问题的。一、岭回归岭回归(ridge regression)是一种专用于共线性数据分析的有偏估计,实质上就是一种改良的最小二乘法。我们知道,最小二乘法是通过优化而岭回归则是通过优化通过,上面两个公式可以发现其实岭回归只是在平方差的后面加一项。其实,这就是我们所说的原创 2017-12-03 22:37:32 · 2903 阅读 · 0 评论 -
正则化
在上一篇文章中的岭回归模型,我们知道其实岭回归就是在最小二乘法的基础上添加了正则化的优化手段,来防止模型的过拟合,降低模型的权重,在这篇文章中,将详细的介绍一下正则化。一、方差和偏差在介绍正则化之前,我们先来了解两个在训练模型的时候,经常用到的两个衡量模型好坏的参数方差和偏差。1、方差方差(variance)是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用原创 2017-12-06 22:53:03 · 2112 阅读 · 0 评论 -
使用sklearn将数据集分为训练集和测试集
在使用机器学习算法之前,通常我们需要先将数据集分为训练集和测试集。在分配训练集和测试集的时候,如果测试集的数据越小,对模型的泛化误差的估计将会越不准确。所以,在划分数据集的时候我们需要进行权衡。在实际应用中,基于整个数据集数据的大小,训练集数据和测试集数据的划分比例是6:4、7:3或8:2。对于庞大的数据可以使用9:1,甚至是99:1。我们可以直接使用sklearn提供的train_test_sp...原创 2018-03-07 22:37:20 · 63823 阅读 · 2 评论 -
使用scikit-learn对特征进行归一化和标准化
一、为什么需要进行特征缩放?因为对于大多数的机器学习算法和优化算法来说,将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言,例如有两个不同的特征,第一个特征的取值范围为1~10,第二个特征的取值范围为1~10000。在梯度下降算法中,代价函数为最小平方误差函数,所以在使用梯度下降算法的时候,算法会明显的偏向于第二个特征,因为它的取值范围更大。在比如,k近邻算法,它使用的是欧式距离...原创 2018-03-08 22:31:54 · 26583 阅读 · 0 评论 -
特征工程之特征选择
一、为什么要做特征选择?如果一个模型在训练数据上的表现比在测试数据上要好很多,这就表示这个模型过拟合了。过拟合是指模型的参数对于训练数据的特定观测值拟合的非常接近,而训练数据的分布于真实数据的分布并不一致,所以模型具有较高的方差。产生过拟合的原因是因为,对于训练数据集上的模型过于复杂,通常我们可以通过以下几种方式来降低过拟合:1、收集更多的训练数据2、通过正则化引入罚项3、选择一个参数相对较少的简...原创 2018-03-11 22:22:53 · 9452 阅读 · 0 评论 -
sklearn中的Pipeline类
一、数据集描述数据集使用的是威斯康星乳腺癌(Breast Cancer Wisconsin),数据集下载。一共包含569个恶性或者良性肿瘤细胞样本,第一列id是样本的唯一编号,,第二列表示的是样本对应的结果(M代表恶性,B代表良性)。3~32列包含了30个从细胞核照片中提取、用实数值标识的特征,用于构建判定模型,对肿瘤是良性还是恶性做出预测。二、Pipeline类的使用1、将字符类标转换为数值im...原创 2018-03-20 21:37:02 · 1751 阅读 · 0 评论 -
通过验证曲线来判断机器学习模型的性能
当,一个机器学习的模型训练完成之后,我们应该如何来判断模型的性能。在上一篇文章中,我们使用了交叉验证的方法来估计模型的平均性能,这篇文章中,将介绍通过学习曲线来判断模型的偏差和方差问题,通过验证曲线来判断模型参数对于模型的过拟合和欠拟合问题。一、学习曲线判断模型的偏差和方差当模型在训练数据上构建的太复杂,这时候模型就有可能对训练数据出现过拟合,而对于未知数据的泛化能力就不好。对于模型的过拟合问题,...原创 2018-03-25 17:36:17 · 3903 阅读 · 0 评论 -
通过网格搜索和嵌套交叉验证寻找机器学习模型的最优参数
在机器学习的模型中,通常有两类参数,第一类是通过训练数据学习得到的参数,也就是模型的系数,如回归模型中的权重系数,第二类是模型算法中需要进行设置和优化的超参,如logistic回归中的正则化系数和决策树中的树的深度参数等。在上一篇文章中,我们通过验证曲线来寻找最优的超参,在这篇文章中,将通过一种功能更为强大的寻找超参的技巧:网格搜索,它可以寻找最优的超参组合,来提高模型的性能。一、网格(grid ...原创 2018-03-25 22:56:39 · 8568 阅读 · 8 评论 -
交叉验证评估模型性能
在构建一个机器学习模型之后,我们需要对模型的性能进行评估。如果一个模型过于简单,就会导致欠拟合(高偏差)问题,如果模型过于复杂,就会导致过拟合(高方差)问题。为了使模型能够在欠拟合和过拟合之间找到一个折中方案,我们需要对模型进行评估,后面将会介绍holdout交叉验证和k折交叉验证,通过这两种方法,我们可以获得一个模型泛化误差的可靠估计,也就是模型在新数据上的性能。一、holdout交叉验证hol...原创 2018-03-21 22:46:20 · 6975 阅读 · 5 评论 -
scikit-learn广义线性模型之最小二乘法
本系列教程是scikit-learn学习的第一篇,我会根据scikit-learn官网教程和自己的学习,写关于scikit-learn的学习一系列教程。首先,我会介绍模型的一些基本知识,不会去深层次的推导公式是如何得出来的,会介绍一下这个模型的适应情况,以及用scikit-learn这个框架来实现这个模型。一、最小二乘法还记得高中物理实验课的时候,做实验的时候我们会首先记录一系列的数据,然原创 2017-12-02 13:20:25 · 6158 阅读 · 0 评论