自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

忆殇D.Rose的博客

伪文艺青年努力要成为改变世界的程序员……

  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 解决mac安装anaconda后遇到“conda: command not found“的问题

最近新入了macbook pro,在安装好anaconda后,图形界面中操作时没有任何问题的,但打开终端后却遇到了conda指令无法使用的问题,如下图:这个问题的产生可能会有多种原因,我这里记录一下我解决的办法,首先如果直接用conda指令显示上面的错误的话,可以先试一下打开终端后运行"source ~/.bash_profile"指令,然后在运行conda指令,如果这个时候conda指令可以正常运行的话,那说明你遇到的问题和我一样,解决的办法就很简单只需要在zsh的配置文件里面把前面那一句命令加进去就

2020-10-20 20:28:24 4182 1

原创 深度学习优化算法概要

最近面试经常被问到机器学习和深度学习优化器的问题,所以做了一点简要的总结,主要是理清每种优化算法的基本思想和相互之间的对比,全文在ipad上手写,不想再转成md浪费时间了,如果看不习惯的朋友可以选择忽略直接退出((ಥ﹏ಥ))。另一篇机器学习优化算法概要的地址为 https://blog.csdn.net/qq_30992103/article/details/107793497,欢迎学习交流BGDSGDMBGDMomentumNesterov Accelerated Gradient.

2020-08-04 18:20:32 292

原创 机器学习优化算法概要

最近面试经常被问到机器学习和深度学习优化器的问题,所以做了一点简要的总结,主要是理清每种优化算法的基本思想和相互之间的对比,全文在ipad上手写,不想再转成md浪费时间了,如果看不习惯的朋友可以选择忽略直接退出((ಥ﹏ಥ))SAGSAGAliblinearNewton法BFGSL-BFGS优化器选择的原则...

2020-08-04 18:07:30 346

原创 Vscode中报错 CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.

首先明确一下问题,因为好像这个报错我在网上搜到可能会有一些不同的原因的引起,我的Vscode 在运行py文件时激活anaconda虚拟环境的报错信息如下图所示,如果你的报错和我一样的话,那说明能按我下面的方法解决。第一步:在VScode powershell comdline中执行conda init后重启vscode,出现错误无法加载文件******.ps1,因为在此系统中禁止执行脚本,这是...

2020-05-04 11:44:57 7880 12

原创 基于python的排序算法实现(直接和折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序)

最近因为找实习的需要,对常见的几大类排序算法做了基于python的实现,特地拿出来和大家分享,也欢迎看到的朋友如果发现里面有bug的话积极提出,共同进步文章目录1. 插入排序1.1 直接插入排序1.2 折半插入排序1.3 希尔排序2. 交换排序2.1 冒泡排序2.2 快速排序3. 选择排序3.1 简单选择排序3.2 堆排序4. 归并排序首先给一张各种常见排序算法的性能比较的表,如下图:...

2020-03-31 17:26:54 514

原创 python logging模块总结

python logging模块总结1. 为什么选择logging模块?很多人可能 会有这样的疑问,要在程序运行的过程中输出一些信息来确定我的程序在正常运行的话,那直接用print函数不是更直接吗,我何必要那么麻烦的用logging呢?其实我一开始也是有这种想法的,所以一直没有怎么用过logging模块。但当写的项目的代码数开始增加并且项目更加复杂后,才发现logging模块“真香”!!!接...

2020-03-07 22:40:49 725

原创 [Leetcode 120] Dynamic Programming - Triangle(三角形最小路径和)

