- 博客(51)
- 收藏
- 关注
原创 RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be asynchronously re
CUDA error
2022-09-25 11:34:27
2492
2
原创 Python负数的整除和取余
Python语法对于负数的整除和取余与其他语法不同,在LeetCode刷题中经常会与答案不符,具体如下:在负数整除中,永远是小于当前小数的最大整数,如下:7 / -2 = -3.5,7//-2 = - 4,但是同时注意到,如果是int取整则是-3对于LeetCode的题目https://leetcode.cn/problems/xoh6Oh/submissions/需要写成才能通过,写成a//b通过不了对于负数取余,需要记住公式:余数 = 被除数 - 除数✖商(注意这里的商是//的结果,而
2022-06-14 10:52:36
3256
1
原创 Python交换元素时A,B=B,A并不总是等于B,A=A,B
遇到这个问题的原因在于做LeetCode题:442. 数组中重复的数据 时发现nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]和nums[i], nums[nums[i] - 1] = nums[nums[i] - 1],nums[i]不相等举个例子:nums = [1,2,4,3]i = 2nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]nums结果为交换一下位置:nu
2022-05-09 10:27:28
537
2
原创 Python手撸机器学习系列(十六):循环神经网络RNN的实现
目录循环神经网络RNN1.公式推导2.代码实现循环神经网络RNN1.公式推导对于该循环神经网络,以中间的RNN单元为例,推导前向传播:对于Layer-1:zh=wix+whah−1z^h = w^ix+w^ha^{h-1}zh=wix+whah−1ah=σ(zh)a^h = \sigma(z^h)ah=σ(zh)这里σ\sigmaσ是sigmoid(⋅)sigmoid(·)sigmoid(⋅)激活函数对于Layer-2:zo=woahz^o = w^oa^hzo=woahpred=ao
2022-05-02 14:03:27
4497
9
原创 Python手撸机器学习系列(十五):简单神经网络
神经网络1.简单算法推导搭建一个将二维平面坐标点分开的简单神经网络,输入维度为2*1(特征为2),神经网络结构如下图:则网络第一层Layer_1的输出为:L1=f(w1x1+w3x2+b1)L2=f(w2x1+w4x2+b2)L_1 = f(w_1x_1+w_3x_2+b_1)\\L2 = f(w_2x_1+w_4x_2+b_2)L1=f(w1x1+w3x2+b1)L2=f(w2x1+w4x2+b2)其中f(⋅)f(·)f(⋅)表示sigmoidsigmoidsig
2022-04-26 19:28:37
2603
3
原创 Python二分查找与插入模块bisect
Python的二分查找与插入bisect模块,查询函数主要使用bisect.bisect(),bisect.bisect_left(),bisect.bisect_right(),插入函数主要使用bisect.insort()函数参数输入格式都为(array, item)其中bisect.bisect(),bisect.bisect_left(),bisect.bisect_right()用于查询目标值的最佳插入位置,三者的差异在于:当查询的值在数组中且数组不重复时:bisect返回查询值所在下标+
2022-04-25 13:03:30
1392
原创 机器学习分类常见评价标准
目录1.准确率(Accuracy)2.精确率(Precision)3.召回率(Recall)4.PR曲线与F1值(F1 Score)5.ROC曲线与AUC评价分类器性能的指标一般是分类准确率(accuracy),但对于二分类问题,其评价指标为精确率(precision)与召回率(recall),除此之外还有F1值(F1 Score)、PR曲线、ROC曲线、AUC等帮助理解的评估标准。首先了解一下假阴性、假阳性这些基本概念:TP——True Positive——真阳性——真实标签为真,模型预测也为真T
2022-04-23 13:30:47
2959
原创 Python手撸机器学习系列(十四):提升树算法实现
目录一、提升树1.1 提升树概述1.2 提升树代码实现二、梯度提升决策树2.1 GBDT概述2.2 GBDT代码实现一、提升树1.1 提升树概述待更1.2 提升树代码实现为与李航《统计学习方法》第168页例8.2一致,回归树简化为只有一个根节点连接两个叶子结点的结构,因为只有一个特征。当有多个特征的情况下应该递归生成回归树,但特征的划分方法与下面的代码一致。import numpy as np#单棵回归树,回归树本应递归生成,但这里为了与课本一致,简化成只有一个特征,即根节点带两个叶子结点
2022-04-15 19:36:40
1969
原创 Python在ACM输入模式下用Map代替For
之前在ACWing学习的时候发现Python输入模式有两种:res = list(map(int, input().strip().split()))和res = [int(x) for x in input().strip().split()]最近楼主在蓝桥杯中使用了for循环输入数据(头铁),比完才发现在比赛的输入模式中,for循环处理输入比map要慢得多,在数据量大的时候很容易超出时间限制测试,先生成一亿个1:a = '1 '*100000000使用map处理成列表:from t
2022-04-12 10:52:37
830
原创 Python手撸机器学习系列(十二):连续特征决策树与缺失值决策树实现
连续值与缺失值决策树本节代码和理论主要参考自周志华《机器学习》ID3、C4.5以及CART决策树和剪枝代码请参考我的上一篇博客https://blog.csdn.net/qq_43601378/article/details/121360503?spm=1001.2014.3001.55021. 连续值决策树对于连续特征,不能再根据连续属性的可取值对节点进行划分,而是应该使用取值范围进行划分。最简单的策略是二分法,即先将所有样本的取值排序,然后去两个样本取值的中点作为一个切分点,如有n个样本,则共计
2022-04-08 20:26:33
4858
4
原创 Pandas的values属性排序或修改后会改变原来的DataFrame
该问题是楼主使用了values属性将dataframe格式后导出为array格式后进行了sort(),结果发现原来的dataframe完全被打乱。举例:当修改values的值时,dataframe的值也会改变import pandas as pddf = pd.DataFrame()df['a'] = [1,2]df['b'] = [3,4]print('原来的dataframe:')print(df)test = df['a'].valuestest[0] = 8print("修改
2022-04-06 21:06:55
2475
原创 Python可变类型与不可变类型传入函数的变化
在python中将,数据类型分为可变类型和不可变类型:可变类型有:列表list,字典dict不可变类型有:整形int、浮点型float、字符串string、元组tuple当我们将一个数据作为形参传入函数时,如果在函数内修改形参,会发生一下情况:当数据为不可变类型时,会生成一个新的对象,然后形参的标签指向新的对象,而实参的没有变当数据为可变类型时,形参和实参都指向同一个对象,修改形参会直接在实参的基础上修改(即使是使用了copy()函数,在有些情况下依然会改变)所以我们在写python函数时,
2022-04-06 16:56:53
481
转载 ID3决策树与极大似然法的联系
标题来源于李航《统计学习方法》第二版p76页5.3.1第一段最后一句话。但问题在于,这本书和西瓜书都只介绍了信息增益的计算过程与决策树的构建过程,没有详细阐述ID3与极大似然法的联系。参考https://blog.csdn.net/qq_44204370/article/details/103035932,现反推如下:对于一棵决策树,其损失函数可以写作:Cα(T)=∑t=1∣T∣NtHt(T)+α∣T∣C_\alpha(T) = \sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T
2022-03-29 16:58:30
317
原创 Python手撸机器学习系列(十一):KNN之kd树实现
一、概述原理及一般实现较为简单,本文主要讨论KD树实现。KNN的主要要点如下:本质:利用训练数据集对特征向量空间进行划分特点:不具备显示的学习过程K值的影响:K值越大,表明单个样本的影响越小,且划分的空间少了,模型变得越简单,近似误差越大,估计误差越小,模型更容易欠拟合;K值越小,表明单个样本的影响越大,且划分的空间变多了,模型变得越复杂,近似误差越小,估计误差越大,模型更容易过拟合;近似误差与估计误差通俗理解:近似误差可以理解为模型估计值与实际值之间的差距,估计误差可以理
2022-03-24 17:24:34
3370
4
原创 Python广度优先遍历BFS中使用list.pop(0)超过时间限制的解决办法
楼主遇到这个问题是在LeetCode刷题时遇到2039. 网络空闲的时刻这个题目,按照BFS模板写的最后一个测试案例怎么都过不去(甚至复制官方的都过不去),幸得高人指点才发现问题所在。题目描述:我原始的代码为:class Solution: def networkBecomesIdle(self, edges: List[List[int]], patience: List[int]) -> int: n = len(patience) graph =
2022-03-20 20:50:08
1463
原创 Python手撸机器学习系列(十):软间隔SVM
目录软间隔SVM1.1 软间隔SVM模型原理1.2 软间隔SVM模型求解1.3 代码实现1.4 参考文献:软间隔SVM对于硬间隔SVM,其目标函数为:minw,b12wTws.t.yi(wTxi+b)≥1\min\limits_{w,b} \frac{1}{2}w^Tw\\s.t. y_i(w^Tx_i+b)\geq1w,bmin21wTws.t.yi(wTxi+b)≥1具体细节可参考https://blog.csdn.net/qq_43601378/article/details
2021-12-29 16:36:00
3432
5
原创 人体动作识别、预测常用骨架数据集小结
目录NTU RGB D 60数据集简介评估方式SYSU 3D HOI数据集简介评估约定数据分析CMU其他说明NTU RGB D 60数据集简介包含了由微软Kinect v2从三个不同的角度收集的56880个视频片段,共有40名实验人员执行了60个动作类别。视频的每一帧由25个关节点信息组成,动作分为单人执行和双人执行,所以一帧中的骨架数量为为1或2,每个视频仅包含一个动作。评估方式有两组分类方式:cross-subject:通过将40个受试者分为2组,使得40320个视频片段被用于训练,剩
2021-12-26 23:36:57
3087
原创 Python手撸机器学习系列(九):硬间隔SVM(对偶形式SMO算法求解)
硬间隔SVM对偶形式求解原始形式梯度下降法求解请参考我的上一篇博客:硬间隔SVM原始形式梯度下降法求解1、对偶形式求解原理引入拉格朗日乘子法L(w,b,λ)=12∣∣w∣∣2+∑i=1Nλi(1−yi(wTxi+b))L(w,b,\lambda) = \frac{1}{2}||w||^2+\displaystyle\sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b))L(w,b,λ)=21∣∣w∣∣2+i=1∑Nλi(1−yi(wTxi+b))则原问题可以写作:
2021-12-19 17:52:26
1976
8
原创 Python手撸机器学习系列(八):硬间隔SVM(原始形式梯度下降法求解)
目录一、硬间隔SVM1.1 原始形式1.2 原始形式代码实现(梯度下降)1.3 参考文献一、硬间隔SVM话不多说,直接上图:最基本的原理如图所示,即找一条最好的线把两边的点分开(本文以二维坐标点为基础举例)复习一下线性可分的定义:给定数据集{(x1,y1),(x2,y2),...,(xN,yN)}\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}{(x1,y1),(x2,y2),...,(xN,yN)},其中yi∈{+1,−1}y_i\in\{+1,-1\}y
2021-12-16 11:52:00
2981
4
原创 2021 CCF大数据与计算智能大赛个贷违约预测top 73 解决方案
目录一、概述二、解题过程2.1 数据2.2 构建基线2.3 进阶思路一2.4 进阶思路二2.5 进阶思路三2.6 融合2.7 调优提分过程2.8 其他工作三、结语一、概述这是我第二次参加大数据类型的竞赛,也是第一次接触金融类的题目,这一题可以称作CCF BDCI这一年的究极卷王题,3200个队伍参加,1300多个队伍提交,比其他赛题多了几倍,最后尽力也只拿下B榜73/3246的名次。在次记录自己的解题过程以及所思所想。赛题地址:https://www.datafountain.cn/competit
2021-12-12 20:23:10
6374
11
原创 Python手撸机器学习系列(七):聚类(Kmeans)
聚类一、Kmeans聚类1.1 原理属于原型聚类的一种,较为简单给定样本集D={x1,x2,...,xm}D=\{x_1,x_2,...,x_m\}D={x1,x2,...,xm},对于聚类,可以划分为簇C={C1,C2,..,Ck}C = \{C_1,C_2,..,C_k\}C={C1,C2,..,Ck},即将原数据划分为kkk类,然后最小化平方误差:E=∑i=1k∑x∈Ci∣∣x−μi∣∣22\large E =\displaystyle\sum_{i=1}^k\displayst
2021-12-11 22:01:52
1630
原创 Python手撸机器学习系列(六):决策树(附Python实现西瓜书决策树构建及剪枝代码)
目录决策树一、ID3决策树1.1 信息熵1.2 信息增益1.3 ID3决策树代码实现二、CART决策树决策树根据划分方法不同可以分为ID3、CART、C4.5三种决策树一、ID3决策树1.1 信息熵决策树算法的关键在于如何选择最优划分属性。一般而言,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即其纯度越高越好。通常,使用信息熵(information entropy)来作为度量样本纯度的标准,计算公式为:Ent(D)=−∑k=1∣y∣pklog2pkEnt(D) = -\disp
2021-11-16 17:13:50
10341
18
原创 Python手撸机器学习系列(五):线性回归与岭回归(最小二乘法求解)
线性回归目录线性回归一、原理1.1 数据输入1.2 最小二乘法一般解法1.3 最小二乘法的几何理解二、代码实现2.1 梯度下降法 、直接计算法求解:三、结语一、原理线性回归应该是最简单的机器学习算法了,我们以最小二乘法为基础来进行求解1.1 数据输入设数据表现形式为:Data=(x1,y1),(x2,y2),...,(xN,yN)Data = {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}Data=(x1,y1),(x2,y2),...,(xN,yN)其中x
2021-11-12 17:39:13
1804
1
原创 VS Code使用jupyter功能时一直kernel died以及一直要求重新安装ipykernel的解决方案
经过我多次尝试,发现重新卸载安装jupyer和ipykernel都无效最后才发现原因出在中文用户名上,请仔细检查你的win10用户名是否是中文,即C:\Users下面的用户名如果是中文,请按照以下方法改为英文:https://www.jianshu.com/p/bb3262375425大致步骤:启用administrator注销账户并登录administrator修改原用户名,如果遇到文件正在使用的情况检查一下360、腾讯等电脑管家是不是在运行,关闭之后再重命名用户名修改完毕后重新登录修改的
2021-11-05 11:19:42
3614
原创 Python手撸机器学习系列(四):朴素贝叶斯(华强买瓜版)
目录一、原理二、代码实现2.1 数据集2.2 代码一、原理待更二、代码实现2.1 数据集周志华机《机器学习》第84页表4.3西瓜数据集:色泽,根蒂,敲声,纹理,脐部,触感,好瓜青绿,蜷缩,浊响,清晰,凹陷,硬滑,1乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,1乌黑,蜷缩,浊响,清晰,凹陷,硬滑,1青绿,蜷缩,沉闷,清晰,凹陷,硬滑,1浅白,蜷缩,浊响,清晰,凹陷,硬滑,1青绿,稍蜷,浊响,清晰,稍凹,软粘,1乌黑,稍蜷,浊响,稍糊,稍凹,软粘,1乌黑,稍蜷,浊响,清晰,稍凹,硬滑,1
2021-11-02 20:44:58
2533
11
原创 Python手撸机器学习系列(三):线性判别分析(Fisher究极详解,看不懂你锤死我)
目录1.原理概述2.原理详解2.1 输入2.2 投影2.3 求解www3.代码实现1.原理概述我们的目的是将高维的数据投影到一维直线上并在投影的值中取一个阈值进行分类,如下图所示:(绘画水平有限,将就着看)在上图,很明显左边的投影更适合分类,因为两种类别(o和x)在投影直线上能轻松地找到一个阈值将其区分开来,而右边的投影方向则不适合当前分类。所以我们需要求解一个适合的投影方向www在理解fisher的时候,我遇到了很多不理解问题,在经过多本书籍的对比之后终于搞懂了,其大致的思路如下:问题的初
2021-10-31 18:32:50
2019
原创 Python手撸机器学习系列(二):逻辑斯蒂回归(Logistic Regression)(附Python实现坐标点分类及鸢尾花分类)
逻辑斯蒂回归(Logistic Regression)一、原理1.1 将回归变为分类逻辑斯蒂回归是一个经典的二分类模型,它的精髓在于用线性回归做二分类(或多分类,本文以二分类为主)。线性回归的输出为没有约束的连续值,而分类在于0和1两个值,如何从回归值到分类值就需要一个映射,于是引入了sigmoid函数:sigmoid(z)=1e−z\large sigmoid(z) = \frac{1}{e^{-z}}sigmoid(z)=e−z1画出图像为:即可以将回归输出映射到0-1之间。我们的
2021-10-21 17:38:22
2134
5
原创 Python手撸机器学习系列(一):感知机 (附原始形式和对偶形式Python实现代码)
感知机1.感知机的定义感知机是二分类的线性模型,是神经网络和SVM的基础。输入特征x∈Xx∈Xx∈X,输出y={+1,−1}y = \{+1 , -1\}y={+1,−1}那么感知机算法可以表示为f(x)=sign(w⋅x+b)f(x) = sign(w·x+b)f(x)=sign(w⋅x+b),相当于一个简单的线性函数其中sign(a)={+1,if a≥0−1,if a<0 sign(a)= \begin{cases} +1, & \text {if a$\ge
2021-10-13 16:02:18
1286
1
原创 如何用Matplotlib优雅地实现NTU-RGB D骨架可视化
如何用Matplotlib实现NTU-RGB D骨架可视化1.简介骨架数据集由于其强鲁棒性而被广泛运用于动作识别和预测等领域,其中NTU RGB-D数据是最常用的骨架动作数据集。无论是在论文中描述自己的数据,亦或是分析特征变化过程,可视化都是必不可少的一步,本文将以NTU RGB-D数据集为基准使用Python的Matplotlib库对骨架数据进行可视化2.数据分析NTU RGB-D的数据集非常规范,其文件后缀名为‘.skeleton’,用记事本直接打开结果如下:从上到下依次为帧数、骨架数量(不
2021-10-08 17:00:09
2410
16
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人