自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 问答 (1)
  • 收藏
  • 关注

原创 对时序数据进行分类与聚类

我在最近的工作中遇到了一个问题,问题是我需要根据银行账户在一定时间内的使用信息对该账户在未来的一段时间是否会被销户进行预测。这是一个双元值的分类问题,只有两种可能,即会被销户和不会被销户。针对这个问题一般来说有两种解决策略。下面我会使用这两种算法,运行并对比结果,然后找到最合适的算法。

2023-09-07 10:13:35 2315 1

原创 金融风控数据分析-信用评分卡建模(附数据集下载地址)

本文从信用卡评分的基础概念开始,理解信用评分卡在风控中发挥的作用。第二部分使用公开的信用数据集从0到1建立了一个信用评分卡。包括数据的探索性分析,数据预处理,评分卡建模,评分卡生成以及最后的有效性验证。在建模过程中也交叉地介绍了一些理论概念,这也有助于理解每一个步骤具体含义。整体上梳理了风控中信用评分卡的建模流程。

2023-08-31 14:28:35 3479 1

原创 yolov8-制作数据集,数据集格式转换(yolo格式-voc格式)附完整代码

yolo训练时可使用的数据集格式为yolo格式以及voc格式, voc格式的数据集在训练时需要先转换为yolo格式,然后根据自己的数据集的位置更改yaml配置文件的文件路径即可。基于目前对Yolo系列训练模型的讲解已经很全面,所以本文主要讲解yolo数据集与voc数据集之间的转换。两种数据集形式的最大区别就是yolo是直接采用txt文件保存模型的labels标签,如下图,每一行都代表着该图像中的一个标签GT。而voc格式的标签是保存在Annotations目录下的xml文件当中,除此之外无差别。

2023-08-03 18:26:40 14681 12

原创 最细致讲解yolov8模型推理完整代码--(前处理,后处理)

筛选完之后得到的输出output_box格式为N * [x,y,w,h,conf(最大类别概率),class] , N是筛选后预测框的个数, 通过[x,y,w,h,conf(最大类别概率),class]这些数据我们就可以将预测框输出绘制在原图像上, 但是要注意,我们此时模型的输入是经过letterbox处理的,所以需要先将预测框的坐标转换回原坐标系的坐标,接下来就对刚刚的(8400,85)进行后处理,先进行置信度过滤,再进行NMS非极大值抑制,本文将这两步筛选操作放在了一个函数中,

2023-08-03 16:53:47 26297 48

原创 yolo系列笔记(v4-v5)

FPN是将特征层向下累加,这样对于任意特征层来说,他是看不到其下面特征层的信息的,PAN在FPN的基础上,采取了个向上加的功能,让特征层包含的信息更全面。,所以其范围是(-1.5,1.5)相当于以左上角的点作为起点的话,预测框是可以超出一个cell的距离的, 像下图3个cell都可以对黑点这个真实框做预测,相当于扩充了正样本的数量,让预测框不被cell限制的那么死。这个基本和Yolov4中的一样,但Yolov5将长和宽也进行的改动,之前的容易出现指数爆炸,造成BwBh值过大,导致训练不稳定。

2023-07-30 21:52:20 328 1

原创 self-attention笔记

一般地,对于一个向量长度为t,向量个数为的2(也就是只有a1和a2)的输入来说, 其正常情况下输出的b的shape是2X2,通过一个2Xt的参数矩阵W0,将其shape变为输入的shape:2Xt 如果此时对向量拆分,变成t/u 那么输出b的shape应该是2X(2*t/u) ,因为将原本的一份b变成了t/u份, 此时再通过(2*t/u)X t 的矩阵将其变为输入的shape:2Xt。对于每一个q,都去跟其他的k相乘,得到a11后做soft-max处理, 这时候的a11和a12都是具体的值,

2023-07-27 17:51:41 71

原创 yolo系列学习笔记(yolov1~yolov3-spp)

yolov1 与rcnn系列算法最大的不同就是Yolov1是一阶段直接输出结果, 对每一个grid都进行预测,输出7x7x30的向量, 其中7x7是特征图的方格,每一个格子都是个30维的向量,其中2x4是对两个Bbox的位置的预测(这里注意v1是直接预测Bbox相对于整个图像的值0~1),2x1是置信度(Pr*IOU,Pr表示目标是否落在grid里),20x1是类别。这有一个缺点,因为没限制tx的值,在神经网络迭代的过程中会出现一些波动导致tx的值过大,使得预测框超过了原本基于的这个grid。

2023-07-26 23:30:45 230

原创 (笔记)线性判别分析LDA

