Python
Zen of Data Analysis
Discover yourself, 不念过往,不畏将来,发掘数据之美
展开
-
Python-Numpy语法总结-数组的索引和切片
普通索引和切片像列表一样的索引和切片a=np.arange(15).reshape(3,5)aarray([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]])a[1][1]6a[[1,2]] #列表是不允许这样切的array([[ 5, 6, 7, 8, ...原创 2019-12-07 21:55:35 · 549 阅读 · 0 评论 -
Python-Numpy语法总结-数组的排序及重塑
一维数组排序np.random.seed(2)a=np.random.randn(5)print(a)np.argsort(a) #返回一个索引的排序(默认升序)[-0.41675785 -0.05626683 -2.1361961 1.64027081 -1.79343559]array([2, 4, 0, 1, 3], dtype=int64)print(a.argso...原创 2019-12-07 21:06:41 · 235 阅读 · 0 评论 -
Python-Numpy语法总结-数组的创建
NumPy 是什么?NumPy是使用Python进行科学计算的基础软件包。除其他外,它包括:功能强大的N维数组对象。精密广播功能函数。集成 C/C+和Fortran 代码的工具。强大的线性代数、傅立叶变换和随机数功能。#全部行都能输出from IPython.core.interactiveshell import InteractiveShellInteractiveShell....原创 2019-12-06 11:35:31 · 951 阅读 · 0 评论 -
机器学习-推荐系统之基于物品的协同过滤
推荐系统可以把那些最终会在用户( 推荐系统可以把那些最终会在用户( 推荐系统可以把那些最终会在用户( 推荐系统可以把那些最终会在用户( 推荐系统可以把那些最终会在用户( 推荐系统可以把那些最终会在用户( User )和物品( )和物品( Item Item )之间产生的 )之间产生的 连接 提前找出来。 提前找出来。 提...原创 2019-11-23 16:24:45 · 384 阅读 · 0 评论 -
机器学习-推荐系统之基于用户的协同过滤
人以群分 – 基于用户的协同过滤(User Collaborative Filtering,简称User CF)生活中可能有这样的朋友:他喜欢的书、电影,你也喜欢;他喜欢的衣服款式、美食餐厅你也十分推崇;……基本原理:通过用户对不同内容(物品)的行为,来评测用户之间的相似性,找到“邻居”基于这种相似性做出推荐:这种推荐的本质是,给相似的用户推荐其他用户喜欢的内容;这就是我们经常看...原创 2019-11-23 08:28:50 · 817 阅读 · 0 评论 -
深度学习基础算法-神经网络
2层神经网络的实现使用Numpy矩阵来实现神经网络。我们先使用最简单的网络去实现,这个神经网络去掉了偏置和激活函数,只有权重。这里我们假设每条线上对应的权重就是各自的数字,那么如果用函数来表示的话,应该是可以看到,这样的表示方法非常的复杂,不方便,因此我们把神经网络的表示方法,改变成矩阵的乘法形式:实现该神经网络时,要注意X ,W ,Y 的形状,特别是X和W的对应维度的元素个数是否一致...原创 2019-11-22 12:02:29 · 333 阅读 · 0 评论 -
深度学习基础算法-神经网络之激活函数
神经网络算法神经网络算法试图模拟生物神经系统的学习过程,以此实现强大的预测性能。不过由于是模仿人类大脑,所以神经网络的模型复杂度很高也是众所周知。在现实应用中,神经网络可以说是解释性最差的模型之一,商业环境中很少使用神经网络。然而除了商业分析,还有许多算法应用的部分,其中最重要的是深度学习和人工智能的领域,现在大部分已经成熟的人工智能技术:图像识别,语音识别等等,背后都是基于神经网络的深度学习算...原创 2019-11-22 11:03:00 · 427 阅读 · 0 评论 -
机器学习-二分类SVC中的样本不均衡问题:重要参数class_weight
样本不均衡问题对于分类问题,永远都逃不过的一个痛点就是样本不均衡问题。样本不均衡是指在一组数据集中,标签的一类天生占有很大的比例,但我们有着捕捉出某种特定的分类的需求的状况。比如,我们现在要对潜在犯罪者和普通人进行分类,潜在犯罪者占总人口的比例是相当低的,也许只有2%左右,98%的人都是普通人,而我们的目标是要捕获出潜在犯罪者。这样的标签分布会带来许多问题。首先,分类模型天生会倾向于多数的类,...原创 2019-11-13 18:28:00 · 7065 阅读 · 0 评论 -
机器学习-SVM硬间隔与软间隔:重要参数C
SVM在软间隔数据上的推广到这里,我们已经了解了线性SVC的基本原理,以及SVM如何被推广到非线性情况下,还了解了核函数的选择和应用。但实际上,我们依然没有完全了解SVM用于二分类的全貌。我们之前在理论推导中使用的数据都有一个特点,那就是他们或是完全线性可分,或者是非线性的数据。在我们对比核函数时,实际上用到了一种不同的数据,那就是不完全线性可分的数据集。比如说如下数据集:这个数据集和我们最...原创 2019-11-13 18:14:41 · 8957 阅读 · 0 评论 -
机器学习:SVM核函数的优势和缺陷
看起来,除了Sigmoid核函数,其他核函数效果都还不错。但其实rbf和poly都有自己的弊端,我们使用乳腺癌数据集作为例子来展示一下:from sklearn.datasets import load_breast_cancerfrom sklearn.svm import SVCfrom sklearn.model_selection import train_test_splitim...原创 2019-11-12 10:27:53 · 5136 阅读 · 0 评论 -
机器学习:非线性SVM核函数在不同数据集上的表现
问题引入除了"linear"以外的核函数都能够处理非线性情况,那究竟什么时候选择哪一个核函数呢?遗憾的是,关于核函数在不同数据集上的研究甚少,谷歌学术上的论文中也没有几篇是研究核函数在SVM中的运用的,更多的是关于核函数在深度学习,神经网络中如何使用。在sklearn中,也没有提供任何关于如何选取核函数的信息。但无论如何,还是可以通过在不同的核函数中循环去找寻最佳的核函数来对核函数进行一个选取...原创 2019-11-12 09:43:19 · 1303 阅读 · 0 评论 -
线性SVM决策过程的可视化
使用sklearn中的式子来可视化决策边界,支持向量,以及决策边界平行的两个超平面。导入需要的模块from sklearn.datasets import make_blobs #导入创造数据集的包from sklearn.svm import SVC #支持向量机分类器import matplotlib.pyplot as pltimport numpy as np实...原创 2019-11-11 22:42:01 · 2080 阅读 · 0 评论 -
非线性SVM-重要参数kernel
非线性SVM的决策函数:将数据从原始的空间投射到新空间中,这种变换非常巧妙,但也带有一些实现问题。 首先,我们可能不清楚应该什么样的数据应该使用什么类型的映射函数来确保可以在变换空间中找出线性决策边界。极端情况下,数据可能会被映射到无限维度的空间中,这种高维空间可能不是那么友好,维度越多,推导和计算的难度都会随之暴增。其次,即使已知适当的映射函数,我们想要计算类似于这样的点积,计算量可...原创 2019-11-04 20:36:45 · 971 阅读 · 0 评论 -
机器学习:算法模型的偏差 vs 方差
一个集成模型(f)在未知数据集(D)上的泛化误差E(f;D),由方差(var),偏差(bais)和噪声(ε)共同决定。E(f;D)=bias2(x)+var(x)+ϵ2E(f;D)=bias^2(x)+var(x)+\epsilon^2E(f;D)=bias2(x)+var(x)+ϵ2关键概念:偏差与方差观察下面的图像,每个点就是集成算法中的一个基评估器产生的预测值。红色虚线代表着这些预测值...原创 2019-10-19 12:20:03 · 1170 阅读 · 0 评论 -
机器学习模型的评估指标
机器学习的参数调整是为了更好的模型拟合度,那么其评估标准是什么,如何调整参数来提升模型的整体效果呢?调参的方式总是根据数据的状况而定,所以没有办法一概而论。通过画学习曲线,或者网格搜索,能够探索到调参边缘(代价可能是训练一次模型要跑三天三夜),“业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。但是在现实中,高手调参恐怕还是多依赖于经验,而这些经验,来源于:1...原创 2019-10-19 11:13:38 · 479 阅读 · 0 评论 -
sklearn机器学习:AdaBoost回归器
上篇博文讨论了AdaBoost分类器,接下来一起看一下AdaBoost回归器如何工作。核心参数至于弱分类器,还是使用决策树,用一个小例子一起来看AdaBoostRegressor的使用。#AdaBoostRegressor#导入所需的模块和包import numpy as npimport matplotlib.pyplot as pltfrom sklearn.tree imp...原创 2019-10-18 22:23:29 · 4781 阅读 · 0 评论 -
sklearn机器学习:AdaBoost分类器
AdaBoostAdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由 Yoav Freund 和 Robert Schapire在1995年提出。它的自适应在于:前一个基本分类器分错的样本会得到加强(也就是得到更高的权重),加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭...原创 2019-10-18 21:59:08 · 7906 阅读 · 0 评论 -
sklearn机器学习:随机森林回归器RandomForestRegressor
sklearn随机森林回归器类的格式sklearn.ensemble.RandomForestRegressor (n_estimators=’warn’, criterion=’mse’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’au...原创 2019-10-18 16:43:30 · 39392 阅读 · 2 评论 -
sklearn机器学习:随机森林分类器RandomForestClassifier
以下以随机森林为例讨论集成算法。sklearn随机森林分类器随机森林是非常具有代表性的Bagging集成算法,它的所有基评估器都是决策树,分类树组成的森林就叫做随机森林分类器,回归树所集成的森林就叫做随机森林回归器。我们先来看RandomForestClassifier,随机森林分类器。class sklearn.ensemble.RandomForestClassifier (n_est...原创 2019-10-16 22:05:25 · 20712 阅读 · 2 评论 -
机器学习:集成算法概述
集成学习(Ensemble learning)就是将若干个弱分类器通过一定的策略组合之后产生一个强分类器,是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成所有模型的建模结果。基本上所有的机器学习领域都可以看到集成学习的身影,在现实中集成学习也有相当大的作用,它可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易...原创 2019-10-16 19:44:49 · 777 阅读 · 0 评论 -
sklearn机器学习:基于密度的聚类算法DBSCAN
DBSCANK-Means是最常见的聚类方法,能够实现快速聚类,但局限于其算法构架,K-Means对非球形边界的数据很难达到一个较好的分类效果,因此我们需要借助另外的数学理理论工具对其进行进一步的完善。这里介绍一种利用密度进行聚类的方法:DBSCAN。一方面作为聚类算法的补充内容,一方面需要掌握面一个新算法如何利用scikit-learn快速上手应用实践的方法,当然最重要的一点,是要树立关于...原创 2019-10-15 06:42:10 · 5167 阅读 · 0 评论 -
sklearn机器学习:K-Means之提前停止迭代
重要参数max_iter & tol:让迭代停下来之前描述K-Means的基本流程时我们提到过,当质心不再移动,K-Means算法就会停下来。但在完全收敛之前,我们也可以使用max_iter,最大迭代次数,或者tol,两次迭代间Inertia下降的量,这两个参数来让迭代提前停下来。有时候,当我们的n_clusters选择不符合数据的自然分布,或者为了业务需求,必须要填入与数据的自然分布不...原创 2019-10-14 21:58:57 · 3039 阅读 · 0 评论 -
sklearn机器学习:K-Means初始质心怎么放
重要参数init & random_state & n_init在K-Means中有一个重要的环节,就是放置初始质心。init如果有足够的时间,K-means一定会收敛,但Inertia可能收敛到局部最小值。是否能够收敛到真正的最小值很大程度上取决于质心的初始化。init就是用来帮助我们决定初始化方式的参数。random_state初始质心放置的位置不同,聚类的结果很可...原创 2019-10-14 21:35:22 · 9031 阅读 · 0 评论 -
机器学习:聚类算法的模型评估指标:轮廓系数
不同于分类模型和回归,聚类算法的模型评估不是一件简单的事。在分类中,有直接结果(标签)的输出,并且分类的结果有正误之分,所以使用预测的准确度,混淆矩阵,ROC曲线等指标来进行评估。但无论如何评估,都是在”模型找到正确答案“的能力。而回归中,由于要拟合数据,我们有MSE均方误差,有损失函数来衡量模型的拟合程度。但这些衡量指标都不适用于聚类。如何衡量聚类算法的效果聚类模型的结果不是某种标签输出,...原创 2019-10-14 21:00:43 · 9175 阅读 · 1 评论 -
sklearn机器学习:K-Means
K-Means类的格式sklearn.cluster.KMeans (n_clusters=8, init=’k-means++’, n_init=10, max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=None, algorithm=...原创 2019-10-14 20:21:21 · 326 阅读 · 0 评论 -
sklearn机器学习:逻辑回归LogisticRegression参数解析之梯度下降
梯度下降:重要参数max_iter在上篇博文《sklearn机器学习:逻辑回归LogisticRegression参数解析之penalty & C》中,我们解析了参数penalty & C,本文重点讨论max_iter。逻辑回归的目的是求解能够让模型最优化、拟合程度最好的参数ω的值,即求解能够让损失函数J(ω)最小化的ω值。对于二元逻辑回归,有多种方法可以用来求解参数ω,最常...原创 2019-10-14 17:04:18 · 2641 阅读 · 0 评论 -
sklearn机器学习:逻辑回归LogisticRegression参数解析之penalty & C
LogisticRegression类的格式sklearn.linear_model.LogisticRegression (penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’warn...原创 2019-10-14 14:05:27 · 18565 阅读 · 1 评论 -
sklearn机器学习:多项式朴素贝叶斯MultinomialNB
多项式朴素贝叶斯MultinomialNB多项式贝叶斯可能是除了高斯之外,最为人所知的贝叶斯算法了。它也是基于原始的贝叶斯理论,但假设概率分布是服从一个简单多项式分布。多项式分布来源于统计学中的多项式实验,这种实验可以具体解释为:实验包括n次重复试验,每项试验都有不同的可能结果。在任何给定的试验中,特定结果发生的概率是不变的。举个例子,比如,一个特征矩阵表示投掷硬币的结果,则得到正面的概率为P...原创 2019-10-08 19:36:54 · 26392 阅读 · 0 评论 -
机器学习算法调参神器之2:交叉验证
在上个帖子中,我们介绍了机器学习算法调参神器之1:学习曲线,并用学习曲线对KNN算法的K值选择进行了调优,发现效果不错。然而,确定了k值 之后,我们又发现一件事:每次重新处理整个数据集之后,学习曲线都在变化,不仅每次选择的最优K值不同,而且模型的运行效果也不尽相同,这是为什么呢?实际上,这是由于「训练集」和「测试集」的划分不同造成的。模型每次都使用不同的训练集进行训练,不同的测试集进行测试,自然...原创 2019-09-30 23:00:49 · 2190 阅读 · 0 评论 -
sklearn机器学习:特征选择-Lasso
Lasso的核心作用:特征选择Lasso类的格式sklearn.linear_model.Lasso (alpha=1.0, fit_intercept=True, normalize=False, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False,random...原创 2019-10-11 11:48:47 · 12252 阅读 · 6 评论 -
sklearn机器学习:岭回归用于选取最优正则化系数α的类RidgeCV
上一篇博文《sklearn机器学习:岭回归Ridge》中,提到了最佳正则化参数α\alphaα取值选择的重要性。既然要选择α\alphaα的范围,不可避免地要进行最优参数的选择。岭迹图在各种机器器学习教材中,总是教导使用岭迹图来判断正则项参数的最佳取值。传统的岭迹图长这样,形似一个开口的喇叭图(根据横坐标的正负,喇叭有可能朝右或者朝左):这个以正则化参数为横坐标,线性模型求解的系数ω\om...原创 2019-10-11 09:36:56 · 6516 阅读 · 1 评论 -
sklearn机器学习:决策树tree.DecisionTreeClassifier()
sklearn中的决策树分类器sklearn中的决策树分类器函数,格式如下:class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None,min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0....原创 2019-10-06 10:53:44 · 2461 阅读 · 1 评论 -
决策树的生成之1:ID3算法
决策树的生成从数据集构造决策树算法所需要的子功能模块,其工作原理如下:得到原始数据集,然后基于最好的属性值划分数据集,由于特征值可能多于两个,因此可能存在大于两个分支的数据集划分。第一次划分之后,数据集被向下传递到树的分支的下一个结点。在这个结点上,我们可以再次划分数据,因此我们可以采用递归的原则处理数据集。递归结束的条件是:1) 程序遍历完所有划分数据集的属性;2)每个分支下的所有实例...原创 2019-10-04 11:24:42 · 584 阅读 · 0 评论 -
决策树算法之:划分数据集
分类算法除了需要测量信息熵,还需要划分数据集。在知道如何得到熵之后,就可以按照获取最大信息增益的方法来判断是否正确地划分了数据集。对每个特征划分数据集的结果计算一次信息熵,以便判断按照哪个特征划分数据集是最好的划分方式。# 数据集最佳切分函数划分数据集的最大准则是选择**最大信息增益**,也就是信息下降最快的方向。通过手动计算(详见本博客上一篇博文《决策树的特征选择之2:信息增益》),得知:第0列列的信息增益为0.42,第1列列的信息增益为0.17,0.42>0.17,所以应该选择第0列进行切分数据原创 2019-10-03 22:16:46 · 2037 阅读 · 1 评论 -
决策树的特征选择之2:信息增益
决策树最终的优化目标使得叶结点的总不纯度最低,即对应衡量不纯度的指标最低。同时,全局最优树没有办法简单高效地获得,因此,此处仍然要以局部最优化方法来指导建模过程,并通过优化条件的设置,最终在每一步都是局部最优的条件下逐步至尽可能全局最优的结果。而在信息熵指数的指导下,决策树生成过程的局部最优条件也非常好理解:即在选取属性测试条件(attribute test condition)对某结点(数据...原创 2019-10-02 22:07:15 · 1209 阅读 · 1 评论 -
决策树的特征选择之1:香农熵、基尼指数、误分类误差
特征选择是决策树学习的重要内容,本文讨论的特征指标是香农熵:决策树学习的关键在如何选择最优划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别, 即结点的 “纯度”(purity)越来越高。在分类树中,划分的优劣用不纯度度量(impurity-measure)定量分析。对于结点m,令Nm为到达结点m的训练实例数,对于根结点,Nm为N。Nm个实例中有N...原创 2019-10-02 19:31:31 · 5185 阅读 · 2 评论 -
归一化在机器学习算法中的应用
归一化的适用范围距离类模型归一化的需求什么是归一化呢?我们把X放到DataFrame中来看,可以观察到,每个特征的均值差异很大:有的特征数值很大,有的特征数值很小,这种现象在机器学习中被称为"量纲不统一"。NN是距离类模型,欧氏距离的计算公式中存在着特征上的平方和。如果某个特征????的取值非常大,距离的大小很大程度上都会由这个巨大特征????来决定,其他特征之间的距离可能就无法对AB两点之间的距离????(????, ????)的大小产生什么影响了,这种现象会让KNN这种距离类模型的效果大打折扣。原创 2019-10-01 09:46:38 · 209 阅读 · 0 评论 -
机器学习算法调参神器之1:学习曲线
在Python中重要的机器学习库scikit-learn的算法模型应用中涉及各类关键参数,那么,如果选择及调整这些参数才能优化模型运行结果呢?下面介绍一下机器学习算法中常用的调参神器之一的:学习曲线。学习曲线参数学习曲线是一条以不同的参数取值为横坐标,不同参数取值下的模型结果为纵坐标的曲线,我们可以选择模型表现最佳点的参数取值为参数赋值。代码实现#导包import numpy as np...原创 2019-09-30 15:23:49 · 2127 阅读 · 3 评论 -
机器学习算法之1:k-NN 算法
k-NN 算法k-NN 算法(k-Nearest Neighbor),也叫k 近邻算法。学会k-NN 算法,只需要三步:了解k-NN的算法思想掌握背后的数学原理代码实现算法思想:多数表决k-近邻算法,它的本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够相似属于同一类别。当然只对比一个样本是不够的,误差会很大,我们需要找到离其最近的k个样本,并将这些样本称之为「近邻...原创 2019-09-30 14:43:46 · 1572 阅读 · 1 评论 -
机器学习分类及有监督学习相关概念
机器学习的方法机器学习的方法是基于数据产生的"模型"(model)的算法,也称"学习算法"(learning algorithm)。机器学习的分类包括有监督学习(supervised learning)、无监督学习(unsupervised learning)、半监督学习(semi-supervised learning)、强化学习(reinforcement learning)。有监督学...原创 2019-09-30 13:26:45 · 1517 阅读 · 0 评论