Python
白噪声序列
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题笔记2
一、双指针80.删除排序数组中的重复项2本题重点在理解。首先原地删除肯定是用双指针,其次要理解每个指针的实际含义。cur指针相对固定,可以理解为展示当前数组的“布”,cur后面都是我们看不到的地方,i指针用于遍历,判断后面的地方有没有数能够加入当前数组,如果能加入,就把cur指针向后移动一位,并且把i指向的内容复制到cur上。题解:...原创 2020-10-09 18:50:59 · 269 阅读 · 0 评论 -
Python中的对象变动(Mutation)
今天在刷LeetCode第78题子集时,遇到了一个很奇怪的现象,现在记录如下。先把题目原题贴出来:这是一道回溯算法题,按照解题思路本来写成:result = []def backtrack(nums, path, start): result.append(path) print('now the result is :{}\n'.format(result)) for i in range(start, len(nums)): path.append(nums[i]) prin原创 2020-10-01 22:54:08 · 410 阅读 · 0 评论 -
Python类的实现和操作以及面向对象编程
这里提出Python类是为了实现抽象数据类型(abstract data type)。抽象数据类型的基本思想是把数据定义为抽象的对象集合,只为其定义可用的合法操作,而不暴露内部实现的具体细节。在Python中实现ADT最常用的技术就是利用class定义。下面尝试定义一个有理数类及其相关操作:注意图中的几个标注:标注①,在建立有理数时常需要进行约分,得到最简有理数,从而可以节约储存空间。经过分析可知这个求分子分母最大公约数的函数不依赖任何有理数类的对象,另一方面这个函数是为有理数类的实现需要的辅助功原创 2020-08-29 11:31:38 · 309 阅读 · 0 评论 -
机器学习实战(8):回归树
上一章提到的线性回归应该是使用最广泛的一种方法,但是这个方法时常会出现一些问题:比如我们需要对线性回归模型的随机干扰项施加一些假设,但现实中这些假设常常不能满足,此外当数据拥有众多特征且特征之间关系比较复杂时,用线性回归难以构建一个全局模型,最重要的,现实中满足线性关系的特征只占一小部分,大部分情况下特征之间满足的是非线性关系。这时一种可行的方法就是将数据集切分成多份容易建模的数据,在切分的子集上建立回归模型,这里要用的结构就是回归树。之前在决策树一章我们使用了ID3ID3ID3算法构建决策树,这种算原创 2020-08-26 18:00:23 · 234 阅读 · 0 评论 -
机器学习实战(7):线性回归
一、普通线性回归用最小二乘法求线性回归的系数估计已经是老生常谈了,这里直接看看怎么使用Numpy库中的矩阵方法来实现:二、局部加权线性回归使用普通最小二乘法可能会导致欠拟合,即模型过于照顾方差较大的点,而忽略了对方差较小点的拟合效果,这里可以使用局部加权线性回归:w^=(X′WX)−1X′Wy\hat{w} = (X'WX)^{-1}X'Wyw^=(X′WX)−1X′Wy其中WWW是对角矩阵。局部加权线性回归使用核,使得在估计自变量某个取值对因变量影响时,该自变量取值附近的数据的权重更高。常用的核为原创 2020-08-25 18:43:44 · 543 阅读 · 0 评论 -
机器学习实战(6):AdaBoost提升方法
在概率近似正确学习框架中,强可学习(指存在一个多项式学习算法能够学习一个概念且正确率很高)和弱可学习(指存在一个多项式学习算法能够学习一个概念且正确率仅比随机猜测略好)是等价的。因此AdaBoost提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合这些弱分类器,得到一个强分类器。接下来我们分别讨论不同分类器的集成方法、boosting方法以及具有代表性的adaboost提升方法。1.基于数据集多重抽样的分类器1.1 baggingbagging方法,也称为bootstrap ag原创 2020-08-20 22:07:14 · 257 阅读 · 0 评论 -
pandas创建虚拟变量的一个例子
对于一条观测属于多个类别的情况,考虑如何创建虚拟变量矩阵。原创 2020-08-19 12:38:53 · 1137 阅读 · 0 评论 -
机器学习实战(5):支持向量机
用于求解SVM对偶问题的常用算法为SMO算法。SMO算法是一种启发式算法,每次选择两个变量,固定其他变量,由这两个变量构建二次规划问题。选择变量的方式是首先选择违反KKT条件最严重的变量,然后选择能够使得第二个变量变化最大的变量。1.简化版SMO算法处理小规模数据集对于变量集αi,i=1,2,⋯ ,N\alpha_i,i = 1,2,\cdots,Nαi,i=1,2,⋯,N,总有约束∑iαiyi=0\sum_i \alp原创 2020-08-16 23:23:59 · 134 阅读 · 0 评论 -
机器学习实战(4):Logistic回归
首先加载数据:接下来写一下logistic模型的梯度上升算法:假设P(yi=1∣xi)=π(xi)P(y_i = 1|x_i) = \pi(x_i)P(yi=1∣xi)=π(xi),那么对于样本观测值集合,其极大似然函数为L(w)=∏i=1m[π(xi)]yi[1−π(xi)]1−yiL(w) = \prod_{i=1}^m[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}L(w)=i=1∏m[π(xi)]yi[1−π(xi)]1−yi,我们的目标就是选择合适的参原创 2020-08-14 23:34:13 · 322 阅读 · 0 评论 -
机器学习实战(3):朴素贝叶斯
朴素贝叶斯的主要思想是对给定的训练数据集,基于特征条件独立假设学习输入输出的联合概率分布,然后对给定的输入xxx,利用贝叶斯定理求出后验概率最大的输出yyy。后验概率P(Y=ck∣X=x)=P(X=x∣Y=ck)P(Y=ck)∑kP(X=x∣Y=ck)P(Y=ck)P(Y = c_k|X = x) =\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_k P(X=x|Y=c_k)P(Y=c_k)}P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)原创 2020-08-07 09:19:00 · 196 阅读 · 0 评论 -
机器学习实战(2):决策树
一般决策树学习算法包含特征选择、决策树生成、剪枝三个部分。在特征选择上,使用信息增益的学习算法称为ID3算法,使用信息增益比的学习算法称为C4.5算法。一、特征选择熵的公式:H=−∑pilog2piH = -\sum p_i \mathrm{log}_2 p_iH=−∑pilog2pi代码实现如下:信息增益衡量已知某一变量后,数据集的熵的变化程度g(D,A)=H(D)−H(D∣A) g(D,A) = H(D) - H(D|A)g(D,A)=H(D)−H(D∣A)计算条件熵的方法:训练数据原创 2020-08-05 22:54:05 · 179 阅读 · 0 评论 -
机器学习实战(1):K邻近算法
根据《机器学习实战》一书来实现KNN算法:一、确定K邻近算法不过这个方法没有用kd树进行存储,搜索效率较低。二、例1:使用KNN算法改进配对效果2.1 准备数据先来看看原始数据:这是一个文本文件,每一行都是字符串,需要对其进行分割,然后分别构造数据矩阵和标注向量。2.2 数据预处理由于我们得到的数据都是正数,所以可以采用归一化进行标准化:x∗=x−minmax−min x^* = \frac{x - \min}{\max - \min}x∗=max−minx−min2.3原创 2020-08-04 22:44:10 · 178 阅读 · 0 评论 -
LeetCode数据结构刷题笔记
希望每天都能有进步。原创 2020-07-24 21:42:34 · 694 阅读 · 0 评论 -
Python常用数据分析操作
目录Numpy基础1.多维数组对象:ndarray1.1 生成多维数组对象1.2 ndarry的数据类型1.3 Numpy数组计算1.4 数组索引与切片Numpy基础1.多维数组对象:ndarray1.1 生成多维数组对象array函数该函数的参数为任意的序列型对象,比如Python内建的列表对象import numpy as np ls1 = range(1,10,1)array1 = np.array(ls1)ls2 = [[1,2,3,4],[5,6,7,8]]array2原创 2020-07-02 22:48:00 · 533 阅读 · 0 评论 -
数据结构与算法python版【慕课听课笔记】
菜鸟的个人学习笔记,希望能一直进步原创 2020-06-21 21:09:59 · 921 阅读 · 0 评论