Sw可能是奇异的,(如果存在数据属性方差为0) 那么就求不了逆 也就是算不出Sw。所以,哪怕在有标签类别的数据中,LDA也不是一定比PCA好的(比如下图的情况),所以在实际情况中需要先对样本进行分析。在实际应用中,可以用计算协方差的公式来计算散度矩阵,一般的仿真平台都会封装好计算协方差的函数,对于一个协方差公式。当样本均值相等时,LDA会失效,因为对于如果两样本均值相等,那么分子一定为0,在这个情况下怎么投影都没有用。PCA适用于无标签的数据中,LDA适用于有标签。来说,其散度矩阵的表达式就为。

2023-07-21 19:21:06 113

原创 (笔记)深度理解-主成分分析PCA

其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。根据特征选择的原理,我们认为方差越大对应的信息越丰富,换句话说,我们需要找到一个合适的特征使得映射在这个特征上的数据信息损失尽可能的少。那么我们如何得这个方差最大的主成分方向呢,最经典的方法是特征值分解协方差矩阵,得到协方差矩阵的特征值和特征向量,选择特征值最大(即方差最大的)k个特征向量组成的矩阵。,e是任意一个特征轴的单位向量。

2023-07-20 17:06:34 185

原创 什么时候可以用到强化学习?强化学习怎么用?

我相信很多像我一样的初学者在学习强化学习的的过程会有一种困惑:强化学习内容搞懂了,算法流程也明白了,但是怎么用在自己的研究领域或者应用上呢?换句话说,什么样的情况可以用强化学习解决呢?

2022-11-25 15:44:01 1107 2

转载 神经网络难以训练?-梯度消失问题

在一个标准神经网络中,对于不同层的训练速度是显著不同的,其原因在于反向传播中传递到每个层的增量是累乘的,如果神经元w设置在(0,1)之间,那么很有可能在经过若干层传递到最前面的层后对应的增量已经非常小,这就是所谓的梯度消失问题。另外一种情况是内层的梯度被外层大很多, 叫做exploding gradient problem。这种现象普遍存在于神经网络之中, 叫做: vanishing gradient problem。按照平时随机从正态分部(0,1)中随机产生权重的方法, 大部分|w| < 1。

2022-11-01 17:27:29 145 2

原创 强化学习中Sara算法和Q-Learning算法的区别

注:Q(s1,a1) = Q(s1, a1)+ α(Q-target - Q(s1,a1)) # α是学习率。Q-target = R + γ*在状态S2中最优的下一步Q(s2, *a)的值。4,由Q-target和原先的Q(s1,a1)去更新得到新的Q(s1,a1)3,由a1的奖励R,和Q(s2,a2)得到Q-target。2,由环境S2选出将要下一步要进行的a2。1,在环境S1中选出动作a1并得到S2。3,更新s1,a1这个状态的Q值。1,在环境S1中选出动作a1。2,得到a1这一步的动作价值。

2022-09-08 21:20:59 777 2

原创 常用Pandas读取excel(或txt)部分行列并输出

用.loc()和.iloc方法,前者是用行列名称(新版python中.loc()方法也可以用索引),后者是索引。取整个表的部分行列,需要用到.reindex(index=,columns=,).reindex()其他参数的用法详见。

2022-09-08 17:36:25 7819 1

原创 迁移学习-如何使用预训练权重,冻结部分层权重训练

迁移学习在计算机视觉领域中是一种很流行的方法,因为它可以建立精确的模型,耗时更短。利用迁移学习,不是从零开始学习,而是从之前解决各种问题时学到的模式开始。这样,我们就可以利用以前的学习成果。

2022-09-05 00:28:06 5041 3

原创 如何理解向量点积和在空间上映射的关系

摘自《Essence of linear algebra》系列视频,非常精彩。B站上有全集~Dot Product我们都知道,向量的点积是这么做的:其几何解释为投影相乘:通过投影,我们可以理解为什么点积为0(正交),为什么点积可以为负。点积还具有symmetry。假设u和v点积,对称性即:无论是v在u上作投影再乘,还是u在v上作投影再乘,结果都是一样的。这一点不太好理解,但又至关重要。我们下面来解释一下:假设u比v的范数大。我们在u的方向上取w,使得w的范数等于v的.

2022-05-09 19:35:36 927 1

原创 python刷题-二分法小总结

二分法要求:二分查找的对象必须是有序的(单调)时间复杂度:查找的时间复杂度为logN(所以适用于数据规模比较大的情况)二分查找的内部查找顺序:(直接查找目标值or和左右侧逼近值(包括目标值))"""第一种二分查找法,查找到目标值即返回,向目标值逼近的方向是不确定的,因为left和right都可以移动"""def binary_1(left, right, target): while left < right: mid = (left+right) &..

2022-03-08 17:52:48 602

原创 python刷题-单调栈

力扣https://leetcode-cn.com/problems/sum-of-subarray-ranges/暴力法:遍历每个序列的最大值最小值,时间复杂度为o(n2)class Solution: def subArrayRanges(self, nums: List[int]) -> int: dp = 0 for i in range(1, len(nums)): dpmin = nums[i]

