自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 task01 图相关基础和算法举例分享

学习内容中的介绍已经非常精简,不再做重复的总结。今天主要写一下自己在工作中积累的对图相关理解和经典算法的介绍。

2024-04-15 13:17:59 904

原创 异常检测第三篇:MNIST数据集分类(pytorch实现)

大家好!我是菜菜卷。之前两篇我们用传统的机器学习方法实现了无监督和半监督的异常检测,今天我们开始进行异常检测的深度学习实战(监督学习)。在有标签的情况下,其实异常检测就变成了一个简单的分类任务,所有数据都可以被划分为正常类和异常类中的一种,因此我们今天使用MNIST数据集和pytorch框架来实现一个简单的图像分类算法。所用数据集今天我们使用的数据集是非常经典的图像分类入门数据集MNIST,MNIST是一个手写数字数据集,每张图像都是32*32分辨率的灰度图组成的,训练集有5w张图像,测试集有1w张

2021-12-05 17:25:53 2735 3

原创 异常检测第二篇:一分类SVM(OneClassSVM)

大家好,我是菜菜卷。在上篇中,我们简要介绍了使用孤立森林(isolate forest)来进行无监督异常检测,在今天的内容中,我们将使用ocsvm(One Class SVM)来进行半监督异常检测,我们一起开始吧!~关于数据集的介绍和数据读入方向可以参考第一篇的详细介绍:异常检测之孤立森林(isolate forest)什么是SVM(支持向量机)熟悉机器学习的同学肯定对svm已经了如指掌了,下面我们就简要的说一下,SVM的目的就是使用一条“线”将两类或者多类的数据分隔开来,使其每一侧的数据都是同一类

2021-12-04 19:47:05 9530 13

原创 异常检测之孤立森林(isolate forest)

