机器学习专栏
文章平均质量分 82
机器学习(周志华版)学习笔记和知识点。
fjssharpsword
这个作者很懒,什么都没留下…
展开
-
MMDetection库部署和训练
目标检测库:https://github.com/open-mmlab/mmdetection1、部署:参照https://github.com/open-mmlab/mmdetection/blob/master/docs/get_started.md安装环境注意版本,我试验后可用的如下:conda create -n open-mmlab python=3.7 -yconda activate open-mmlabconda install pytorch==1.6.0 tor.原创 2021-03-26 08:59:11 · 1514 阅读 · 1 评论 -
Torchvision目标检测模型训练过程记录
1、环境:pytorch==1.6.0torchvision==0.7.0cudatoolkit==10.22、场景:https://pytorch.org/tutorials/intermediate/torchvision_tutorial.htmlhttps://github.com/pytorch/vision/tree/master/torchvision利用torchvision提供的maskrcnn训练自己的数据。3、数据:转换成coco格式示例代码:主原创 2021-03-25 16:52:02 · 602 阅读 · 1 评论 -
机器学习模型解释性工具SHAP
如下图,SHAP支持模型解释性,可用于抽取特征对结果的贡献。Github地址:https://github.com/slundberg/shap案例:1、数据集:# dataset:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html# diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况。 # 数据集中的特征值总.原创 2020-09-11 14:22:59 · 2998 阅读 · 0 评论 -
Grad-CAM (CNN可视化) Python示例
论文:ICCV 2017《Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization》代码:https://github.com/yizt/Grad-CAM.pytorch/blob/master/main.py https://github.com/jacobgil/py...原创 2020-03-26 12:28:25 · 2207 阅读 · 7 评论 -
Class Activation Mapping (CNN可视化) Python示例
Class Activation Mapping论文:CVPR2016《Learning Deep Features for Discriminative Localization》代码:https://github.com/acheketa/pytorch-CAM/blob/master/update.py1、首先定义并训练好CNN网络,很重要的一点是网络的最后一个卷积层必须只有一个...原创 2020-03-26 09:10:17 · 1455 阅读 · 0 评论 -
ECG-QRS检测参考代码
一个完整周期的ECG信号有 QRS P T 波组成,不同的人相应不用的波形,同一个人在不同的阶段波形也不同。所以QRS检测是心电数据处理的基础。https://github.com/c-labpl/qrs_detector参考这个代码,用来检测MIH-BIH不成功,这里代码贴出来参考(修正了代码执行错误的点)。import matplotlib.pyplot as plt%ma...原创 2020-03-04 16:27:31 · 3942 阅读 · 8 评论 -
基于pytorch开发CNN提取全连接层作为特征
场景:利用CNN网络的全连接层作为图像的特征。代码:import sysimport osimport mathimport randomimport heapq import timeimport copyimport numpy as npimport pandas as pdfrom functools import reducefrom scipy.spati...原创 2020-02-22 11:19:28 · 3931 阅读 · 7 评论 -
贝叶斯神经网络的辩论
贝叶斯概率体系的研究有一段时间了,目前在推进贝叶斯神经网络,看到这篇文章的辩论,这里保存下。https://mp.weixin.qq.com/s?__biz=MzI5NTIxNTg0OA==&mid=2247500837&idx=1&sn=df0915b394369cfe5c9e936c44143941&chksm=ec5473a2db23fab4ddfc73c...原创 2020-01-20 09:09:26 · 396 阅读 · 0 评论 -
模型可解释性-贝叶斯方法
在医学领域,模型的可解释性尤为重要,需要有明确的结论证据支持,然后牵涉到神经网络模型,绕不开的就是黑盒观点。业界做了很多尝试,发现一片不错的模型可解释介绍。这里依旧做要点记录,以免原链接失效。原链接:https://www.jiqizhixin.com/articles/2019-10-30-91. 什么是模型的可解释性模型解释的三个最重要的方面解释:2. 可解释性的标...原创 2019-12-26 08:28:27 · 1602 阅读 · 1 评论 -
NeurIPS 2019最热趋势-贝叶斯深度学习
贝叶斯原理,总感觉憋着,不透。关注到一篇文章介绍NIPS2019最新趋势中有关于贝叶斯深度学习的,还是担心链接失效,博客这里mark关键信息。链接:https://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2652060603&idx=1&sn=548887b5b4c5f3bc72a3693fac4bab1a&c...原创 2019-12-23 09:59:18 · 475 阅读 · 0 评论 -
Bayesian Neural Network for regression (PRML)
Bayesian Neural Network : PRML 5.7章节参考代码:https://nbviewer.jupyter.org/github/ctgk/PRML/blob/master/notebooks/ch05_Neural_Networks.ipynb1.git clone:https://github.com/ctgk/PRML.git到目录 PRML/下2.代...原创 2019-12-19 16:53:16 · 392 阅读 · 0 评论 -
机器学习笔记(一)绪论
1.绪论1.1引言机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能;经验,则以数据的形式存在,故而,机器学习所研究的,正是在计算机上从数据中产生模型的算法,即学习算法。基于学习算法和经验数据所产生的模型,可以应用到新情况的分析和判断。机器学习是研究关于学习算法的学科,比较形式化的定义是:假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上原创 2017-01-03 12:45:13 · 3564 阅读 · 3 评论 -
机器学习知识点(一)文本字符信息熵Java实现
用熵来评价整个随机变量平均的信息量,而平均最好的量度就是随机变量的期望,即熵的定义如下:计算字符的信息熵,参考代码如下:package sk.ann;import java.util.Scanner;public class InfoEntropy { public static double Entropy(String str) { double H = .0;原创 2017-01-03 14:29:34 · 6171 阅读 · 4 评论 -
机器学习知识点(二)各类型平均数Java实现
代码如下:原创 2017-01-06 11:20:46 · 4015 阅读 · 2 评论 -
机器学习笔记(二)模型评估与选择
2.模型评估与选择2.1经验误差和过拟合不同学习算法及其不同参数产生的不同模型,涉及到模型选择的问题,关系到两个指标性,就是经验误差和过拟合。1)经验误差错误率(errorrate):分类错误的样本数占样本总数的比例。如果在m个样本中有a个样本分类错误,则错误率E=a/m,相应的,1-a/m称为精度(accuracy),即精度=1-错误率。误差(error):学习器的实际预测输原创 2017-01-10 10:55:37 · 12163 阅读 · 0 评论 -
机器学习知识点(三)方差和标准差Java实现
1、方差:方差是各个数据与平均数之差的平方的平均数。2、标准差:标准差(Standard Deviation) 各数据偏离平均数的距离(离均差)的平均数,它是离差平方和平均后的方根。用σ表示。因此,标准差也是一种平均数标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的,标准差未必相同。3、参考代码:package sk.ann;原创 2017-01-10 17:15:40 · 19003 阅读 · 0 评论 -
机器学习笔记(三)线性模型
3.线性模型3.1基本形式线性模型(linearmodel)形式简单、易于建模,如果能把问题都用线性模型来刻画,那现今的世界就单调多了,好在我们的宇宙是如此的丰富,以至于需要通过更强大的非线性模型(nonlinear model)来描述。然而,线性模型作为最基本的,再复杂的也都归于最简单,非线性模型在很多情况下都是在线性模型基础上通过引入层级结构或高维映射而来,分治策略思想。下面定义线性模原创 2017-01-17 10:32:30 · 7397 阅读 · 0 评论 -
机器学习知识点(四)最小二乘法Java实现
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。通过一元线性模型应用来理解最小二乘法。监督学习任务中,预测离散结果的是分类任务,预测连续结果的是回归任务。在回归任务中,预测结果y和x的函数关系中,一元线性回归只包含一个属性的,原创 2017-01-17 11:27:08 · 7946 阅读 · 0 评论 -
机器学习知识点(五)梯度下降法Java实现
梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代(步长)能使待优化的目标函数逐步减小。梯度下降法是2范数下的最速下降法,用来求解函数的最小值,无约束优化。看数学定义都晦涩,网上发现一个比较通俗的说法:想象你站在一座高山上,你想要用最短的时间下山,但是你每次只能走一步。那你需要做的就是查看你周围360度的范围,找到一个最陡峭的(下降的最快的)方向,然后转移到那个点上;转移原创 2017-01-17 15:57:45 · 6941 阅读 · 5 评论 -
机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现
基本的拉格朗日乘子法就是求函数f(x1,x2,...)在g(x1,x2,...)=0的约束条件下的极值的方法。其主要思想是将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。原函数加约束函数构成的一组方程组,用以求解变量组。拉格朗日乘子(Lagrange multiplier)假设需要求极值的目标函数(objective functio原创 2017-01-18 09:49:26 · 7509 阅读 · 0 评论 -
机器学习笔记(四)决策树
4.决策树4.1基本流程决策树(decisiontree)基于树结构进行决策,符合人的思维机制,是一类常见的机器学习方法。一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点。叶结点就对应于决策结果;内部结点则对应属性值分类,每个内部结点包含的样本集合根据属性测试的结果(值)划分到子结点中;根结点包含样本全集,从根结点到每个叶结点的路径对应一个判定测试序列。决策树学习的目的是为了原创 2017-02-04 10:34:09 · 5937 阅读 · 0 评论 -
机器学习知识点(七)决策树学习算法Java实现
为理解机器学习第四章节决策树学习算法,通过网上找到的一份现成代码,主要实现了最优划分属性选择和决策树构造,其中最优划分属性选择采用信息增益准则,代码如下:package sk.ml;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;impor原创 2017-02-04 11:21:31 · 3305 阅读 · 0 评论 -
机器学习知识点(八)感知机模型Java实现
感知机模型假设输入数据集为表示是n个训练数据样本。输出y只有两个值(-1,+1)两个分类。那么感知机模型可以表示为以下函数:其中sign是符号函数,意义如下。w表示权值,b表示偏置。我们就是需要通过一定的策略和算法求出其w和b,就可以得到相关的感知机模型。援引网上参考代码如下:package sk.ann;import java.util.ArrayLi原创 2017-02-06 10:50:03 · 3837 阅读 · 0 评论 -
机器学习笔记(五)神经网络
5.神经网络5.1神经元模型神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。对这句话的理解,简单提要下,主角是简单单元(输入单元、功能单元),特性是适应性和并行互连,功能是模拟生物神经反应。神经网络是一个数学模型,其最基本的成分是神经元(neuron),即简单单元。在生物神经网络中,每个神经元与其他神经元相连,当它兴原创 2017-02-08 11:18:49 · 7685 阅读 · 0 评论 -
机器学习知识点(九)BP神经网络Java实现
为深入理解机器学习中BP神经网络算法,从网上找到的Java实现代码。1、BP神经网络结构如下图所示,最左边的是输入层,最右边的是输出层,中间是多个隐含层,隐含层和输出层的每个神经节点,都是由上一层节点乘以其权重累加得到,标上“+1”的圆圈为截距项b(功能神经元结点的阈值),对输入层外每个节点:Y=w0*x0+w1*x1+…+wn*xn+b,神经网络相当于一个多层逻辑回归的结构。算法原创 2017-02-09 09:31:25 · 3139 阅读 · 2 评论 -
机器学习笔记(六)支持向量机
6.支持向量机6.1间隔与支持向量对于给定的训练集D={(x1,y1),(x2,y2),…,(xm,ym)},yi∈{-1,+1},分类学习的初衷就是基于训练集在样本空间中找到一个可以有效划分样本的超平面。可能存在很多可将样本分开的超平面,选择分类结果最鲁棒、泛化能力最强的超平面便是支持向量机模型的重点。通过二维样本点分布的图示看,最直观上,找到两类样本正中间的超平面是最佳的。如此,在原创 2017-02-22 11:30:47 · 3097 阅读 · 2 评论 -
机器学习笔记(七)贝叶斯分类器
7.贝叶斯分类器7.1贝叶斯决策论贝叶斯决策论(Bayesiandecision theory)是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。这其实是关系到两个基本概念:多大可能是这个类别以及可能误判的损失?机器学习就是从中选择误判损失最小的最大概率类别作为其分类标识。原创 2017-03-03 08:56:18 · 14346 阅读 · 0 评论 -
机器学习知识点(十)马尔可夫链
马尔可夫链概述马尔可夫链因安德烈·马尔可夫(Andrey Markov,1856-1922)得名,是数学中具有马尔可夫性质的离散时间随机过程。该过程中,在给定当前知识或信息的情况下,过去(即当期以前的历史状态)对于预测将来(即当期以后的未来状态)是无关的。 时间和状态都是离散的马尔可夫过程称为马尔可夫链, 简记为。 马尔可夫链是随机变量的一个数列。这些变量的范围原创 2017-03-03 09:37:36 · 17311 阅读 · 3 评论 -
(转载)机器学习知识点(十一)隐马尔可夫模型
隐马尔可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些学者发表在一系列的统计学论文中,随后在语言识别,自然语言处理以及生物信息等领域体现了很大的价值。 引子 考虑下面交通灯的例子,一个序列可能是红-红/橙-绿-橙-红。这个序列可以画成一个状态机,不同的状态按照这个状态机互相交替,每一个状态都只依赖于前一个状态,如果转载 2017-03-03 09:45:42 · 2475 阅读 · 0 评论 -
(转载)机器学习知识点(十二)坐标下降法(Coordinate descent)
首先介绍一个算法:coordinate-wise minimization问题的描述:给定一个可微的凸函数,如果在某一点x,使得f(x)在每一个坐标轴上都是最小值,那么f(x)是不是一个全局的最小值。形式化的描述为:是不是对于所有的d,i都有这里的代表第i个标准基向量。答案为成立。这是因为:但是问题来了,如果对于凸函数f,若不转载 2017-03-03 09:53:34 · 6141 阅读 · 4 评论 -
(转载)机器学习知识点(十三)吉布斯采样法(Gibbs Sampling)
3.1 随机模拟随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis, 在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机上转载 2017-03-03 10:17:16 · 4864 阅读 · 2 评论 -
(转载)机器学习知识点(十四)EM算法原理
1.引言以前我们讨论的概率模型都是只含观测变量(observable variable), 即这些变量都是可以观测出来的,那么给定数据,可以直接使用极大似然估计的方法或者贝叶斯估计的方法;但是当模型含有隐变量(latent variable)的时候, 就不能简单地使用这些估计方法。如在高斯混合和EM算法中讨论的高斯混合就是典型的含有隐变量的例子,已经给出EM算法在高斯混合模型中转载 2017-03-03 12:02:12 · 2331 阅读 · 0 评论 -
(转载)机器学习知识点(十五)从最大似然到EM算法浅解
从最大似然到EM算法浅解机器学习十大算法之一:EM算法。能评得上十大之一,让人听起来觉得挺NB的。什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决不了的问题。神为什么是神,因为神能做很多人做不了的事。那么EM算法能解决什么问题呢?或者说EM算法是因为什么而来到这个世界上,还吸引了那么多世人的目光。 我希望自己能通俗地把它理解或者说明白,但转载 2017-03-03 12:04:50 · 2198 阅读 · 0 评论 -
机器学习笔记(八)集成学习
8.集成学习8.1个体与集成集成学习(ansemblelearning)通过构建并结合多个学习器来完成学习任务,也称为多分类器系统(multi-classifiersystem)、基于委员会的学习(committee-based learning)。集成学习的一般结构:先产生一组个体学习器(individual learner),再用某种策略将它们结合起来。个体学习器通常由一个现有的学原创 2017-03-13 09:56:28 · 7515 阅读 · 0 评论 -
机器学习知识点(十六)集成学习AdaBoost算法Java实现
理解http://blog.csdn.net/fjssharpsword/article/details/61913092中AdaBoost算法,从网上找了一套简单的代码加以理解。1、基分类器,实现一个简单的分类1)对象类package sk.adaboost;public class Instance { public double[] dim; //各个维度值 publi原创 2017-03-13 16:59:54 · 2711 阅读 · 0 评论 -
(转载)机器学习知识点(十七)Bagging与随机森林算法原理小结
集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。本文就对集成学习中Bagging与随机森林算法做一个总结。 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。1. bagging转载 2017-03-13 17:10:43 · 2297 阅读 · 0 评论 -
机器学习笔记(九)聚类
9.聚类有必要回顾下前文所涉及的机器学习主流分类,有监督学习中根据预测结果离散和连续属性分为分类和回归两大类,常见的算法有:线性模型、决策树、神经网络、支持向量机、贝叶斯分类器以及集成学习。本文开始说无监督学习(unsupervised learning),训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。聚类(cluste原创 2017-03-20 09:57:06 · 7577 阅读 · 0 评论 -
机器学习知识点(十八)密度聚类DBSCAN算法Java实现
为更好理解聚类算法,从网上找现成代码来理解,发现了一个Java自身的ML库,链接:http://java-ml.sourceforge.net/有兴趣可以下载来看看源码,理解基础ML算法。对于DBSCAN算法,从网上找到一个Java实现的,主要是用来理解其算法过程。参考代码如下:1、Point类,数据对象package sk.cluster;public class Point {原创 2017-03-20 11:41:28 · 4672 阅读 · 4 评论 -
机器学习笔记(十)降维和度量学习
10.降维和度量学习10.1k近邻学习k近邻(k-NearestNeighbor,简称kNN)学习是一种常用的监督学习方法,其原理是:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个邻居的信息来进行预测。在分类任务中,使用投票法,选择k个样本中出现最多的类别标记作为预测结果;在回归任务中,使用平均法,将这k个样本的实值输出标记的平均值作为预测结果。自然,也原创 2017-03-29 09:27:47 · 10462 阅读 · 2 评论 -
机器学习知识点(十九)矩阵特征值分解基础知识及Java实现
1、特征值基础知识矩阵乘法Y=AB的数学意义在于变换,以其中一个向量A为中心,则B的作用主要是使A发生伸缩或旋转变换。一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式: 这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特原创 2017-03-29 13:03:37 · 4248 阅读 · 0 评论