2022-03-04 13:43:54 169

原创 python刷题-dfs回朔经典习题(全局变量,bool类型加减运算)

最多1601. 最多可达成的换楼请求数目心得:这道dfs题是对所有情况遍历然后取满足情况的解,而我当时之所以死磕这题半天没磕出来,是因为一直想去控制搜索的方向,在遍历的过程中去给遍历限制条件。这其实也就对应着解dfs题的两种思路,一种是从整体出发“全扫描”最后去筛选结果,一种则是在遍历的时候有选择性的去遍历(像下面的解数独和N皇后问题都是这种思路), 而这道题如果也用这种思路去想的话,虽然可以找到符合题意的特解,就很难去找所有情况中的最优解(因为找到特解后不好控制让他重新回朔遍历找最优解),所以找特解的

2022-03-02 12:11:10 903

原创 python刷题-单链表

题目:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。力扣class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next# 个人题解:双指针class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: ..

2022-02-26 00:57:30 624

原创 Python刷题-最长回文子串(dp)

解法一:双指针遍历(从外向内)思路:从最大子串(自身)开始遍历,逐渐缩小子串长度(右边界right向左移),对于每一个长度要注意遍历该长度下的所有子串代码:class Solution_double: def longestPalindrome(self, s: str) -> str: def judge(i, j) -> bool: while i < j: if s[i] != s[j]:...

2022-02-26 00:07:43 585

原创 python刷题-位运算,对zip(*__)的小应用

1.利用异或运算简化奇偶性判断540. 有序数组中的单一元素给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10提示:1 <= nums

2022-02-15 22:01:30 548

原创 python刷题-dfs & bfs

1.通过dfs或bfs遍历一个二维数组1020. 飞地的数量给你一个大小为m x n的二进制矩阵grid,其中0表示一个海洋单元格、1表示一个陆地单元格。一次移动是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过grid的边界。返回网格中无法在任意次数的移动中离开网格边界的陆地单元格的数量。示例 1:输入:grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]输出:3解释:有三个 1...

2022-02-15 21:47:21 581

原创 python刷题-dp(最大正方形)+最大公约数问题

