自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吟游诗人——吟唱生命的不朽

八百里分麾下炙,五十弦翻塞外声,沙场秋点兵

  • 博客(292)
  • 资源 (7)
  • 收藏
  • 关注

原创 简单复习最小生成树算法-Prim和Kruskal

参考资料:https://blog.csdn.net/qq_41754350/article/details/81460643https://blog.csdn.net/qq_41754350/article/details/81271567https://zhuanlan.zhihu.com/p/34922624Prim算法Prim针对点,而Kruskal针对边。Prim只适合无向带权图。维持一个集合,一开始选定一个点作为初始集合,另维持一个prev和dist列表。dist列表表示初始集合到

2021-04-10 09:32:18 767

原创 简单复习最短路算法-Floyd和Dijkstra

Floyd算法是求每一个顶点到每一个顶点间的最短距离,Dijkstra是求指定顶点到其余所有顶点间的最短距离。**Floyd思想:**不断加入新的中间结点,来判断加入新节点会否使得某点到其余点距离更近。for i in range(len(V)): # 中间结点 for j in range(len(V)): # 起始顶点 for k in range(len(V)): # 结束顶点 if dist[j][k] > dist[j][i] + dist

2021-04-09 23:15:07 747

原创 简单Python函数将SCI论文中WORD版参考文献改为LaTeX格式

投出的某sci论文被reviewer指出公式的format不大行,其实自己之前在用word调的时候也发现了这个问题,于是打算改头换面,使用latex来重新写一遍。而LaTeX的引用格式和word是不一样的(至少调格式的方式不同),bibtex是很常用的一种方式了,但是出于某些原因十分赶时间,对文中五十余篇论文去重新找各自的bibtex格式,然后再挨个照着之前word版补充一些东西,实在太费时间。那么如何“废物利用”呢,即将原来的word版的已经写好的内容直接copy过来呢?word版的内容拿过来自然没问题

2021-04-04 23:24:05 1504

原创 神经网络权重为什么不能初始化为0,而线性回归和LR可以?

线性回归基本可以是LR的简化版(论证思路上),因此本文将主要探讨两个问题:1. 为什么LR可以将权重初始化为0?2. 为什么神经网络不能将权重初始化为0?本文参考资料:https://zhuanlan.zhihu.com/p/75879624为什么LR可以将权重初始化为0?为什么神经网络不能将参数初始化为0?以下图为例:情况1:w和b都初始化为0那么由于反向传播的公式,从上图一个简单反向传播可以看出,每一轮参数更新只能从后往前更新一层的参数。这且不管,而且由于初始化参数完全相同,那么上上图

2021-03-20 21:59:32 3343

原创 卷积和池化后的特征图维度计算方式

