自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 用栈轻松解决基本计算器

实现计算器是很经典的题目,包括之前在数据结构课上也遇到过。这次又在leetcode上刷到了基础计算器的一系列题,做个总结。首先先看看最简单的一种情况:字符串中只有加减号,还有非负整数举个栗子,“1+14-5”定义三个变量,分别为num(保存当前的操作数),op(保存数字前的运算符号),用res记录累加结果。具体操作步骤如下:遍历字符串的每个元素。如果指针指向数字,则更新num值。...

2020-03-15 09:27:32 304

原创 为什么l1, l2正则能降低过拟合?(贝叶斯先验概率角度)

在开始正题之前,我们先来谈谈什么是正则化和过拟合(已经有了解的同学可以直接跳到第三节)1. l1, l2正则化简单来说,l1-范数, l2-范数正则化就是在原有的Loss Function的基础上,加上一些正则化项(也可以叫惩罚项?)回归问题原有的Loss Function:加了l1正则后(也被称为lasso回归):加了l2正则后(也被称为岭回归):其中,w的p-范数为:2. 过拟合从左到右分别是 欠拟合,正常拟合,过拟合(图片来自吴恩达机器学习课程)所谓过拟合,指在机器学习模型

2020-07-28 22:21:07 669

原创 我是怎么用编程思想来数数的?

作为一名理工科院校的学生,我对我校的男女比例是有充分自信的。但今早官微的一篇推送把我吓到了…内容大致是建校71周年,有30多位同学分别代表所在的省份给学校送上祝福,附照片的那种。于是我就发现了:怎么有那么多小姐姐!这严重不符合我校基本校情啊!而更奇妙的是,在看小姐姐计算男女比的过程中,我发现原来算法的思想也能用来数数~你可能会疑惑了,计算男女比不就是先数有多少个女生,再数一共有多少人就可...

2020-04-15 16:46:17 253

原创 一文带你了解二叉搜索树(面试向)

二叉搜索树作为一种特殊二叉树结构,在面试中出现的频次不可谓不高。本文通过对leetcode上的8道二叉搜索树题进行整理,让你对二叉搜索树的掌握更进一步~首先,什么是二叉搜索树?从严谨的数学定义上说,二叉搜索树是这样的:二叉搜索树要么是空树,要么是具有下列性质的二叉树:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。...

2020-04-14 17:02:31 338

原创 剑指offer复习系列:树题目一网打尽!(一)

首先上几道甜品,给大家伙开开胃:1.BFS(广度优先搜索)这道题的思路很简单:初始化队列 queue=[root], 列表res=[]while 队列非空:移除队列中第一个结点,并将其值加入到res中将其左右子结点(如有)加入到队列中返回res这里主要有两个疑惑:为什么要移除第一个结点?A:第一,因为这是我们正在操作的结点;第二,这里的“移除第一个”和“子结点加入队列尾...

2020-04-09 16:34:09 133

原创 剑指offer面试题22、23、25:关于链表的一些题目

链表和树是比较重要的数据结构(也是我掌握得很差的)在剑指offer上刷了几道题,在这里做个总结:.链表中倒数第k个节点这是leetcode上的一道简单题。第一时间的想法:用一个while循环,计算出链表长度n再用一个while循环,对头节点进行n-k次next操作,即可求解但是看过题解之后,发现了一种更简洁的方法,该方法可以不用计算出链表长度,求解如下:定义两个结点for...

2020-03-20 21:58:54 134

原创 pandas:重命名index、columns,分箱