这个题是维特比算法的一个典型应用,为了求全局最短路径,必须知道从初始位置到当前各位置的最短路径,再从当前位置,依次找到到达下一位置的最短路径。为什么通过找到从初始位置到当前可到达位置的局部最优路径最终就能得到全局最优路径呢?设这条路径需要经过t个点,每个点的权重不相同,最后找到了一条路径,这条路径上的t个点的权值之和最小。令这条路径上的第i个点(0<i<t0 < i < ...

2020-02-13 17:08:49 154

原创 第十六章 主成分分析 代码实现

这篇博客主要是总结一下sklearn中给出的几种PCA方法的实现,包括PCA:针对线性可分数据的PCA方法的实现Kernel PCA:加入了核函数的PCA方法,用于对线性不可分数据的降维Incremental PCA:用于对大数据进行降维,当数据量过大时,不能一次全部加载入内存,所以需要每次加载一个batch,这一点上和深度学习在数据量过大时的加载方法是一致的,即每次都只从外存中取一个ba...

2020-01-12 22:31:04 502

原创 第十六章 主成分分析(PCA)

PCA对于主成分分析方法的原理和涉及到的相关数学知识的学习,下面几篇文章讲解的非常好:如何通俗易懂地讲解什么是 PCA 主成分分析?如何通俗地理解协方差与相关系数?如何通俗地理解奇异值?如何理解拉格朗日乘子法和KKT条件?如何通俗地理解协方差与相关系数?上面几篇文章已经详细的介绍了主成分分析方法的基本概念和实现方法,但还有几点是上面没有涉及,需要继续讨论的:经典的PCA方法是...

2020-01-12 16:35:02 4561

原创 [Leetcode 91] Dynamic Programming - Decode Ways(解码方法)

dp[i]dp[i]dp[i]表示从左到右取sss的长度为i+1i+1i+1的子串,这个子串有多少种可解码方式。dp的公式应该是:如果以dp[i−1]dp[i-1]dp[i−1]为十位和以dp[i]dp[i]dp[i]为个数组成的数字大于等于1小于等于26dp[i]=dp[i−2]+dp[i−1]dp[i]=dp[i-2]+dp[i-1]dp[i]=dp[i−2]+dp[i−1]当不满足...

2019-12-28 11:15:06 106

原创 [Leetcode 64] Dynamic Programming - Minimum Path Sum(最小路径和)

这道题也是得从终点往前进行dp的,每次决定当前位置到终点的最小路径和dp[i][j]dp[i][j]dp[i][j]表示从位置(i,j)(i,j)(i,j)到终点的最小路径和,状态转移方程为:dp[i][j]=min(dp[i+1][j],dp[i][j+1])+dp[i][j]dp[i][j]=min(dp[i+1][j], dp[i][j+1])+dp[i][j]dp[i][j]=min(...

2019-12-16 15:29:39 101

原创 [Leetcode 63] Dynamic Programming - Unique Paths II(不同路径 II)

这个题应该考虑从终点开始,和前一个问题的不同在于要把不能通过的障碍考虑进去。在障碍位置的可走路径数应该为0dp[i][j]dp[i][j]dp[i][j]表示从坐标(i,j)(i,j)(i,j)到终点的可走路径数从终点开始往回填表,遇到障碍则障碍位置的可走路径数就是0。如果当前位置不是障碍,则当前位置(i,j)(i,j)(i,j)的可走路径数为:dp[i][j]=dp[i+1][j]+dp...

2019-12-16 11:52:37 102

原创 [Leetcode 62] Dynamic Programming - Unique Paths(不同路径)

这道题最直观的dp思路其实就是填满一张二维表dpdpdp即可,二维表的大小为m×nm\times nm×n。二维表中的元素dp[m][n]dp[m][n]dp[m][n]表示从起始点到达坐标为(m,n)(m,n)(m,n)位置的所有不同路径的总数。状态转移的方程为:dp[m][n]=dp[m−1][n]+dp[m][n−1]dp[m][n] = dp[m-1][n] + dp[m][n-1]d...

2019-12-15 21:54:42 96

原创 [Leetcode 746] Dynamic Programming - Min Cost Climbing Stairs(使用最小花费爬楼梯)

一开始我的做法是用一个二维数组来做dp,但后来发现,其实每次只需要保存上一步dp的两个值即可,于是对dp方法又做了改进.第一种解法首先说一下用二维数组做dp的方法:dp数组有两行:第一行表示走当前阶梯,如果走了当前阶梯,则第n-1个阶梯可走可不走,取走与不走的最小值加上当前第n步的花费,即为走当前步的最小值,则最低花费为dp[0][n]=min(dp[0][n−1],dp[1][n−...

2019-12-15 21:03:55 102

原创 《统计学习方法(第二版)》学习笔记 第五章 决策树

决策树 - ID3、C4.5、CART对于决策树的学习,无论是ID3、C4.5和CART分类树还是CART回归树,其实都需要重点关注几个点:数据集确定性的评价指标(信息增益、信息增益比、基尼指数、平方误差)递归构造决策树过程中,基于数据集确定性的评价指标选择最优特征和最优切分点以构造子树的过程(ID3和C4.5算法生成f分类决策树的过程中生成的是多叉树,只需要重点关注特征选择过程即可,然...

2019-12-15 11:17:04 916

原创 [Leetcode 392] Dynamic Programming - Is Subsequence

这个题目要求匹配的子序列并不连续,只要保持相对关系即可,所以最简单的方法,就是定义一个标志字段来指示当前子串中需要匹配的值的位置(初始化值为0),依次在主串匹配子串中当前需要匹配的字符,如果匹配到了就将标志字段中的值加1,直到子串完全匹配输出True,或者主串遍历完也没有完全子串则输出False。class Solution(object): def isSubsequence(se...

2019-12-05 16:49:56 85

原创 [Leetcode 303] Dynamic Programming - Range Sum Query - Immutable

初始化:dp[0]=nums[0]dp[0]=nums[0]dp[0]=nums[0]状态转移:dp[n]=dp[n−1]+nums[n]dp[n] = dp[n-1] + nums[n]dp[n]=dp[n−1]+nums[n]每次求区间[i,j][i,j][i,j]之间的值之和的方法:SumRang(i,j)=dp[j]−dp[i]+nums[i]SumRang(i,j) = dp[j...

2019-12-04 21:03:38 85

原创 [Leetcode 198] Dynamic Programming - House Robber

198. House Robber这个题的问题其实可以改写为:从给定序列中选取一个数据之间不相邻的子序列,要求这个序列的和最大,输出这个最大的和。动归的状态转移函数为:f(n)=max(f(n−1),f(n−2)+nums[n])f(n) = max(f(n-1), f(n-2)+nums[n])f(n)=max(f(n−1),f(n−2)+nums[n])其中:f(n−1)f(n-1...

2019-12-04 20:57:40 97

原创 [Leetcode 121] Dynamic Programming - Best Time to Buy and Sell Stock

这道题每次把当前已经遍历过的部分子序列中的最小值作为买入价格,因为只有买入价格最小,才能得到最大的收益。 然后每次尝试将当前价格作为卖出价格,如果收益大于当前最大收益,则更新最大收益值。class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] ...

2019-12-04 16:55:56 105

原创 [Leetcode 70] Dynamic Programming - Climbing Stairs

70. Climbing Stairs这道题其实是一个很典型的递归问题,递归函数都是和斐波那契问题相似的:f(n)=f(n−1)+f(n−2)f(n) = f(n-1)+f(n-2)f(n)=f(n−1)+f(n−2)dp的想法主要是在递归的过程中复用已经遍历的状态f(n)f(n)f(n),如果这个状态下的方法数已经确定,则不需要再继续往下遍历,直接返回保存的方法数即可。class So...

2019-12-04 10:51:58 120

原创 [Leetcode 1025] Dynamic Programming - Divisor Game

1025 - Divisor Game第一种解法可以直接考虑这道题是否存在必胜策略:首先考虑最终失败的情况必定是谁的数字变为1谁就失败,不可能是其他情况。再由题目我们可以思考:如果输入是一个偶数,那么减掉一个比它小且能整除它的正数,最后得到的可以是一个偶数(减掉的数不为1)也可以是一个奇数(减掉的数是1)如果输入是一个奇数,那么减掉一个比它小且能整除它的正数,最后得到的一定是一个偶数...

2019-12-03 21:00:35 219

原创 《统计学习方法(第二版)》学习笔记 第十章 隐马尔可夫模型

隐马尔科夫模型(HMM)模型定义隐马尔科夫模型是关于时序的模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态序列,再由各个状态随机生成一个观测从而产生观测序列的过程。其中涉及的关键概念包括以下两个:状态序列:由隐藏的马尔科夫链随机生成的不可见的状态的序列观测序列:状态序列中的每个不可见的状态都会生成一个可见的观测,而由此产生的观测的随机序列,就叫做观测序列。而一个隐马尔科...

2019-12-02 21:14:31 286

原创 python 基于DOM的XML文件的读写操作总结(较全)

一个典型的XML文件中的节点的例子如下图所示,每个节点都包含了两部分内容:节点属性和子节点(其中也包括了如图中第3部分所示的TextNode,这种特殊的节点类型只会显示一个文本)。所以对XML的读写操作就是围绕节点和节点属性来进行的。1. xml文件的写入1.1 对xml文件的操作导入python包:import xml.dom.minidom as minidom创建文档DOM对象:d...

2019-11-27 19:54:14 2506

原创 PyQt5 QMainWindow主界面跳转实现

前后端不分离的方式实现QMainWindow之间的跳转(不推荐)在网上找了很久QMainWindow之间的跳转,找到的模板都是如下面这种的,但这种方式其实在用PyQt5进行界面编程时会非常麻烦,因为一般我们先利用QtDesinger生成*.ui文件,再用PyUIC工具转化得到对应的*.py文件,如果采用下面这种方式,每次都需要把修改后的界面代码粘贴过来。在界面复杂时,光是界面代码就已经多了,而且...

2019-11-25 22:29:44 4344 5

原创 PyQt5 QTableWidget的显示、添加和删除多行

最近为了写软著,一直在用PyQt5进行开发,但因为本身对PyQt5并不熟悉,所以在写代码的过程中遇到了很多问题,只能在网上疯狂百度找办法,这一篇博客简单总结一下PyQt5中QTableWidget的显示、添加和删除操作的方法。PyQt5 QTableWidget的显示、添加和删除操作1. QTableWidget的显示首先给出我的界面如下,其中红色框就是显示的表格。显示表格的代码如下...

2019-11-15 21:04:57 18752 1

原创 给定二叉树的先序序列和中序序列构建二叉链表

过程其实很简单:先在先序子序列中找到当前子树的根节点,即先序子序列的第一个节点就是当前子树根节点在中序子序列中找到当前根节点的位置,并返回下标根据中序子序列中的当前子树根节点的位置,得到子树的左子树和右子树根据当前子树的左右子树,分别得到其在先序子序列和中序子序列中的开始索引和结束索引根据得到的索引,判断左右子树是否为空,如果不为空则返回第一步继续执行,如果为空直接返回。在二叉链表...

2019-11-04 16:33:18 3022

原创 《统计学习方法(第二版)》学习笔记 第四章 朴素贝叶斯法 代码实现

这篇博客总结一下特征值是离散值和连续值情况的朴素贝叶斯法的代码实现。在这两种情况下:特征值是离散值时,P(X(j)=ajl∣Y=ck)P(X^{(j)}=a_{jl}|Y=c_{k})P(X(j)=ajl​∣Y=ck​)是通过频数来估计的;特征值是连续值时,P(X(j)=ajl∣Y=ck)P(X^{(j)}=a_{jl}|Y=c_{k})P(X(j)=ajl​∣Y=ck​)是通过正态分布来估计的...

2019-10-30 11:35:22 272

原创 《统计学习方法(第二版)》学习笔记 第四章 朴素贝叶斯法

文章目录朴素贝叶斯法1. 基本方法2. 参数估计方法2.1 取值为离散量2.2 取值为连续量3. 学习分类算法朴素贝叶斯法是基于贝叶斯定理和特征条件独立假设的生成模型,概率估计采用的是极大似然估计方法,即用频率作为概率的近似值。在我理解里,其实朴素贝叶斯法和KNN算法一样,都没有显式的参数学习过程,都是基于实例的,即当前数据集如果确定了的话,则模型也是确定的,这和神经网络是明显不一样的。朴素贝...

2019-10-28 15:22:52 220

原创 《统计学习方法(第二版)》学习笔记 第三章 k近邻法 代码实现

文章目录1. kd树节点定义2. 数据处理过程3. 基于kd树的最近邻算法实现和k近邻算法实现3.1 kd树的构建3.2 基于kd树的最近邻算法实现3.3 基于kd树的k近邻算法的实现这篇博客给出基于kd树的最近邻算法实现和k近邻算法的实现1. kd树节点定义Node.py:kd树中的节点定义class KdNode: """ @:param value: ...

2019-10-23 11:08:02 229

原创 《统计学习方法(第二版)》 学习笔记 第三章 k近邻法

文章目录k近邻法(K-nearest neighbor)1. 定义2. K-NN模型3. 距离度量3.1 闵可夫斯基距离(Minkowski Distance,也叫LpL_{p}Lp​距离)3.1.1 欧式距离(Euclidean distance)3.1.2 曼哈顿距离(Manhattan Distance)3.1.3 切比雪夫距离(Chebyshev distance)3.2 标准化欧式距离(...

2019-10-22 22:48:01 785

原创 《统计学习方法(第二版)》学习笔记 第二章 感知机 代码实现

感知机代码实现​ 首先先直接给出一个复制粘贴就可以运行的代码实例,让大家先感受一下感知机的代码的执行过程。数据集采用的是经典的鸢尾花数据集,sklearn.datasets中提供了鸢尾花数据集的接口可以直接使用,当然还有其他更多的数据集可以用来进行实验,比如非常有名的用于机器学习的数据库UCI,其中也包含了鸢尾花数据集,里面包含的大部分数据集的规模都很小,很适合初学者使用。import num...

2019-10-16 21:51:35 152

原创 《统计学习方法(第二版)》学习笔记 第二章 感知机

文章目录感知机模型感知机学习准则感知机优化方法-梯度下降总结这一块因为最近要讲组会,所以做了ppt,就结合着ppt再做点总结吧。想要讲明白一个算法,总是要从三个方面入手的:模型、学习准则和优化方法,我也不例外,所以接下来也是从这三个方面来总结感知机的相关内容。感知机模型​ 下图给出了感知机的一般形式。由给出的公式可知,感知机实际是确定了一个分离超平面,由数学定义可知,当点在这个分离超平面...

2019-10-09 21:35:23 275

原创 python matplotlib各种绘图类型完整总结

文章目录1. Matplotlib图像基础1.1 __基本绘图实例:sin、cos函数图__1.2 plot()函数详解1.3 __matplotlib中绘图的默认配置__1.4 __设置图的横纵坐标的上下界:__1.5 __设置横纵坐标上的记号__1.6 __调整图像的脊柱__1.7 添加图例1.8 给一些特殊点加注释1.9 子图2. 函数间区域填充函数 fill_between()和fill(...

2019-10-02 11:59:04 64406 14

原创 常用的激活函数及其tf.keras实现

如果神经网络中没有激活函数,无论网络结构再如何复杂,学习的模型都只能得到线性函数,只能解决线性可分问题。激活函数的引入,使得神经网络能够拟合任何一个非线性函数,可用于解决线性不可分问题。不同的激活函数具有不同的特征,适合的场景也因数据的差异而各不相同,需要根据具体的情况选择合适的激活函数,否则无法得到一个令人满意的模型。这篇博客以tf.keras.activations中提供的激活函数为基础,对...

2019-09-26 22:25:53 2707

原创 深度神经网络为什么难以训练

前向传播和反向传播求导过程​ 首先,要讨论神经网络为什么难以训练这个问题,就必须要明确神经网络的运算过程和参数更新过程,以一个简单的前向神经网络为例,首先理解一下神经网络的前向传播和反向传播的过程。(公式太多了,只能无奈手写)。​ 从以上的推导过程中,我们其实可以得到几个很有意思的结论:神经网络的各层的参数更新速度是不一样的。由上图中的反向传播过程的计算可知,神经网络的反向传播过程是基于导...

2019-09-26 22:22:13 478

原创 tf.Keras.Model类总结

tf.keras.Model类tf.keras.Model类将定义好的网络结构封装入一个对象,用于训练、测试和预测。在这一块中,有两部分内容目前我还有疑惑,一个是xxx_on_batch三个方法,为什么要单独定义这个方法,而且train_on_batch方法为什么要强调是在单个batch上做梯度更新?第二个疑问是reset_metrics和reset_states函数有什么用,重置不重置对训练...

2019-09-19 19:56:03 29257 10

原创 tf.keras.Input函数

tf.keras.Input函数tf.keras.Input函数用于向模型中输入数据,并指定数据的形状、数据类型等信息。其实这个函数的参数中,batch_size和sparse的意义我还没有太理解,不知道这里指定的batch_size会对后面的模型训练产生什么影响以及指定创建的占位符是否稀疏的意义。​ 首先给出tf.keras.Input的函数定义:tf.keras.Input( ...

2019-09-12 16:07:57 11916 2

原创 Transformer学习总结——原理篇

文章目录Transformer学习总结1. 整体结构2. Self-Attention2.1 为什么选择Self-Attention2.2 Self-Attention结构2.3 Scaled Dot-Production Attetntion2.4 Multi-Head Attention3. The Residual Connection 残差连接4. Positional Encoding5...

2019-08-27 17:55:05 983

原创 ROC曲线学习总结

文章目录ROC曲线学习总结1. ROC曲线(Receiver Operating Characteristic)的概念和绘制2. 利用ROC曲线评价模型性能——AUC(Area Under Curve)3. 利用ROC曲线选择最佳模型3.1 不同模型之间选择最优模型3.2 同一模型中选择最优点对应的最优模型3.3 当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变ROC曲线在对分类问...

2019-08-19 15:22:38 97710 14

原创 python文件操作——CSV文件的读取和写入

文章目录Python文件操作总结——CSV文件的读取和写入1. CSV文件的读取2. CSV文件的写入Python文件操作总结——CSV文件的读取和写入python中的CSV文件的读取和写入操作比较简单和直观,只需要把csv文件中数据读出到list中,在list中修改,再写入即可,至于涉及到的更多高级特性,其实一般并用不到。首先给出_demo.csv_文件,其中包含了列名和四条样本。在C...

2019-08-14 13:49:55 7484 5

MNIST数据集

用于深度学习的经典入门语料,可以在各种经典方法中都取得良好的训练效果

2019-03-21

空空如也

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

TA关注的人

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