自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

转载 递归问题的解决思路

什么是递归呢? 即程序反复调用自己。在面对递归问题的时候,不要纠结于这一层做了什么,返回是什么,下一层又做了什么。递归既然是一个反复调用自己的过程,那么他的每一步一定都是一样的,因此我们只需要关注这一级的解决过程。像上面一样 , 需要关注三点:1. 整个递归的终止条件;2.一级递归需要做什么;3. 应该给上一级返回什么;因此,也就有了我们解递归题的三部曲: 找...

2019-05-22 22:28:54 2204 1

转载 CTR问题的贝叶斯平滑转化率

一.转化率:推荐领域常见的转化率:ctr(click-through Rate),往往是推荐问题的重要特征之一。ctr的数值等于 点击量 除以 曝光量;以r表示转化率: 但是在实际过程中往往会碰到两个问题:1. 新商品的转化率计算:新出现的商...

2019-05-22 14:06:25 1565

转载 时间序列模式(ARIMA)python实现

1.常见的时间序列算法:     2.时序模型的预处理    1. 纯随机序列,既白噪声序列,序列各项没有任何关系,可以终止对该序列的分析;    2. 平稳非白噪声序列,均值和方差不随时间变动。使用ARMA;    3. 非平稳序列,一般方法是将其转化为平稳序列,可以使使用ARIMA。   平稳性检验    1.时序图检验: 平稳时间序列的均值和方差都是常数,则平稳时...

2018-12-05 20:36:41 783

转载 时间序列模型

1. 时间序列分析方法概述    一个时间序列往往是一下几类变化形式的叠加或耦合。    (1)长期趋势变动:反映主要变化趋势;    (2)季节变动    (3)循环变动    (4)不规则变动    使用Ti表示长期趋势预测,St表示季节性变动,Ct表示循环变动,Rt表示随机干扰项。常见的时间序列模型有:    (1)加法模型:  Yt = Tt + St + Ct...

2018-12-04 20:40:42 7442

转载 机器学习--模型融合

stacking 和 blendingblending:数据集分为train和test,对于model_i,对train做fold=5的CV,其中四份做训练数据,另外一份作为val数据,得出模型model_i_j,然后对val预测生成向量v_i_j,对test数据预测生成向量t_i_j,使用同样的方法五次,把所有的train都预测完,将5份向量concat对应生成t_i和v_i。每个模...

2018-11-26 18:52:27 227

转载 python中的多进程与多线程

经常听到说python中多线程是jile鸡肋,推荐使用多进程,这是为什么呢?1. 知识背景    1.1 GIL: global inteinterpreter lock(全局解释锁),在python设计zhi之初为了数据安全考虑而设定;    1.2 每个cpu在同一时间只能执行一个线程(在单核cpu下的多线程就是并发,不是并行,并发与并行从宏观上来讲都是同时处理多路请求的概念。但是...

2018-10-02 17:43:15 97

原创 MySQL 删除外键字段

    记录一下踩的坑,同一个数据库下两个表,举个例子 user_info 表中的 username字段设置为外键,关联了 表user_pwd中的主键字段 user,现在因为重建表结构等原因,要把这个外键删除,这里的删除语法为:     alter table 表名 drop foreign key 外键别名;    需要注意的是,外键别名并不是设置为外键的字段名,假如我们直接 alter...

2018-08-27 20:38:49 3595 1

转载 python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别

为了区分三种乘法运算的规则,具体分析如下:import numpy as np1. np.multiply()函数函数作用数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致1.1数组场景A = np.arange(1,5).reshape(2,2)Aarray([[1, 2], [3, 4]])B = np.arange(0,4)....

2018-07-23 15:09:45 373

转载 numpy中的—ravel() 和 flatten()

numpy的ravel() 和 flatten()函数简介首先声明两者所要实现的功能是一致的(将多维数组降位一维)。这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平)。两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是...

2018-07-23 14:55:47 166

原创 《机器学习实战笔记--降维技术 利用SVD来简化数据》

奇异值分解:SVD(singular value decomposition)1.1 SVD的应用    利用SVD我们能用小的多的数据来表示原始的数据集。这样做,实际上是去除了噪声和冗余信息。我们是从数据中抽取信息。基于这个视角,我们可以把SVD看成从噪声数据中提取相关特征。    先来学习SVD是如何通过隐性语义索引应用于搜索和信息检索领域的。然后,再介绍SVD在推荐系统中的应用。...

2018-07-21 11:34:51 888 1

原创 《机器学习实战笔记--降维技术 利用PCA来简化数据》

    将含有很多特征的数据,简化到只有少数最重要的特征,这就被称为降维。在低维下,数据更容易被处理,另外,其相关特征可能在数据中明确显示出来。通常而言,在应用机器学习算法之前,必须先识别出其相关特征。    在降维中,对数据进行了预处理。之后,采用其他机器学习技术对其进行处理。1.1 降维技术    数据简化有下列一些列原因:        数据集更易用;        降低...