目录1.最简分数(公约数问题)2.最大正方形3.最小路径和4. 杨辉三角官方题解:(学学滚动数组的用法)1.最简分数(公约数问题)1447. 最简分数给你一个整数n,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于n的最简分数。分数可以以任意顺序返回。示例 1:输入:n = 2输出:["1/2"]解释:"1/2" 是唯一一个分母小于等于 2 的最简分数。示例 2:输入:n = 3输出:["1/2...

2022-02-10 23:58:08 798

原创 python刷题-动态规划

目录一、动态规划题型1.计数问题3.求存在性二、动态规划的组成部分☆以一道题为例:小结一、动态规划题型1.计数问题-有多少种方式走到右下角-有多少种方法选出k个数使得和为sumhttps://leetcode-cn.com/problems/unique-paths/2.求最大最小值-从左上角走到右下角路径的最大数字和-最长上升子序列长度https://leetcode-cn.com/problems/maximum-product-s

2022-02-09 23:48:19 199

原创 学习笔记-动态规划(基础)+例题

目录一、动态规划题型1.计数问题3.求存在性二、动态规划的组成部分☆以一道题为例:小结一、动态规划题型1.计数问题-有多少种方式走到右下角-有多少种方法选出k个数使得和为sumhttps://leetcode-cn.com/problems/unique-paths/2.求最大最小值-从左上角走到右下角路径的最大数字和-最长上升子序列长度https://leetcode-cn.com/problems/maximum-product-s

2022-02-09 23:07:55 350 1

原创 python刷题-日常刷题

1.题目:唯一的元素和https://leetcode-cn.com/problems/sum-of-unique-elements/https://leetcode-cn.com/problems/sum-of-unique-elements/题解:(注意列表等数据结构的深拷贝问题)class Solution: def sumOfUnique(self, nums: List[int]) -> int: a = set(nums) b = a.co

2022-02-07 23:40:04 908

原创 python刷题--N数之和问题(双指针+剪枝)

1.两数之和(双指针)这题前面已经做过,当时是用哈希表做的,时间复杂度为N但如果换一种思路,用今天学的双指针来做,虽然在时间复杂度上不降反增(排序的复杂度为NlogN)但理解起来十分简单清晰。思路:即先排序,得到一个有序的列表,一个指针指向列表开头,一个指向末尾。...

2022-02-03 23:22:44 1544

原创 python刷题—日常刷题

1.题目https://leetcode-cn.com/problems/add-two-numbers/2.个人题解# 第一次完美提交,和官方答案思路一样,记录下class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nextclass Solution: def addTwoNumbers(self, l1, l2) :

2022-02-01 21:09:10 1490

原创 python刷题-寻找有序数组的中位数(二分查找)(重点)

1.题目给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3...

2022-02-01 21:04:34 432

原创 python刷题-双指针滑动窗口解决重复遍历的问题

1.题目:无重复的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注...

2022-02-01 20:11:09 163

原创 python刷题-双排序保证严格递增+for循环中增删元素对索引的影响

1.题目你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个二维整数数组 properties ,其中 properties[i] = [attacki, defensei] 表示游戏中第 i 个角色的属性。如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级,则认为该角色为 弱角色 。更正式地,如果认为角色 i 弱于 存在的另一个角色 j ,那么 attackj > attacki 且 defensej > defensei 。返回..

2022-01-28 23:36:52 100

原创 python刷题-检测正方形(哈希表法)+collections模块+sorted()

1、题目给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法:添加 一个在数据流中的新点到某个数据结构中。可以添加 重复 的点,并会视作不同的点进行处理。给你一个查询点,请你从数据结构中选出三个点,使这三个点和查询点一同构成一个 面积为正 的 轴对齐正方形 ,统计 满足该要求的方案数目。轴对齐正方形 是一个正方形,除四条边长度相同外,还满足每条边都与 x-轴 或 y-轴 平行或垂直。实现 DetectSquares 类:DetectSquares() 使用空数据结构初始

2022-01-26 18:58:06 1353

原创 python刷题-母牛问题(递归)

1.题目题目描述有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。输出对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。样例输入复制2450样例输出复制246https://www.dotcpp.com

2022-01-26 00:28:43 3447

原创 python刷题-n皇后(回朔法递归)

1.题目n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。每一种解法包含一个不同的n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:如上图所示,4 皇后问题存在两个不同的解法...

2022-01-24 21:24:41 1375

原创 学习笔记-字典小tip

a = [1, 2, 3, 4, 5]b = ['b'+str(i) for i in range(1, len(a)+1)]c = dict(zip(b, a)) # 字典可以接收元组自动形成键值对for i in zip(b, a): print(i)print(c)for k, v in c.items(): print(f'{k} = {v}') # 固定用法 和下面的输出一样 # print("{} = {}".format(k, v))d = dict(.

2022-01-24 17:32:33 452

原创 numpy和tensor类型更改(增加或减少)参数维度(reshape)

首先需注意的是numpy和tensor的维度排列顺序不一样,这里拿一张图片的shape举例:to_tensor = torchvision.transforms.ToTensor()img = cv2.imread("sample.jpg")img_tensor = to_tensor(img)print(type(img)) # <class 'numpy.ndarray'>print(img.shape) # (450, 500, 3)print(type(img_ten

2021-12-20 11:57:52 2637

原创 综述numpy数组索引和列表索引的用法与比较

列表因为里面元素可为不同类型,例如b = [1]a = ["str", 1.0, 2, None, b]print(a) # ['str', 1.0, 2, None, [1]]所以其功能仅支持索引,切片,还有一个特殊用法:列表推导式。(当然List类方法有很多,对应有很多其他功能,本文这里只讨论其索引的用法)b = [1]a = ["str", 1.0, 2, None, b]# 切片print(a[::-1]) # 倒序 [[1], None, 2, 1.0, 'str.

2021-12-16 23:58:47 849

原创 python中numpy.where的两种用法以及zip()的用法

首先numpy.where(condition, x=None, y=None)可接收三个参数,condition表示待操作的numpy.array类型数组的逻辑判断, x和y是可选参数。用法一:当x,y为默认值时,对应用法一,此时where的作用为寻找在参数condition情况下数组内匹配的值,对于不同的输入,其返回python中numpy.where的两种用法以及zip()的用法的值是不同的。 当输入(参数)是一维数组时,返回值是一维的索引,只有一组索引数组。>&...

2021-10-31 11:44:06 751

原创 1.用Python(opencv)在彩色图片中插入数字水印原理及代码

这里介绍用opencv去操作的最简单的一种方法的代码流程,示例用黑白数字,实际上只要是黑白纯色的二值图像都可以用该方法去插入提取水印。原理:嵌入时先将数字水印处理成二值(0 1)图像, 然后利用位操作插入原图的最后一个位平面,这样在观感上不会对原图造成任何影响。提取时相反操作即可。from operator import modimport cv2import numpy as npdef show(img_name, img): cv2.imshow(img.

2021-10-17 14:49:48 2374

原创 python中如何判断一个输入值为整数

a = [1, 2.1]for i in a: if type(i) == int: print("{}是整数!".format(i)) else: print("{}不是整数!".format(i)) if int(i) == i: print("{}是整数!".format(i)) else: print("{}不是整数!".format(i)) if i % 1 == 0: .

2021-10-10 10:38:30 15832

空空如也

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

TA关注的人

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