
算法巩固
文章平均质量分 84
摩天崖FuJunWANG
今天的你,要比昨天优秀。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
pytorch用nn实现逻辑回归(logistic回归)
import torchimport torchvisionfrom torch import nnimport torchvision.transforms as transformsmnist_train = torchvision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST', train=True, download=True, transform=transforms.ToTensor())mnist_test = torch.原创 2020-10-21 11:01:48 · 3820 阅读 · 0 评论 -
信息量、信息熵、交叉熵、KL散度以及交叉损失函数的关系与理解
记事件ppp,在各个状态下xix_ixi 的概率为p(xi)p(x_i)p(xi) 。(假设共n个状态)1、 信息量:概率越大信息量越小。−log(p(xi))-log(p(x_i))−log(p(xi))2、 信息熵:信息量的期望值:H(p)=∑i=1np(xi)(−log(p(xi)))H(p) = \sum\limits_{i = 1}^n {p({x_i})} ( - log(p({x_i})))H(p)=i=1∑np(xi)(−log(p(xi)))3、 交叉熵:.原创 2020-10-20 22:08:54 · 2660 阅读 · 0 评论 -
DBSCAN密度聚类算法原理解读及python实现
题记:没有落脚到数据结构的对算法的理解都是没有灵魂的复制粘贴!其实很多算法,我们通过开源的算法包比如sklearn,tensorflow等,实现都很简单,几行代码,调调参数就出来了,一般也不会出现什么大问题。但是我觉得实际得算法他应该跟诗歌一样,每个人对它得理解和未来得改动应该是都有些微得差别得,而这些微得差别正推动者科研得进步。这就需要从原理和实现上深入得了解和直观感受。而掉包,是缺少这一丝灵气的。DBSCAN密度聚类算法西瓜书上对于密度聚类的讲解:聚类的过程示例:直观理解:可以这样原创 2020-05-23 01:54:47 · 5047 阅读 · 0 评论 -
kmeans算法性能改进_kmeans++算法+kmeans++优化算法+距离计算优化
***题记:*我一直在路上,害怕停下在我的另一篇博客里《读sklearn源码学机器学习——kmeans聚类算法》我详细的阐述了kmeans算法的工作过程。截至目前为止,还没有深入的刨析kmeans算法的工作原理(会用和知道怎么用,跟理解背后深刻的数学原理是有本质区别的,我对此深感敬畏)。今天站在工程应用的角度,刨析kmeans在应用过程的应用和优化。主要是弥补我上篇博客中没有说明白的两个函数(elativeDist,squaredNorna)和一个初始化。1、kmeans++算法kmeans++是D原创 2020-05-15 00:02:21 · 13898 阅读 · 0 评论 -
读sklearn源码学机器学习——kmeans聚类算法
题记:凌晨3点半的不眠,是这个时代太聒噪,还是内心的不安kmeans知识体系从代码中梳理知识体系sklearn中kmeans源码源码结构kmeans算法属于cluster包的k_means.py文件。使用的过程中通过from sklearn.cluster import Kmeans导入在使用常规(不含大批量数据的情况下)kmeans算法的实现过程如上图所示,Kmeans主类,包含若干的内部函数(紫色所示),若干的外部函数(蓝色所示)。函数之间的调用关系如上面箭头所示。最核心的函数有:_k原创 2020-05-13 03:48:45 · 12680 阅读 · 2 评论 -
dijkstra迪杰斯特算法邻接表加二叉堆实现python版
dijkstra迪杰斯特算法需要知道的点:1、属于贪心算法2、得到一点到其他各点的所有距离3、需要用到所有的信息4、图中不能有负数权重dijkstra算法过程今天不是铅笔加手写python+优先队列实现(这里用的时二叉堆)def showGraph(linkList): for vert in linkList: for n in v...原创 2020-05-06 23:46:57 · 8230 阅读 · 7 评论 -
格雷码python实现解决——编码解码问题
格雷码问题百度百科上的定义:其实初次我接触格雷码的时候,头大的不行,这个东西的性质太多了,想要产生一个格雷码,好像也只有通过动态规划或者递归的方式实现,第一次做格雷编码解码问题的时候,只能跪倒在各位大佬面前,然后把它抛在了脑后,直到笔试快手又遇见了这道题,我决定,回来好好研究这道题,毕竟,又多吃了好几天的饭,今天的我已经不是昨天的我了(~~)上数学定理直接从百度百科上扒出来格雷码的解码编...原创 2020-04-28 22:28:45 · 11665 阅读 · 0 评论 -
快速幂、取余运算、快速幂取余、欧拉降幂
快速幂对于a的n次方,如果我们老老实实用a每次的结果乘以自身的话,那需要乘n次,在n很大的时候速度很慢,但是,如果我们将n用二进制表示,这样就可以将乘法次数降到log(n)次。def pickPow(a,b): s=1 while b>0: if b&1:s*=a a*=a b>>=1 retur...原创 2020-04-28 03:14:04 · 6012 阅读 · 0 评论 -
算法篇——一键扫清二叉树遍历及重构问题
写作目的二叉树是程序设计中经常用到的数据结构,一些统计学习算法比如说决策树,以及由此衍生出来的随机森林,GBDT,XGBOOST,ADABOOST等,都多多少少的涉及到了二叉树操作以及树操作,在我们面试的过程中也经常的遇见二叉树的重构等,二叉树遍历接下来展示,前序、后续、中序遍历的递归和非递归实现前序# Definition for a binary tree node.class T...原创 2020-04-25 20:53:49 · 6994 阅读 · 0 评论 -
python内置高级数据结构
写作目的在编程过程,特别是线上编程的过程中,总会需要用到很多高级的数据结构,但是python中的一些高级数据结构并没有那么的“明显”,这里梳理一下。栈栈在python中比较好实现,直接用List数据结构就可以代替。add方法用append代替,有内置的pop()方法,时间复杂度O(1),至于peek()方法可以直接用索引-1代替。myStack=[]myStack.append(1)m...原创 2020-04-18 17:20:56 · 10421 阅读 · 0 评论 -
算法基础篇——线性时间非比较排序算法
注: 关于非线性时间得比较排序算法请看我得另一篇博客https://blog.youkuaiyun.com/weixin_41806489/article/details/1047689081、计数排序主要思想:获取待排序数组得最大值和最小值,然后开辟一个从最小值到最大值得连续的数组,该数组数组头是最小值,数组尾是最大值。根据数组中数字相对于最小值最大值的大小存储在相应得位置。所以该算法适合进行整数得排序...原创 2020-03-24 19:16:03 · 5409 阅读 · 0 评论 -
算法基础知识学习——二叉树的绘制
基于二叉堆的二叉树绘制方法介于目前网上二叉树绘制的python代码太过复杂难懂,并且有些画的太过于丑,因此写下该文章。注:本文所述方法中的二叉树以链表的形式存储。1 绘图前准备。首先你的二叉树要以链表的形式存储,你的节点类中方法的命名要如下所示:class BinaryTree: def __init__(self,value): self.value=value...原创 2020-03-11 20:14:33 · 16223 阅读 · 3 评论 -
算法基础知识学习——非线性比较排序算法
算法学习系列——排序方法1、冒泡排序。主要思想:每轮遍历,都进行两两交换,将大数往后排列。直接上python代码,简单易懂:def bubbleSort(sortList): #冒泡排序 for i in range(len(sortList)):#进行len(sortList)轮的比较 for j in range(len(sortList)-i-1):#每...原创 2020-03-10 10:36:33 · 14797 阅读 · 1 评论