2018-07-19 14:55:10 452

转载 numpy flatten函数

a是个矩阵或者数组,a.flatten()就是把a降到一维,默认是按横的方向降 >>> a = np.array([[1,2], [3,4]])>>> a.flatten()array([1, 2, 3, 4])>>> a.flatten('F') #按竖的方向降array([1, 3, 2, 4])那么a.flatten...

2018-07-19 10:29:18 1209

转载 《numpy,pandas中的axis=0 ,axis=1的问题》

投票最高的答案揭示了问题的本质: 其实提问者理解axis有问题,df.mean其实是在每一行上取所有列的均值,而不是保留每一列的均值。也许简单的来记就是axis=0代表往跨行(down),而axis=1代表跨列(across),作为方法动作的副词。换句话说:使用0值表示沿着每一列或行标签\索引值向下执行方法 使用1值表示沿着每一行或者列标签模向执行对应的方法下图代表在DataFram...

2018-07-19 09:48:05 413

原创 《机器学习实战笔记--第三部分 无监督学习 使用FP-growth算法来高效发现频繁项集》

    我们在搜索引擎上查询东西时,搜索引擎就会自动补全查询词项。为了给出这些推荐的词时,搜索引擎公司的研究人员就需要本章的算法来查找互联网上经常出现在一起的词队。这需要一种高效的发现频繁项集的方法。    该算法为FP-growth,比之前的apriori更快。它基于apriori构建,但在完成相同任务时采取了一些不同的技术。这里的任务时将数据集存储在一个特定称为FP树的结构之后发现频繁性及...

2018-07-18 20:49:45 499

原创 《机器学习实战笔记--第三部分 无监督学习 使用Aprioris算法》

    通过查看哪些商品经常在一起购买,可以帮助商店了解用户的购买行为。这种从数据海洋中抽取的知识可以用于商品定价,市场促销,存货管理等环节。从大规模数据集中寻找物品的隐含关系称为 关联分析 或则 关联规则学习。我们将使用Apriori算法来解决上述问题。    下面首先讨论关联分析,再讨论apriori原理,apriori算法正是基于该原理得到的。   1. 关联分析              ...

2018-07-10 17:56:55 451

原创 《机器学习实战笔记--第三部分 无监督学习 利用k-均值聚类算法对未标记数据分组》

    在无监督学习中,类似分类和回归中的目标变量是事先不存在的。这里要回答的问题是从数据X中能发现什么?比如构成X的最佳6个数据簇都是哪些?或则X中哪三个特征出现的最频繁?    聚类是一种无监督学习,它将相似的对象归到同一个簇中。有点像全自动分类。簇内对象越相似,聚类效果越好。    K-均值聚类算法,可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成。    先讨论一下 簇识别...

2018-07-09 09:00:43 387

原创 《机器学习实战笔记--第二部分 利用回归预测数值型数据:树回归2》

  模型树    用树来对数据建模,除了把叶节点简单的设定为常数值之外,还有一种方法是把叶节点设定为分段线性函数。这里所谓的分段线性是指模型由多个线性片段组成。        上图就是两个线性模型,数据集中0.0-0.3以某个线性模型建模,另一部分以另外一个线性模型建模。    很显然,两条直线比很多节点组成的一个大树更容易解释。模型树的可解释性是它由于回归树的特点之一。前面的代码稍加修改就可以在...

2018-07-06 21:11:02 313

原创 《机器学习实战笔记--第二部分 利用回归预测数值型数据:树回归1》

1.实例:预测乐高玩具的价格     

2018-06-30 20:51:01 726

原创 《机器学习实战笔记--第二部分 利用回归预测数值型数据:回归1》

    分类的目标变量是标称型数据,而本章将会对连续型的数据做出预测。  1. 利用线性回归找到最佳拟合直线        回归的目的是预测数值型的目标值。最直接的办法是依据输入写出一个目标值的计算公式。这个公式就是回归方程,其中的系数是回归系数,求回归系数的过程就是回归。    说到回归一般是指线性回归,所以本章里的回归与线性回归是一个意思。线性回意味着可以将输入项分别乘以一些常量,再将结果加起...

2018-06-21 18:05:25 1227

原创 《机器学习实战笔记--第一部分 分类算法:利用adaboost元算法提高分类性能2》

    在第四章曾使用logistic回归来预测患病的马是否能存活。现在将在这个数据集上使用adaboost分类器。                加载函数:def loadDataSet(fileName): #general function to parse tab -delimited floats numFeat = len(open(fileName).readlin...

2018-06-19 17:24:08 307