卷积和池化都有如下几个参数:原始数据维度input_shape,卷积核大小kernel_size / 池化尺寸大小 pool_size,步长strides,填充padding=[‘same’, ‘valid’]。padding为valid如果padding为valid,那么不进行填充。在这种情况下,无论是卷积还是池化(池化将下面的kernel_size改为pool_size即可)的特征图的维度都是:input_shape−kernel_sizestrides+1\frac{input\_shape -

2021-03-14 17:04:38 2218

原创 深度学习优化器大总结:GD、SGD、Momentum、Nesterov Momentum、AdaGrad、RMSProp、Adam、牛顿法

参考资料:https://www.bilibili.com/video/BV1aK411n7Du?t=670

2021-03-09 10:55:21 255

原创 手撕SVM

序SVM是一种二分类模型,其学习策略为间隔最大化,也等价于“正则化的合页损失函数”最小化。SVM可分为以下三种类型:• 线性可分支持向量机:硬间隔• 线性支持向量机:软间隔• 非线性支持向量机:核函数本文将对以上三种类型的SVM做详细解释与推导,还将介绍一种快速学习算法:序列最小最优化算法(SMO)。线性可分支持向量机这是SVM最基本形式,其要求所提供的所有样本,必然线性可分。假设分类决策函数为f(x)=sign(w∗⋅x+b∗)f(x)=sign(w^*\cdot x+b^*)f(x)=

2021-03-02 15:21:46 201

原创 EM算法

参考资料:https://zhuanlan.zhihu.com/p/78311644https://zhuanlan.zhihu.com/p/36331115前置内容:先读参考资料2到2.2之前,再读完参考资料1,再读完参考资料2。公式推导:总结EM算法分成E步和M步,其中E步固定模型参数,以确定隐含数据的分布,从而建立似然函数下界,而M步则寻找模型参数以最大化似然下界。每次更新后,似然函数值都会变大,因此模型一定会收敛。但由于模型非凸,存在许多极值点,因此不一定能收敛到全局最优。如

2021-02-16 11:32:53 144

原创 一文彻底看懂LightGBM

本文适合有集成学习与XGBoost基础的读者了解LightGBM算法。序LightGBM是基于XGBoost的改进版,在处理样本量大、特征纬度高的数据时,XGBoost效率和可扩展性也不够理想,因为其在对树节点分裂时,需要扫描每一个特征的每一个特征值来寻找最优切分点,耗时较大。而LightGBM则提出了GOSS(Gradient-based One-Side Sampling,基于梯度的单边采样)和EFB(Exclusive Feature Bundling,互斥特征捆绑)来分别进行样本采样和降低特征维

2021-01-31 16:11:51 1903

原创 过拟合、欠拟合

过拟合是指在训练集上误差小,测试集上误差大;欠拟合是指在训练集和测试集上误差都大。过拟合解决办法:• 增加训练数据(增加样本会降低模型方差)• 降低模型复杂度• 增加正则化参数• 采用集成学习• 使用dropout• 提前停止• BatchNormalization欠拟合解决办法:• 增加特征• 提高模型复杂度• 减小正则化系数过拟合,高方差,低偏差欠拟合,低方差,高偏差要搞清楚原因,只需了解清楚方差和偏差的概念:方差: 方差是描述模型每次输出结果与模型输出的期望之间的误差,

2021-01-27 21:24:39 450

原创 机器学习中的正则化

正则化介绍“正则化”可以通俗理解为“规则化”,即添加一些规则,对模型参数加以限制,以降低模型过拟合的风险。模型过拟合的一个显著原因是由于参数过多导致的,以一个线性回归模型为例:其中,由于w参数过多,使得模型复杂度高,则容易出现过拟合的现象。而w参数都是学习来的,因此正则化的思想是在损失函数中加入正则化项,对w参数加以限制,控制w参数的数量(即上例中n的数量)。即若使得wi为0的个数较多,则有效减少了模型参数数量和复杂度。加入正则化项前的损失函数被称为经验风险,加入正则化项后的损失函数被称为结构风险

2021-01-27 21:22:52 262

原创 基尼指数 Gini Index

基尼系数(Gini index)反映的是从数据集D中随机选取两个样本,其类别标记不一致的概率。因此,基尼系数越小,数据纯度越高。Gini(D)=1−∑k=1∣γ∣pk2.Gini(D)=1-\sum_{k=1}^{|\gamma|}{p_k^2}.Gini(D)=1−∑k=1∣γ∣​pk2​....

2021-01-27 21:16:35 2733

原创 信息增益率

信息增益率与信息增益有关。信息增益存在一个问题,即若某个属性可取值数目较多,如用ID来作为分类标准,则信息增益会非常高。然而,这显然不符合实际情况,模型进入了过拟合,且不能对新数据进行有效的分类。增益率则在考虑了该情况的前提下,提出了一个新的公式:Gain_ratio(D,a)=Gain(D,a)IV(a)IV(a)=−∑v=1V∣Dv∣∣D∣log2∣Dv∣∣D∣Gain\_ratio(D, a)=\frac{Gain(D, a)}{IV(a)}\\IV(a)=-\sum_{v=1}^{V}{\f

2021-01-27 21:15:34 395

原创 信息熵与信息增益

信息熵(information entropy)是度量样本集合纯度/不确定度最常用的指标之一。但要注意,信息熵越小,表示不确定度越低,确定度越高,纯度越高。Ent(D)=−∑k=1∣γ∣pklog2pkEnt(D)=-\sum_{k=1}^{|\gamma|}{p_klog_2p_k}Ent(D)=−∑k=1∣γ∣​pk​log2​pk​信息熵是对信息量的度量。越小概率的事情发生所产生的信息量越大。信息量的公式表示如下:h(x)=−log2p(x)h(x)=-log_2p(x)h(x)=−log2

2021-01-27 21:14:15 4614

原创 回归模型评价指标-SST、SSR、SSE、R-square

本文介绍了回归模型在模型选择上的常见评估指标:SST、SSR、SSE和R-square。SST:The sum of squares totalSSR:The sum of squares regressionSSE:The sum of squares errorSSTThe sum of squares total. SST是观测到的真实值与真实值的均值之间的差的平方和。∑i=1n(yi−y‾)2\sum_{i=1}^{n}{(y_i - \overline{y})^2}∑i=1n​(yi​

2021-01-27 21:06:56 19126 5

原创 什么是包外估计?

包外估计(out-of-bag estimate)是用未在训练集中出现的测试数据来作出决策的方法。【西瓜书P179】包外样本有许多用途。例如当基学习器是决策树时,可使用包外样本来辅助剪枝,或者用于估计决策树中各节点的后验概率以辅助对零训练样本节点的处理,当基学习器是神经网络时,可以使用包外样本来辅助早期停止以减小过拟合风险。...

2021-01-27 20:58:10 1960

原创 机器学习模型的误差分析-逼近误差、泛化误差、优化误差

逼近误差模型最好能逼近真实模型到什么程度考虑target function和能从假设空间中学到的the best function的距离而已经证明一层隐藏层(+一层输出层)也能很好地拟合任何函数。XOR问题不能被单独一层网络解决。泛化误差泛化即推广能力。考虑在假设空间中的best function和可以从数据集中学到的best function之间的距离。优化误差因为优化问题带来的误差。即从能数据集中学到的best function和使用该算法从数据集中学到的best function之间

2021-01-27 20:56:30 2584

原创 AdaBoost公式推导及流程

本文参考众多资料,在此不进行罗列。下图为AdaBoost的公式推导下图为分类器权重α的推导公式

2021-01-27 20:51:04 191

原创 XGBoost公式推导

本文参考了网上较多资料综合而成,在此不进行罗列。

2021-01-27 20:48:10 127 1

原创 学习网站收集

国内:慕课网:https://www.imooc.com/网易云课堂:https://study.163.com/B站(经常有意想不到的资源):https://www.bilibili.com/中国大学mooc:https://www.icourse163.org/华文慕课:http://www.chinesemooc.org/学堂在线:http://www.xuetangx.com/...

2021-01-07 14:47:32 535 2

原创 过拟合高方差,欠拟合高偏差

过拟合是指在训练集上误差小,测试集上误差大;欠拟合是指在训练集和测试集上误差都大。过拟合解决办法:增加训练数据降低模型复杂度增加正则化参数采用集成学习欠拟合解决办法:增加特征提高模型复杂度减小正则化系数过拟合,高方差,低偏差欠拟合,低方差,高偏差要搞清楚原因,只需了解清楚方差和偏差的概念:方差:方差是描述模型每次输出结果与模型输出的期望之间的误差,描述的是模型的稳定性,反映输出值的波动情况偏差:偏差描述模型输出结果与真实值之间的误差,描述模型的拟合程度...

2020-12-28 15:39:08 501

原创 取m和n的中位数溢出解决办法

在LeetCode上刷一道二分的简单题,需要计算m和n的中位数。通常的想法是直接如下即可:int mid = (m + n) / 2;然而mid存在溢出的风险,一种简单的解决办法是把mid的类型改成 long long,如下long long mid = (m + n) / 2;但是改成long long就没意思了,如何优雅一点呢?我首先想了另一个办法,既然是相加再除以2,那除以2后再相加不就好了,即如下int mid = m / 2 + n / 2;这种办法看似正确,然而是存在问题的。

2020-12-22 15:44:23 357

原创 决策树

申明,本部分内容参考了众多网上资料,如有侵权请联系删除。总体介绍决策树(decision tree) 是一种基本的分类与回归方法,利用树形结构进行决策。在进行决策过程中,通常会需要进行一系列的判断或“子决策”,而决策过程中提出的每个判定问题都是对某个属性的“测试”,每个测试的结果要么导出最终结论,要么导出进一步的判定问题。一般的,一颗树包含一个根节点、若干个内部节点和若干个叶节点。叶节点对应于决策结果,其他节点则对应于一个属性测试。决策树学习的目的是产生一颗泛化能力强,即处理未见示例能力强的决策树。

2020-12-20 18:31:43 409

原创 python中的round

参考资料:python的round函数使用python的round函数作用是四舍五入,其函数定义如下:round接收两个参数,第一个是数字,第二个是保留的位数,如果不显式给定第二位,则默认不保留小数。round中存在一个陷阱如下,即对于x.675保留两位小数时,若x>1,则会返回x.67。同时,ndigits可以取负数,若取负数则是对整数部分进行四舍五入操作。...

2020-12-17 13:26:24 6424

原创 字符串匹配算法-Sunday

以往不论是上课还是各种资料书上,看到关于字符串匹配的算法,大抵都是KMP了。然而KMP的next数组理解起来颇为费劲,且容易忘记。在LeetCode刷题中偶然发现了一个叫Sunday的算法,不仅容易理解,且经过其他博主测评,Sunday的效率还要高于KMP算法,因此本文记录一下Sunday算法的思路。参考资料:Sunday 解法KMP、BM、Sunday、Horspool、strstr字符串匹配算法的性能比较首先briefly陈述一下问题即获得模式串第一次在目标字符串中出现的位置。Sun

2020-12-15 17:00:50 155

原创 原码、反码、补码知识点总结

好久没接触这三个熟悉而陌生的概念,以前也没理解透彻这三个概念的真正含义与作用,现在来重新做一个清晰而简单的总结。首先,原码、反码、补码只是机器中对于数字的三种不同的表示形式。下面说的数都默认为整数,关于小数的表示方法在本文中不做探讨。机器数与真值在机器中,往往以二进制来表示数字,这个数叫做机器数。为了区分正数和负数,则需要加入一位符号位来表示正负,而符号位便是第一位,其中0表示正数,1表示负数。+1= [0000 0001]-1= [1000 0000]+3=[0000 0011]-3=[10

2020-11-17 16:16:54 935

原创 正则化Regularization

重点:目的:为了避免过拟合,降低模型的复杂度,符合奥卡姆剃刀原理使用条件:当且仅当模型表达能力过强,即有可能出现过拟合的情况下才使用使用方法:在之前的损失函数后面加上惩罚项常见类别:L1-正则化(LASSO)、L2-正则化(Ridge)附加知识:L-N范数注意区分:正则化Regularization和标准化Normalization的区别补充:无穷范数是指所有元素中最大值参考资料:线性回归——lasso回归和岭回归(ridge regression)机器学习------L1、L

2020-10-09 09:27:04 143

原创 Joint Learning 与 Multi-Task Learning浅析

Joint Learning和Multi-Task Learning都属于集成学习(Ensemble Learning)的范畴,但网上关于Joint Learning的相关资料较少,因此在这里对这两种学习方式进行简要介绍,并对其不同点进行区分。Joint LearningJoint Learning是指模型中存在多个子任务,而我们可以将这些子任务一起训练。这么说起来有点抽象,可以举个简单的例子。比如在深度学习中,这个“深度”就可以理解为采用了多个模型进行Joint Learning,比如在许多NLP任

2020-08-22 10:20:47 8589 3

原创 windows10卸载vmware workstation

在应用与功能里面,vmware的卸载选项是禁用的,而点击修改,却也弹出了报错,似乎无法直接卸载。网上大多说需要下载一个Windows Installer Clean UP之类的软件,但又对那种未知来源的小工具不太放心。其实不然,vmware是可以直接卸载的。我们可以直接从其官网找答案:https://docs.vmware.com/en/VMware-Workstation-Player-for-Windows/15.0/com.vmware.player.win.using.doc/GUID-0F7D

2020-07-30 13:55:12 2806

原创 tf.gather,取指定维度多个索引的数据

tensorflow和numpy在数据处理上语法相似但又不完全一样,比如在numpy中想取指定维度的多个指定索引所指向的数据时,直接用一个列表保存索引就能直接取,比如:# b的shape为[2, 3, 2]b = np.array([[[1, 2], [2, 3], [3,4]], [[4, 5], [5,6], [6, 7]]])a = [0, 1, 2]# 假若要取b的第2个维度(从1算起)的以a为索引的数据,只需写成如下形式b[:, a, :]但是若b是tensor形式,则上述操作会报错

2020-07-03 12:11:29 1811

原创 python多继承及其super的用法

python也具有多继承的功能,而同样的,大家能想到多继承必须要引入一些特定的方法来准确调用子类或基类的重载、重写的方法,否则会出现混乱。本文参考Multiple inheritance in Python对该问题进行简要论述。如下图描述了一个简单的类继承关系下面是上面类图的代码,Class1、Class2、Class3都分别包含一个m方法,class Class1: def m(self): print("In Class1") class Cl

2020-06-26 08:59:00 675

原创 pandas的DataFrame的[]和[[]]的区别

对于一个DataFrame类型的数据,可以用[]和[[]]来取其某一列或某几列(仅限[[]]才能取某几列)。从[]只能取某一列就能看出,这个取出来的是Series,而[[]]取出来的是DataFrame类型的。

2020-06-13 16:42:09 1904

原创 ValueError: Attempt to convert a value (1) with an unsupported type xx to a Tensor

如题所述问题,其本质是tensorflow版本不兼容的问题,但是为了一个错误去更新tensorflow版本,往往会消耗较长时间,而且说不定会引起其他地方依赖的问题。关于该问题可以考虑从不同角度进行考量,迂回解决。比如我在实验中,在使用a == None时出现了该问题,其中a为一个tensor,那么既然不能直接判断,那么可以根据其类型进行判断,即改为type(a) == type(None)即可。关于其他类型的问题,可以考虑通过对其中某个值、或者shape、dtype等进行判断,从另一个角度解决问题。

2020-06-02 20:01:39 6891 1

原创 随机化算法解决圆排列问题 - python解法

问题描述给定n个大小不等的圆 ,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,当n=3,且所给的3个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列如图所示。其最小长度为 。算法设计设计一个随机化算法,对于给定的n个圆,计算n个圆的最佳排列方案,使其长度尽可能小。数据输入由文件input.txt给出输入数据。第一行有1个正整数n (1≤n≤20)。接下来的1行有n个数,表示n个圆的半径。解题思路随机化算法

2020-05-23 21:30:47 928

原创 tensorflow2中以复制方式扩展tensor —— tf.tile()

tensorflow2.0环境下,以复制方式扩展tensor,可以使用tf.tile()函数。该函数定义如下(图自官网):https://www.tensorflow.org/api_docs/python/tf/keras/backend/tiletf.tile()可以沿着某个维度对tensor进行指定倍数的复制,如下所示:import tensorflow as tfa = tf.constant([1, 2, 3])tf.tile(a, [2]) # <tf.Tensor: id=2

2020-05-11 14:52:11 3808

原创 python中*的用法

python中*是非常常见的一个运算符,它主要有以下几个功能:乘法运算符;函数形参表示可变参数;函数实参代表tuple;序列解包为tuple;zip解包运算;参考资料:Python3 * 和 ** 运算符Python zip() 函数乘法运算符在Python中,*表示乘法,**表示次方,这个不必多说。形参*在python中做函数形参,可以表示一个可变长度的序列,不过是t...

2020-04-21 09:48:42 2005

原创 如何关闭pycharm的自动更新

2020-03-19 21:21:13 4134

原创 python列出文件夹下所有文件名

用python获取指定文件夹下所有文件名很简单,使用os.walk()方法dir_path = '../../data/'for root, dirs, files in os.walk(dir_path): print(files)其中files是一个list,保存的是该文件夹下所有文件的文件名,别看这是个for循环,但其实这个循环只执行了一次,即如果将上面代码中的print(file...

2020-03-19 15:11:16 1251

原创 tensorflow中tensor,从每行取指定索引元素

实验有需求,需要对tensor中每一行取一个不同的索引的元素,其中tensor为2维(本文方法适合任意维),因此本文以2维tensor为例。# 二维tensorg = tf.constant([[1,2,3,4,5,6,7,8],[9,8,7,6,5,4,3,2]])# 每一行取的index,在本例中,正确取值为[3, 2],即第一行index=2的元素和第二行index=7的元素h_in...

2020-02-27 14:14:17 10339

原创 module 'sklearn' has no attribute 'svm'

在使用sklearn时有时会出现如下的问题,而且可能不仅仅是svm,可能是其他的什么内容module 'sklearn' has no attribute 'svm'如果确定没有拼写错误,那么就是下面这种情况,在import用的是import sklearn,而不是from sklearn import xxx,sklearn不会自动将其下的所有库都导入进去,因此需要按需自行导入。这是错误...

2020-02-06 09:45:01 5029

软件学报模板2016.zip

本文档为《软件学报》2016版的论文模板,也是目前为止(2019年12月底)的最新版本,里面详细介绍了论文写作格式与写作规范,是难得的论文写作范本!

2019-12-28

Simon游戏的制作(详细注释)

Simon游戏,FCC前端学习的最后一个项目

2017-08-14

当地天气(local weather)网页,jQuery,api

网页获取当前位置,并通过当前位置获取现在天气。使用了和风天气的api

2017-08-01

jQuery实现随机颜色弹幕墙

利用jQuery实现的弹幕墙,注释特别详细,支持弹幕的关闭与开启功能,弹幕颜色是随机的,且同一条弹幕可以重复显示,但不会引起弹幕遮挡屏幕的情况

2017-07-12

利用bootstrap与jQuery制作的响应式自适应导航栏

利用bootstrap和jQuery制作的一个响应式导航栏,即能够监听页面滚动事件,当页面滚动到页面某位置时导航栏会自动发生变化。同时点击导航栏滚动时利用简单的jQuery实现了平滑滚动。而且能自适应屏幕大小的变化,监听了onresize事件。

2017-07-11

bootstrap实现响应式自适应导航栏,并实现平滑滚动

利用bootstrap和jQuery制作的一个响应式导航栏,即能够监听页面滚动事件,当页面滚动到页面某位置时导航栏会自动发生变化。同时点击导航栏滚动时利用简单的jQuery实现了平滑滚动。而且能自适应屏幕大小的变化,监听了onresize事件。

2017-07-11

空空如也

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

TA关注的人

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