大家好,我是菜菜卷!今天开始陆续和大家分享一些关于异常检测入门相关的实战项目(包括使用sklearn实现一些简单的机器学习模型或者使用pytorch实现简单的深度学习模型)今天我们使用的模型是集成于sklearn内部实现的孤立森林算法。什么是孤立森林(isolate forest)?孤立森林是一种传统的异常检测机器学习算法,他属于无监督学习的boost 树模型,对于每棵子树来说,针对数据集的不同特征值,会随机挑选特征值取值范围内的一个随机值,然后将所有数据按照该特征的这个随机值划分为两部分(根据该特征

2021-12-01 20:08:18 8479 13

原创 零基础到秋招上岸互联网大厂算法岗经验

大家好,我是菜菜卷。关于是想从事算法岗还是其他岗位,我不做劝退也不做劝进,大家可以根据我另一篇帖子:跨专业秋招上岸大厂cv算法岗学长浅谈岗位选择决定以后想做的方向,本文仅分享一下关于上岸算法岗的经验。我本科毕业于生物医学工程专业,没有学过任何的计算机相关课程和语言,第一次接触计算机是在2018年考研的时候学习了计算机统考的408(计算机网络,操作系统,数据机构,计算机组成原理)这四门科目,然后复试的时候学习了c++。秋招拿了若干互联网公司的算法岗offer,最后决定入职字节跳动的ssp+。下面我将以时

2021-11-24 16:16:13 2403 8

原创 二叉树前序、中序、后序的非递归(迭代)的统一化模板实现(python)

二叉树的前中后序遍历是面试过程中的高频考点,但是除了最简单的递归写法以外,面试官一般还会额外要求掌握其非递归写法(即迭代法)。递归实现三种遍历的递归实现非常相似,只需要掌握一个模板即可,只需要改变递归左子结点,根节点和右子结点的顺序即可完成三种树的递归遍历,其后序遍历的python代码如下所示:class Solution: def postorderTraversal(self, root: TreeNode) -> List[int]: def postorder(r

2021-11-24 14:25:14 969 1

原创 跨专业秋招上岸大厂cv算法岗学长浅谈岗位选择

跨专业985硕秋招上岸大厂cv算法岗经验分享自身简要情况介绍岗位认知和选择开发算法的优劣对比算法岗的通常要求明确的学习路线leetcode大家好,我是菜菜卷!自身简要情况介绍本科就读于某不知名211生物医学工程专业,2019年上岸东南大学计算机专业。本科期间没有接触过任何计算机相关的任何知识(包括最基本的c++、java等语言也没有接触过),考研的时候可以说是首次接触计算机相关科目。研一结束的暑期入职百度算法岗实习,研二下3月初拿到字节、滴滴等5家互联网大厂cv算法岗位的实习,秋招拿到阿里字节等多家大

2021-10-19 16:53:36 2181 13

原创 天坑专业985硕士退学&跨考上岸985计算机硕经验分享&避坑指南

天坑专业985硕士退学&跨考上岸985计算机硕经验分享关于考研的经验关于为什么退学?关于跨考计算机的经验如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入大家好!我是菜菜卷。我本科就读于一个不知名211的生物医学工程专业,2017年本科毕业后考研到生物医学工程专业

2021-10-17 15:12:30 3184 6

原创 task16+17,leetcode:237,238,292,344,557-python

237.删除链表中的节点很容易陷入的误区是考虑直接修改指针,但是由于不知道要删除结点的前一个结点,所以不能完成单纯的指针操作。因此我们可以考虑直接交换节点的val,也能达到相同的效果。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def del

2021-01-21 12:35:10 131

原创 task15,leetcode:231,235,236-python

231.2的幂解法一:最朴素的方法,依次除二判断。如果一个数是2的幂,那么不断除2肯定会得到1。反正亦然,如果不能通过反复除二得到1,那么一定不是2的幂。class Solution: def isPowerOfTwo(self, n: int) -> bool: while n : if n < 1: # 剪枝 return False if n == 1:

2021-01-21 11:00:18 119 2

原创 task14,leetcode:215,217,230-python

本task中215和230题非常好,值得n刷。215.数组中的第K个最大元素通过此题深入了解大根堆(小根堆)的实现原理和调整原理。class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: def adjust_heap(root, max_len): # root表示根节点对应的list中的坐标 # 因为是大根堆,所以root处对应的应

2021-01-20 20:31:37 120

原创 task13,leetcode:160,169,206-python

160.相交链表此题必须分享的一个双指针图解算法,已经熟悉的也可以去看一下动画哦,超级有爱!!!!双指针法,浪漫相遇# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def getIntersectionNode(self, headA: List

2021-01-20 19:46:29 117

原创 task12,leetcode:146,148,155-python

146.URL缓存机制设计模式题,较为麻烦,但是理解后会更加深入理解规范的python类是如何实现的。难点可能是在addToHead()函数上,具体的理解根据代码参考以下图解。注意,因为在形成②和③的时候要用到旧的node,因此⑤这个链不能在②和③之前断掉,而形成④的时候会使其断掉,因此④要保证在②和③之后,其他顺序随意。# 定义的一个双向链表类class DLinkedNode: def __init__(self, key=0, value=0): self.key =

2021-01-20 19:39:49 150

原创 task11,leetcode:136,141,142-python

136.只出现一次的数字入门必做题之一;解法二为最优解。(解法一虽然不符合常数空间的要求,但是作为最容易想到的解法,这里也给出来了)解法一:哈希表使用哈希表存储数字出现的次数,然后遍历哈希表返回只出现一次的数字。以下两个代码完全相同,不过第二个使用了python内置的一个高级dict()类来简化代码。代码一:class Solution: def singleNumber(self, nums: List[int]) -> int: Hash = dict()

2021-01-18 20:10:16 116 1

原创 task10,leetcode:121,122,124-python

121.买卖股票的最佳时机入门必做题目之一,一次遍历即可。class Solution: def maxProfit(self, prices: List[int]) -> int: buy = float('inf') # 标记买入的价格 profit = 0 # 记录最大的利润 for price in prices: if price <=

2021-01-17 21:46:26 102

原创 task09,leetcode:88,89,104-python

88.合并两个有序数组本题解法颇多,最优解为解法三。解法一:将nums2加入到nums1尾部,然后排序。class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ nums1

2021-01-16 21:02:51 243

原创 task08,leetcode:62,70,78-python

62.不同路径比较简单的一道dp题目。class Solution: def uniquePaths(self, m: int, n: int) -> int: dp = [[1] * n for _ in range(m)] # 初始化一个m*n的数组 # 条件转移方程就是左方和上方的路径种类之和 # 第一行和第一列都是一种,所以从第二行和第二列开始遍历就可以 for r in range(1, m):

2021-01-16 19:57:38 93

原创 task07,leetcode:54,55,-python

54.螺旋矩阵不知道为什么这种题会上腾讯top50…个人感觉没有什么意义,模拟处理边界就可以了。class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if not matrix: return [] row, col = len(matrix), len(matrix[0]) left, right = 0, col -

2021-01-15 19:06:37 163

原创 task06,leetcode:43,46,53-python

总述:今天题目可能有点难度。43.字符串相乘模拟手算乘法,分两个阶段分别模拟逐位的乘法(无进位)和进位处理。具体如下:class Solution: def multiply(self, num1: str, num2: str) -> str: if num1 == '0' or num2 == '0': # 特殊情况判断一下 return '0' m, n = len(num1),

2021-01-15 17:06:28 132 1

原创 task05,leetcode:23,26,33-python

23.合并k个升序链表

2021-01-13 20:50:30 108

原创 task04,leetcode:16,20,21

16.最接近的三数之和与三数之和非常相似的题目,均为双指针。代码中给出了部分剪枝操作,可以稍作了解,思考一下剪掉的是什么。class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: nums.sort() # 排序的意义是方便后面双指针可以使用 n = len(nums) best = float('inf')

2021-01-12 23:23:22 113

原创 task03,leetcode:11,14,15

11.盛水最多的容器双指针经典题目,面试超级高频的题目,类似的高频双指针还有42.接雨水.本题引起思考的点:为什么要移动两个指针中对应高度较低的指针?答:因为最大盛水量由两者中较低的指针决定,如果移动较高的指针,min(h1,h2)是不变的,但是宽度越来越小,所以盛水量肯定会变少。因为宽度肯定是减少的(指针从两侧向中间相对移动),所以只有当min(h1,h2)变大时,盛水量才有可能增加。class Solution: def maxArea(self, height: List[int])

2021-01-12 20:08:23 133

原创 task02:leetcode.7,8,9

7.整数反转入门必做题之一:注意题目给的范围就可以class Solution: def reverse(self, x: int) -> int: digit = 1 if x < 0: x = -x digit = -1 ans = 0 while x: ans = ans * 10 + x % 10 x //= 10

2021-01-11 21:27:22 193 1

原创 task01,lc:2,4,5

2.两数相加思路:比较简单的一般题,与字符串相同的模拟加法即可。具体代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def addTwoNumbers(self, l1: ListNode, l2:

2021-01-10 16:37:18 814 8

原创 二手车交易价格预测:Task4 建模调参

1

2020-04-01 21:26:38 549

原创 二手车交易价格预测:Task3 特征工程

task2中我们已经学了如何导入数据,如何查看其基本的信息(包括数据集的形状,对预测无影响的特征等),在task3中我们将进一步探寻数据的特征,并对其做出相应的处理。一、导入数据其中导入数据在task2中已经详细介绍过了,因此不再赘述,直接用以下代码即可导入。import warningswarnings.filterwarnings('ignore')import pandas as ...

2020-03-28 21:21:34 360

原创 二手车交易价格预测-Task2 数据分析

本阶段我们主要是通过EDA等方式来了解数据,探索数据的特征。关于资料有挺多疑问的地方,均在文中用删除线加以注释,并总结放在了最后一、载入各种库和数据使用库pandas来便捷的载入数据,其中path标识了我们训练集和测试集所在的路径,为了之后的读取更为便捷。# 导入warnings包,利用过滤器来实现忽略警告语句。import warningswarnings.filterwarning...

2020-03-24 21:57:04 1329

原创 Leetcode 287:寻找重复数 最优解思路详解

一、理论原理:我们可以这样理解原数组:数组中元素的下标看做索引i,其元素值看做该索引指向的具体值,因此我们可以将原数组看成一组组的指向关系。由于该数组中元素大小在1-n范围内,且有唯一的重复元素,因此必定有两个索引指向相同的元素(即重复元素为不同分支的汇合点)。首先,我们可以很容易地证明问题的约束意味着必须存在一个循环。因为 nums 中的每个数字都在 1 和 n 之间,所以它必须指向存在的...

2020-03-22 10:16:37 392

原创 leetcode 数组:第五页 简单题 + 一般题

747.至少是其他数字两倍的最大数一次遍历,记录好最大值和次大值以及最大值的下标即可。class Solution: def dominantIndex(self, nums: List[int]) -> int: max1,max2 = float('-inf'), float('-inf') index = -1 for i i...

2020-03-14 21:17:25 276

原创 LeetCode 78题:子集 回溯法

回溯法本质是尝试所有的可能性,并把符合条件的可能记录下来,不符合的情况及时退出的一种方法。下面我们通过两个具体的题目来深刻理解回溯法的思想。第一题:子集题目分析:数组长度为n的数组的所有子集,其长度从0(空数组)到n(原数组)不等,因此我们可以使用回溯法来探寻不同长度子数组的所有可能性。由于回溯法刚开始的时候理解起来有难度,所以我们首先来结合代码进行逐步分析。为了更细致的总结其调用过程,...

2020-03-11 15:55:12 119

原创 leetcode 数组:简单题 第四页

53.最大子序和(着重看的简单题)思路:贪心(重要思想)cur_sum存储局部的最大子序列和,ans存储全局中的最大子序列和。class Solution: def maxSubArray(self, nums: List[int]) -> int: ans = float('-inf') cur_sum = float('-inf') ...

2020-03-06 19:51:04 229

原创 leetcode 数组:简单题 第三页

122.买卖股票的最佳时机2每当遇到一个价格的时候做出不同的判断即可class Solution: def maxProfit(self, prices: List[int]) -> int: have_stock = 0 total_profit = 0 this_cur_profit = 0 for price ...

2020-03-02 17:12:47 190

原创 leetcode 数组:简单题 第二页

999.车的可用捕获量非常不好的题目,代码长思路简单,傻瓜式解法,高赞题解也都是傻瓜式解法class Solution: def numRookCaptures(self, board: List[List[str]]) -> int: for row in range(8): for col in range(8): ...

2020-02-21 21:02:15 251

原创 leetcode 数组:简单题 第一页

1313.解压缩编码列表解法一:用栈class Solution: def decompressRLElist(self, nums: List[int]) -> List[int]: ans = [] for i in range(0,len(nums),2): repeatTimes = nums[i] ...

2020-02-17 20:04:15 190

原创 leetcode 栈:一般题

173.二叉搜索树迭代器因为题目要求的空间复杂度是O(h),所以如果存储整个二叉树的中序遍历时空间复杂度是O(N).注意:栈stack中存储的是若干子树,而不是存储的数字,因此next()时要用.val来获取值# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# ...

2020-02-12 14:49:08 222

原创 leetcode 栈-简单题

1021.删除最外层的括号class Solution: def removeOuterParentheses(self, S: str) -> str: res = '' sum = 0 for i in S: if i == '(': sum = sum + 1 ...

2020-02-04 11:06:33 121

原创 ML刻意练习第六周之K-means

2019-12-20 16:12:00 198

原创 ML刻意练习第五周之树回归

为什么引入树回归:线性回归包含了一些强大的方法,但这些方法创建的模型需要拟合所有的样本点(局部加权线性回归除外)。当数据拥有众多特征并且特征之间关系十分复杂时,构建全局模型的想法就显得太难了,也略显笨拙。而且,实际生活中很多问题都是非线性的,不可能使用全局线性模型来拟合任何数据。一种可行的方法是将数据集切分成很多份易建模的数据,然后利用线性回归技术来建模。如果首次切分后仍然难以拟合线性模型就继...

2019-12-18 15:17:11 134

原创 ML刻意练习第五周之回归问题

回归的一般方法如下所示:一、线性回归找最佳拟合直线1.导入数据:def loadDataSet(fileName): fr = open(fileName) numFeat = len(fr.readline().split('\t')) - 1 # 特征值数量 dataMat = [] labelMat = [] for line in f...

2019-12-16 10:18:35 186 1

原创 ML刻意练习第四周之AdaBoost元算法

前面一共介绍了五种分类算法:KNN,决策树,朴素贝叶斯,逻辑斯蒂回归和SVM,它们各有优缺点。我们自然可以将不同的分类器组合起来,而这种组合结果被称为集成方法或者元算法。今天主要练习的内容是一个被称为AdaBoost的最流行的元算法。其优缺点如下图所示:...

2019-12-07 15:54:18 193

空空如也

空空如也

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

TA关注的人

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