原创 《机器学习实战笔记--第一部分 分类算法:利用adaboost元算法提高分类性能1》

    当作重要决定的时候我们往往参考的不只是一个专家的意见。机器学习问题也是这样,这就是元算法背后的思路。元算法是对其他算法的一种组合方式。我们集中关注于一个称作adaboost的最流行算法的元算法。该方法是机器学习工具箱中最强有力的工具之一。    我们先讨论不同分类器的集成方法,然后主要关注boosting方法机器代表分类器adaboost。在接下来我们会建立一个单层决策树分类器。adabo...

2018-06-15 17:45:56 266

原创 《机器学习实战笔记--第一部分 分类算法:logistic回归2》

    本节将使用logistic回归来预测患有病的马的存活问题。数据集包括368个样本和28特征。        数据集中有部分指标是主观的难以测量,数据集中有30%是缺失的。下面我们将介绍如何处理数据集中的数据缺失问题,然后再利用logistic回归和随机梯度上升法来预测病马的生死。    1.准备数据:处理数据中的缺失值    数据采集过程中若某个传感器损坏导致一个特征无效该怎么办?所以我们...

2018-06-13 20:39:58 211

原创 《机器学习实战笔记--第一部分 分类算法:logistic回归1》

    利用logistic回归进行分类的主要思想是:根据现有的数据对分类边界建立回归公式,以此进行分类。训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法。接下来介绍这个二值输出分类器的数学原理。        首先阐述logistic回归的定义,然后再介绍一些最优化算法,其中包括梯度上升法和一个改进的随机梯度上升法。这些算法将会用于分类器的训练。    1. 基于logistic回归和...

2018-06-12 22:55:25 2369 1

原创 《机器学习实战笔记--第一部分 分类算法:朴素贝叶斯分类2》

1. 使用朴素贝叶斯过滤垃圾邮件                文件解析及完整的垃圾邮件测试函数:# 文件解析及完整的垃圾邮件测试函数def textParse(bigString): # input is big string, #output is word list import re listOfTokens = re.split(r'\W*', bigString...

2018-06-08 16:47:54 394

原创 《机器学习实战笔记--第一部分 分类算法:朴素贝叶斯分类1》

1.基于贝叶斯决策理论的分类方法:朴素贝叶斯:‘朴素’是因为整个形式我们只做最原始,最简单的假设。优点:在数据较少的情况下仍有效;缺点:duis...

2018-06-06 15:24:09 397

转载 《向量范数,矩阵范数》

以下分别列举常用的向量范数和矩阵范数的定义。向量范数1-范数: (f-范数),即向量元素绝对值之和,matlab调用函数norm(x, 1) 。2-范数:,Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方,matlab调用函数norm(x, 2)。-范数:,即所有向量元素绝对值中的最大值,matlab调用函数norm(x, inf)。-范数:,即所有向量元素绝对值...

2018-05-15 00:12:42 170

原创 《机器学习实战笔记--第一部分 分类算法:支持向量机 4》

SVM实战,手写识别问题之前使用KNN算法进行手写体的识别,需要保存全部的向量,使用SVM只需要保存支持向量即可,可以减少内存的占用。def img2vector(filename): returnVect = zeros((1,1024)) fr = open(filename) for i in range(32): lineStr = fr.readl...

2018-05-12 16:55:39 205

原创 《机器学习实战笔记--第一部分 分类算法:支持向量机 3》

    在复杂数据上应用核函数      像这种非线性可分的情况,但是该数据又存在某种可以识别的模式。我们就要使用一种称为 核函数(kernel)  的工具将数据转换成易于分类器理解的形式。    1、利用核函数将数据映射到高维空间    上图所示,数据点处于一个圆中,人们大脑能意识到,但是分类器只能识别分类器的结果大于0还是小于0。所以我们在二维坐标轴中插入直线,效果并不理想。所以考虑一种方法,...

2018-05-12 15:03:34 291

转载 numpy中matrix和array的区别

Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。在numpy中matrix的主要优势是:相对简单的乘法运算符号。例如,a和b是两个matrices,那么a*b,就是矩阵积。import numpy as...

2018-05-11 16:39:53 1075

原创 《机器学习实战笔记--第一部分 分类算法:支持向量机 2》

1、SMO高效优化算法      对这两个式子进行优化。下面我们开始讨论SMO算法,然后给出一个简化版本以便理解它的工作流程,最后才将会给出完整的算法,它比简化版的运行速度要快很多。    platt的SMO算法   SMO表示 序列最小优化,将大优化问题分解为多个小优化问题来求解。这些小优化问题往往很容易进行求解,并且对它们进行顺序求解的结果与将它们作为整体来求解的结果是完全一致的。在结果完全相...

2018-05-05 21:29:21 178

