【郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(二)kmeans】教程文章相关的互联网学习教程文章

算法(第四版)学习笔记之java实现栈和队列(链表实现)

下压堆栈(链表实现):import java.util.Iterator;public class LinkedStack<Item> implements Iterable<Item> {public class Node{Item item;Node next;}private Node frist;private int N = 0;public boolean isEmpty(){return N == 0;}public int size(){return N;}public void push(Item item){Node oldFrist = frist;frist = new Node();frist.next = oldFrist;frist.item = item;N++;}public Item pop(){Item item = frist.it...

数据机构与算法之美学习笔记:B+树(第48讲)【代码】【图】

一、解决问题的前提是定义清楚问题通过对一些模糊需求进行假设,来限定要解决问题的范围 根据某个值查找数据,比如 select * from use where id=1234; 根据区间值来查询某些数据比如 select * from use where id > 1234 and id < 2345 性能方面的需求,我们主要考察时间和空间两方面,也就是执行效率和存储空间 执行效率:我么你希望通过索引,查询数据的效率尽可能的高;存储空间方面:我们希望索引不需要消耗太多的内存空间...

郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(二)kmeans【代码】

(上接第二章)  4.3.1 KMeans 算法流程  算法的过程如下:  (1)从N个数据文档随机选取K个文档作为质心  (2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类  (3)重新计算已经得到的各个类的质心  (4)迭代(2)~(3)步直至新的质心与原质心相等或者小于指定阀值,算法结束。  4.3.2 辅助函数  (1)文件数据转为矩阵:file2matrixdef file2matrix(path,delimiter):recordlist = []fp ...

优化算法学习笔记【图】

Machine Learning学习笔记(十四)集成学习(Boosting,Bagging,组合策略)https://blog.csdn.net/weixin_41806692/article/details/82433046Machine Learning学习笔记(十三)随机森林(RandomForest)https://blog.csdn.net/weixin_41806692/article/details/82430034Machine Learning学习笔记(十二)禁忌搜索算法(Tabu Search)https://blog.csdn.net/weixin_41806692/article/details/82414902Machine Learning学习笔记(十一)...

算法导论学习笔记(2)-归并排序

今天学习了算法导论上的归并排序算法,并且完成了在纸上写出伪代码,以前就学过归并但是理解的不够透彻,以前还一直困惑:为什么明明归并排序比快排的时间复杂度更稳定,为什么库函数不用归并而用快排,现在知道原因了,因为归并排序必须开额外的空间,而且空间开销还比较大,下面介绍算法:首先,归并排序用到了分治的思想,把大数据分成若干个小数据,然后再分别对小数据进行处理,最后把小数据合并成大数据。其次,归并排序用到...

【算法学习笔记】76.DFS 回溯检测 SJTU OJ 1229 mine【代码】

扫雷玩得好还是有点好处的......这个题一开始像从后向前按照第一排的数字进行DFS 发现自己真傻,先不说这种情况下每个数字的填写情况很多, 还要处理相邻位置的问题。所以可以对每一位有没有地雷进行枚举。处理每一位的时候,要保证上一个数字是合理的,否则不用进行下去了,类似回溯,注意have变量的处理就好了。#include <iostream> #include <stack> usingnamespace std; //最长 暗示dfs //遇到3 和 0 其实只有一种情况 //遇到2 和...

【视频编解码·学习笔记】7. 熵编码算法:基础知识 & 哈夫曼编码【代码】

一、熵编码概念:熵越大越混乱信息学中的熵:用于度量消息的平均信息量,和信息的不确定性越是随机的、前后不相关的信息,其熵越高信源编码定理:说明了香农熵越信源符号概率之间的关系信息的熵为信源无损编码后平均码长的下限任何的无损编码方法都不可能使编码后的平均码长小于香农熵,只能使其尽量接近熵与混乱程度: 混乱度越高的信源,越难以被压缩,需要更大量的信息来表示其排列顺序熵编码基本思想: 是使其前后的码字之间尽...

【算法学习笔记】85.破环为链 序列DP 松弛+代价 SJTU OJ 1073 能量项链【代码】

和石子合并很像, 为了对环状进行处理, 我们可以把输入数据复制一份接连在后边. 这样在最后的结果枚举起点找最大即可.注意这里代价的计算, 因为我们的data[i]只记录了珠子的头珠子的尾部即是下一个珠子的头部.//因为计算dp[i][j]时需要用到dp[i][k] k比j小 所以j顺序dp[k][j] k比i大 所以i逆序 k插入即可for (int i = 2*n-1; i >=1 ; --i){for (int j = i; j <= 2*n; ++j){dp[i][j] = 0;for (int k = i; k < j ; ++k) dp[i][j] = ma...

【算法导论-学习笔记】以线性时间增长的排序——计数排序【代码】【图】

计数排序是一种能够达到运行时间能够线性时间θ(n)的排序算法。在排序算法里算是最快的算法之一,当然,他有很强烈的前提。下面开始介绍一下技术排序(Counting Sort)。算法思想计数排序假设n个输入元素中的每一个都是介于0到k之间的整数,此处k为某个整数。这样可以用一个数组C[0..k]来记录待排序数组里元素的数量。当k=O(n)时,计数排序的运行时间为θ(n).注:关于C[0..k],用键值对描述的话,待排序元素是键,相同元素的个数是...

KMP算法学习笔记【代码】

KMP算法 从零开始大部分来自他人博客,蒟蒻只是总结学习引言 字符串匹配。给你两个字符串,寻找其中一个字符串是否包含另一个字符串,如果包含,返回包含的起始位置.char *str = "bacbababadababacambabacaddababacasdsd"; char *ptr = "ababaca";暴力解法如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如果失配(即S[i]! = P[j]),令i = i - (j - 1),j = 0。相当于每次匹配失败时,i 回溯,j 被...

数据结构学习笔记 模拟算法1【代码】

猜数字 #include<stdio.h> #include<time.h> int main() {int n,m,i=0;srand(time(NULL));n=rand()% 100 +1;do{printf("输入所猜的数字:");scanf("%d",&m);i++;if(m>n)printf("错误!所猜的数太大了!\n"); else if (m<n) printf("错误!所猜的数太小了!\n");}while (m!=n);printf("答对了!\n");printf("共猜测了%d次。\n",i) ;if(i<=5)printf("你太聪明了,这么快就猜出来了!");else if(i>5)printf("还需要改进方法,以便更快猜出...

数据结构与算法之美专栏学习笔记-复杂度分析【代码】

复杂度分析什么是复杂度分析数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”。因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能。分别用时间复杂度和空间复杂度两个概念来描述性能问题,二者统称为复杂度。复杂度描述的是算法执行时间(或占用空间)与数据规模的增长关系。 为什么要进行复杂度分析和性能测试相比,复杂度分析有不依赖执行环境、成本低、效率高、易操作、指导性强的特点。掌握复杂...

STL学习笔记(算法概述)【代码】【图】

算法头文件要运用C++标准程序库的算法,首先必须包含头文件<algorithm>使用STL算法时,经常需要用到仿函数以及函数配接器。它们定义域<functional>头文件中。 算法的分类可以按以下分类方式描述各个STL算法:非变动性算法(nonmodifying algorithms)变动性算法(modifying algorithms)移除性算法(removing algorithms)变序性算法(mutating algorithms)排序算法(sorting algorithms)已序区间算法(sorted range algorithms)数值算法(n...

【算法学习笔记】72.LCS 最大公公子序列 动态规划 SJTU OJ 1065 小M的生物实验1【代码】

非常简单的DP如果dp[i,j]表示从0到i 和 从0到j 这两段的相似度,那么可以知道每个dp[i,j]是由三种状态转化过来的第一种 当dna1[i]==dna2[j]的时候 dp[i-1,j-1] + 1 长度加1第二种 否则 从下面两个状态过来那就是dp[i][j-1] 和 dp[i-1][j]//注意因为是顺序遍历 这两个都已经计算过取两者最大即可。#include <iostream> #include <cstring> #include <algorithm> usingnamespace std;//最长公共子序列长度 LCS dpchar dna1[1000+1...

机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)【图】

今天要来讨论的是EM算法。第一眼看到EM我就想到了我大枫哥,EM Master,千里马,RUA!!!不知道看这个博客的人有没有懂这个梗的。好的,言归正传,今天要讲的EM算法,全称是Expectation maximization,期望最大化。怎么个意思呢,就是给你一堆观测样本,让你给出这个模型的参数估计。我靠,这套路我们前面讨论各种回归的时候不是已经用烂了吗?求期望,求对数期望,求导为0,得到参数估计值,这套路我懂啊,MLE!但问题在于,如果这个...