上文说到了怎么对DataFrame中的值进行转换,那么如果想对索引进行转换,应该怎么做呢?重命名轴索引第一种方法:暴力地重定义直接对index,columns属性进行重赋值即可:import numpy as npimport pandas as pda = pd.DataFrame(np.arange(12).reshape((3, 4)), in...

2020-03-19 10:21:38 3281

原创 pandas数据清洗:删除重复值、利用映射进行逐元素转换、值的替代

之前那篇博客讲了讲怎么处理缺失值,这一篇记录一下怎么对数据进行过滤和清洗。删除重复值删除重复行一般有三种方法:duplicated方法:返回一个布尔值Series。如果该行是重复行(与之前出现的行相同),则在Series中对应的值为True,反之为Falsedrop_duplicates方法:返回duplicated方法中返回数组中为False的部分(即打印原对象中去掉重复行后的部分)。...

2020-03-18 10:44:47 435

原创 剑指offer:面试题NO.3-NO.6

听说剑指offer很有名,凑巧leetcode上又有可以白嫖的,就顺便刷一刷。不过leetcode上的剑指offer都是简单题,不知道原书上面是不是都是这个难度?还是等到真正找工作的时候再去买一本叭。废话不多说,下面对第三到第六题做个总结:第三题:数组中重复的数字这道题目讲真并不难,可能刚学编程一两天的人都会有思路。这里大概有两种思路:1、 用字典(哈希),遍历每个元素,如果没有出现...

2020-03-15 18:57:55 153

原创 pandas初探:DataFrame生成,索引与修改

DataFrame在形式上可以看作是Series的升级版,它可以有多个列,并且每一列都有列标签。呐,DataFrame是长这个样子的:构建DataFrame一般有两种方式构建DataFrame1.利用包含等长度列表或者数组import pandas as pddata = {'state': ['Beijing', 'Beijing', 'Beijing', 'Shanghai', ...

2020-03-13 10:57:48 1356

原创 动态规划解决问题:编辑距离与解码方法

动态规划是解决很多算法的不二法宝。它的思想可以概括为:根据上一个状态的值,来判断现在状态的值。因此,在这类题目中,重点是在找出上一个状态和现在状态的联系。具体的理论就不扯了,还是直接上题目叭编辑距离这道题目是leetcode上的一道困难题。乍一看题目可能会感觉无从下手,因为word1和word2从直观上来看很难看出联系。那么,我们尝试利用动态规划,找出状态之间的联系我们令D[i]...

2020-03-12 21:59:55 1490

原创 pandas初探:Series生成与索引

SeriesSeries是一种一维的数组型对象,它包括一个值序列,和它们的索引。直观的来说,它更像一个字典。因为它的形式为索引:值生成Series一般有两种方法,通过列表和通过字典1.列表生成Seriesimport pandas as pdfrom pandas import Series, DataFrameobj = pd.Series([1, 2, 4])print(ob...

2020-03-12 12:04:21 1051

原创 python矩阵操作:dot、inv、det、eig

矩阵点乘在numpy中,*号用来对矩阵进行逐元素乘积。我们熟悉的矩阵点乘,用dot函数。举个栗子:import numpy as npx = np.array([[1, 2], [2, 3]]) # 2*2矩阵y = np.array([[4, 5], [6, 7]]) # 2*2矩阵print(x * y) ...

2020-03-11 10:34:07 13813 2

原创 numpy: where函数、集合操作

where函数where函数是三元表达式 x if condition else y的向量版本。通过where函数,可以批量地或者单个地对数组中元素进行替换举个栗子,有两个数值数组x, y。另外有一个布尔型数组cond。我们想要建立一个新数组,当cond中元素为True时,取x中的对应元素的值,反之取y中对应的元素。我们可以这样做:import numpy as npx = np.a...

2020-03-10 10:24:24 350

原创 numpy: meshgrid方法

meshgrid方法用于对两个一维数组生成一个数值对(x, y)例如,对于数组[1, 2]和[3, 4],可以生成4个数值对,分别为:[1, 3], [2, 3], [1, 4], [2, 4]meshgrid方法返回两个二维矩阵,分别存储所有键值对中的x值和y值:import numpy as npa = [1, 2]b = [3, 4]c, d = np.meshgrid(a, ...

2020-03-10 09:44:29 254

原创 numpy之神奇索引

神奇索引是numpy中的术语,可以用来使用整数数组进行数据索引它可以让你找到数组中任意位置的元素,并把它们按一定顺序输出比如说,输出一个二维数组的第4,3,0,6行,并依次排列:import numpy as npx = np.arange(36).reshape(9, 4)# [[ 0 1 2 3]# [ 4 5 6 7]# [ 8 9 10 11]# [12...

2020-03-09 11:24:34 970

原创 Sunday算法:查找字符串

Sunday算法是用于查找子串的一种算法,具体的应用场景看这里相比于KMP,BM算法,Sunday算法更快,并且更好理解(自认为哈下面用比较正式的语言介绍一下该算法:原字符串为文本串,匹配的子串为模式串。从前往后匹配,在匹配失败时,关注的是文本串中参加匹配的最末位字符的下一位字符。—如果该字符没有在模式串中出现则直接跳过,即移动位数 = 匹配串长度 + 1;—否则,其移动位数 = 模...

2020-03-05 19:01:30 256

原创 numpy:生成ndarray,数据类型,数组算术,切片

生成ndarray生成ndarray数组通常采用有三种方法:使用array函数使用zeros, ones来生成全0、全1数组使用arange函数接下来分别介绍:1. array函数array函数接受任意的序列型对象,生成一个新的包含传递数据的numpy数组。另外,嵌套序列会自动转换成多维数组。shape属性表征数组每一维度的数量dtype属性描述数组的数据类型import...

2020-03-05 10:48:59 512

原创 python序列函数:enumerate,zip,reversed

enumerate:追踪索引在遍历一个序列的时候,我们往往想追踪该元素在序列中的索引。使用enumerate可以做到这点。该方法一般用来构建一个字典a = ['a', 'b', 'c', 'd', 'e', 'a', 'b']mapping = {}for index, value in enumerate(a): mapping[value] = indexprint(map...

2020-03-03 12:28:36 484

原创 python学习笔记:列表操作

与元组不同,列表的长度是可变的,它包含的内容也是可以修改的。定义列表定义列表一般有两种方式:使用中括号a = [1, 2, 3]print(a) # [1, 2, 3]使用list类型函数list函数可以将元组,字符串等类型转换为list。a = (1, 2, 3)b = "123"print(list(a), list(b)) # [1, 2, 3] ['1'...

2020-03-03 10:52:54 128

原创 python学习笔记:元组,乘拷贝,高级拆包

元组元组是一种固定长度、不可变的python对象序列。创建元组最简单的办法就是用逗号分隔序列值a = 1, 2, 3, 5print(a) # (1, 2, 3, 5)元组一旦创建,各个位置上的对象是无法被修改的但是,如果元组中的一个对象是可变的,则可以修改这个可变变量tup = tuple(['foo', [1, 2], True]) # 显式转换类...

2020-03-01 10:56:22 181

原创 python学习笔记:强类型,判断类型

强类型观察下列代码:print('5' + 5)猜猜看,会输出什么?事实上它会报错,这是为什么呢?TypeError: unsupported operand type(s) for +: 'int' and 'str'在某些语言,例如VB中,字符串‘5’可能会隐式地转换为整数,然后得到10.而在另一些语言中,例如JS,数字5可能会转换成字符串,生成一个结合字符串‘55’。在这里...

2020-03-01 09:48:43 292

原创 python学习笔记:浅/深拷贝,切片,函数传参

前文讲了一点python的对象机制,其实是为了本文服务的。浅/深拷贝为变量赋值(其实是为对象建立引用)一般有三种方式:直接赋值,浅拷贝和深拷贝直接赋值就是常见的"a=b"之类,将a作为b指向的对象的一个新的引用。下面主要介绍浅拷贝和深拷贝以及两者之间的区别:浅拷贝在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的。但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是...

2020-02-29 23:42:18 339

原创 python学习笔记:对象,可/不可变对象, +=和=+

对象先来看一个例子,解释一下python的对象机制a = 1print(id(a))a = 2print(id(a))不了解对象的同学可能会觉得,“a=1"的意思是将1赋值给变量a但是不然,该语句的意思其实是:将变量a指向一个对象,该对象的值为1。也就是说,a只是充当对象的一个引用。再看语句"a=2”,同样地,该语句的意思是:将变量a指向另一个对象,该对象的值为2。并不是把2赋...

2020-02-29 11:59:36 231

原创 FP-growth:从FP树中挖掘频繁项集

https://editor.csdn.net/md/?articleId=104320588

2020-02-18 11:39:29 3666

原创 关于PCA的笔记(为什么要用协方差和特征向量?)

好不容易把PCA稍稍弄懂了,记一点笔记以防日后遗忘~主要记录对矩阵乘法到底是什么,还有PCA中为什么要用方差为什么要用协方差还有为什么要用特征向量的理解。因为是写给自己看的所以难免有疏漏和错误,另外参考资料1是我见过最好的PCA文章~什么是降维想象这样一个场景:有一台电视在播放足球比赛,显示器包含了100万个像素,而球只占1000个像素。在一场比赛中,观众当然会更关注比赛的情况——也就是球...

2020-02-17 22:59:47 1498 2

原创 FP-growth:FP树的构建

前言FP-growth是一个非常好的频繁项集发现算法,广泛应用于搜索引擎中(找出经常在一起出现的词对)相对于Apriori算法,FP-growth算法只用对数据库进行两次扫描,因此更适用于处理大数据。关于FP-growth的理解,请参照这个网址:https://www.cnblogs.com/pinard/p/6307064.html我自认是没有这个能力写的这么好的哈哈。本文以代码为主。F...

2020-02-15 17:55:13 10017

原创 数据预处理:处理缺失值

前言本文参照《利用Python进行数据分析》一书,介绍了对Series和DataFrame对象进行缺失值处理的一些方法缺失值处理1. isnull方法isnull方法用于判断哪些值为缺失值(NaN),并返回布尔值举例如下:import pandas as pdfrom numpy import nan as NAdata = pd.DataFrame([[1., 6.5, 3.],...

2020-02-13 18:48:39 965

原创 决策树的理解及实现(小白版附代码)

前言本文的代码部分均采用伪代码+代码的形式,帮助有些想挑战自己的小白同学可以自己通过伪代码敲出代码!简介决策树(Decision Tree)是一种十分常用的分类方法。作为一种有监督学习,它对特征属性和样本标签之间的映射关系进行建模。相对于K-近邻算法,决策树的主要优势在于数据形式非常容易理解。而决策树之所以称为树,是因为其处理数据的过程可以用树来表示。理论总是那么难以理解,那我们直接上例子吧...

2020-02-07 21:05:57 1312 1

Alien_Invasion.7z

本游戏基本上参(zhao)考(ban)了《Python编程从入门到实践》12到13章的内容,另外再加上一点点自己的想法 大多数的射击类游戏都默认发出的子弹对自己无效,但这里我实现了一个功能:射出的子弹在碰撞到外星人和自身之前,会一直在空间内反弹(记得躲避子弹!) wasd控制移动,空格键发射子弹。看看你能坚持到第几轮! 点一下Alien_Invasion.exe就运行啦,Alien_Invasion_code里面有源码~ 只是一个小小白的小小白作品(大部分还是照搬的嘿嘿),只为搏君一笑~

2020-02-09

空空如也

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

TA关注的人

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