原创 《机器学习实战笔记--第一部分 分类算法:支持向量机 1》

    先简述SVM的基本概念,SVM有很多实现,我们只介绍其中最流行的一种,最小序列化SMO算法。在此之后,将介绍一种使用核函数的方式将SVM扩展到更多的数据集上。    1、基于最大间隔分隔数据:      优点:泛化错误率低,计算开销不大,结果易于解释;      缺点:对参数调节和核函数敏感,原始分类器不加修改仅适用于处理二分类问题;      适用数据类型:数值型和标称型数据。    上...

2018-05-04 22:19:45 251

原创 《机器学习实战笔记--第一部分 分类算法:决策树 4》

    之前的决策树分类部分只完成了对离散值的分类,当遇到有某些属性值是连续的时候就需要一些其他的方法了。    由于连续值的可取值数目不再有限,因此不能直接根据连续属性的可取值来对节点进行划分。此时就需要连续属性的离散化,最简单的策略是采用二分法对连续属性进行处理,这正是C4.5决策树算法中采用的机制。下面我们以周志华老师的西瓜书为例画一个带有连续值分类的决策树。            给定样本...

2018-04-25 17:00:32 219

原创 《python的json操作》

    如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对...

2018-04-24 23:36:09 134

原创 《python 操作文件和目录,序列化》

    Python内置的os模块可以直接调用操作系统提供的接口函数。    环境变量:    在操作系统中定义的环境变量都保存在os.environ这个变量中,可以直接查看。    要获取某个环境变量的值,可以调用os.enviro.get('key')    操作文件和目录:    操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中。查看,创建和删除目录可以这么调用:  ...

2018-04-24 23:20:41 183

原创 《机器学习实战笔记--第一部分 分类算法:决策树 3》

        构造分类器:我们在构造了决策树之后,可以用于实际的分类了。在执行分类的时候需要决策树以及用于构造树的标签向量。程序比较测试数据与决策树上的数值,递归执行该过程直到进入叶子节点;最后将测试数据定义为叶子节点所属的类型。def classify(inputTree, featLabels, testVec): #featLabels特征标签列表 firstStr = l...

2018-04-20 20:36:59 204

原创 《机器学习实战笔记--第一部分 分类算法:决策树 2》

    之前我们已经了解了从数据集构造决策树的各种子功能模块,原理:从原始数据中基于最好的特征值进行划分数据集,由于特征值可能多余两个,所以可能存在大于两个分支的数据集划分。第一次划分之后数据将被传递到树分支的下一个节点,在这个节点上,我们可以再次划分数据。因此我们可以用递归的原则处理数据。    递归结束的条件是:程序遍历完所有划分数据集的属性,或则每个分支下的所有实例都具有相同的分类。如果所有...

2018-04-20 15:55:03 211

原创 《机器学习实战笔记--第一部分 分类算法:决策树 1》

    决策树是最经常使用的数据挖掘算法,他之所以如此流行,一个很重要的原因是使用者基本不用了解机器学习算法,也不用深究他是如何工作的。3-1就是一个决策树,正方形表示判断模块,椭圆形表示终止模块,从模块引出的箭头称作分支,他可以到达另一个判断模块或则终止模块。我们之前介绍的KNN最大的缺点就是无法得出数据的内在意义,而决策树的主要优势就是在于数据形式非常容易理解。    下面我们将构造决策树算法...

2018-04-19 14:29:50 151

原创 《机器学习实战笔记--第一部分 分类算法:KNN算法 3》

现在我们要做一个小程序,通过输入一些信息,程序就会给出预测值。将下面的代码加入KNN.py中:def classifyPerson(): resultList = ['not at all','in small doses','in large doses'] percentTats = float(input("percentage of time spent playing v...

2018-04-18 14:08:59 153

原创 《机器学习实战笔记--第一部分 分类算法:KNN算法 2》

分类器并不会得到百分百正确的结果。检验分类器给出的结果是否符合预期的结果,我们可以用错误率来进行评估。上一节实验的分类器并没有太大的实际作用,我们将在现实世界中实现k-近邻算法。首先我们会使用k-近邻算法改进约会网站的效果,然后使用k-近邻算法改进手写识别系统。实例:在约会网站上使用KNN(1)收集数据:提供文本文件(2)准备数据:使用python解析文本文件(3)分析数据:使用matplotli...

2018-04-17 18:22:55 235

转载 如何用VSCode愉快的写Python

在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带的编辑器。由于本人用惯了宇宙第一IDE(Visual Studio),所以当Visual Studio Code出现时,心情有点小激动呢。从我的使用经验出发,可以说VSCode用来写Python真的是再合适不过了,你将体验到丝滑的编程体验和无限扩展的可能。而且,如果你的项目是包含多种语言的,比如Web开发...

2018-04-17 14:12:02 1788

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除