自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 论文笔记:Confidence-Aware Personalized Federated Learning via Variational Expectation Maximization

论文(2023 CVPR)的阅读笔记,可在 arXiv。

2024-04-07 21:46:57 645 1

原创 VAE 损失函数

VAE 损失函数

2023-08-21 10:23:44 510 1

原创 周报 2

阅读几篇论文的源代码。

2023-07-14 22:40:53 169

原创 周报 1

本周周报

2023-07-07 18:11:48 224

原创 Prim 算法正确性证明

Prim 算法的正确性证明

2023-03-29 13:20:51 319

原创 多标签评价指标

对多标签算法评价指标的梳理

2023-01-09 22:45:15 528

原创 论文写作课程总结

学习闵老师所授论文写作课程后的心得总结

2022-12-15 23:44:18 72

原创 日撸 Java 三百行: DAY59 数值型数据的 NB 算法

数值型数据是连续的,这就需要对贝叶斯分类器中条件概率的那部分表达式进行修改。已知符号型数据的贝叶斯分类器如下y=arg⁡max⁡ckP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)y=\arg\underset{c_k}{\max}P(Y=c_k)\underset{j}{\prod}P(X^{(j)}=x^{(j)}|Y=c_k)y=argck​max​P(Y=ck​)j∏​P(X(j)=x(j)∣Y=ck​)对于数值型数据,其 P(X(j)=x(j))P(X^{(j)}=x^{(j)})P(X(

2022-06-18 17:46:18 190

原创 日撸 Java 三百行: DAY58 符号型数据的 NB 算法

Naive BayesNaive\ BayesNaive Bayes 算法基于贝叶斯定理和特征条件独立假设的分类方法,通过从训练集数据中习得联合概率分布 P(X,Y)P(X,Y)P(X,Y),进一步得出贝叶斯分类器,依据该分类器对未知类别的数据进行分类。Step 1. 从训练集中学习先验概率 P(Y=ck),k=1,2,⋯ ,KP(Y=c_k),k=1,2,\cdots,KP(Y=ck​),k=1,2,⋯,KStep 2. 从训练集中学习条件概率 P(X=x∣Y=ck),k=1,2,⋯ ,KP(X=x|Y

2022-06-10 18:17:56 169

原创 日撸 Java 三百行: DAY56-57 kMeans 聚类

1. 聚类聚类属于无监督学习,即样本事先并没有被打上标注,算法根据样本之间的相似度或是距离将其归类。常用的衡量相似度或距离的有以下概念:闵可夫斯基距离dij=(∑k=1m∣xki−xkj∣)1pd_{ij} = (\sum_{k = 1}^ m|x_{ki} - x_{kj}|)^{\frac{1}{p}}dij​=(k=1∑m​∣xki​−xkj​∣)p1​当 p\textit{p}p 为 1\text{1}1 即曼哈顿距离,为 2\text{2}2 即欧氏距离,为 ∞\infty∞ 即切比雪

2022-05-17 21:12:22 292

原创 日撸 Java 三百行: DAY54-55 基于 M-distance 的推荐

0. 主题k\textit{k}k-NN算法的变种:基于 M-distance 的推荐。1. 基于 M-distance 的推荐应用场景该算法应用于推荐系统,例如为用户推荐一部他可能喜欢的电影。如下图所示:借助已有的观影信息来推测用户会对尚未观看过的电影打多少分。上图中基于 M-distance 的推荐预测 u0u_0u0​ 对 m2m_2m2​ 打分的具体步骤如下:STEP 1. 找邻居:要求邻居必须是用户 u0u_0u0​ 观看过的影片,且与待打分影片间的平均分差距必须小于给定阈值。即只

2022-05-11 19:26:25 234 2

原创 日撸 Java 三百行: DAY52-53 KNN分类器(续)

0.主题对昨天的 k\textit{k}k-NN分类器进行的一些补充。1.程序1. 重新实现computeNearestscomputeNearests,即求 k\textit{k}k 个最近邻,结合插入排序,可以用一次扫描实现这个功能。具体的,我们需要维护两个个能存储 k\textit{k}k 个元素的数组,一个用于存储距离,一个用于存储数据点的下标,程序的执行逻辑如下:求训练集中的一个数据点与当前测试数据点间的距离当数组未存满 k\textit{k}k 个元素,或者当前两点距离小于数组中第

2022-05-06 22:52:32 4002 1

原创 日撸 Java 三百行: DAY51 KNN分类器

0.主题KNN分类器。1.KNN算法k\textit{k}k 近邻法对测试集中的每个数据输出其类别,其思想如下:寻找 k\textit{k}k 个邻居:对测试集中的每个数据,计算找出训练集中与它最邻近的 k\textit{k}k 个数据为邻居投票表决:在 k\textit{k}k 个邻居中占多数的类,即被预测为测试数据的类别在实现上述思路时,有几个点需要注意:距离度量要找 k\textit{k}k 个最邻近的数据,我们首先要定义什么是近,也就是如何衡量各数据之间的距离。常用的距离度量

2022-05-05 22:07:29 224 1

原创 日撸 Java 三百行: DAY22 二叉树的存储

0.主题今天实现toDataArrays方法,用于将链式存储的二叉树转为顺序存储。1.二叉树的顺序存储1. 如何进行二叉树的顺序存储?完全二叉树对于一棵完全二叉树,如果将它的结点由上自下、由左到右的从0开始编号,那么编号为i\textit{i}i的结点,如果它的左右孩子存在的话,那么左孩子的编号为2i+12 \textit{i}+12i+1,右孩子的编号为2i+22 \textit{i}+22i+2。正如下图所示:显然,可以很自然的想到一种顺序存储的方式,即将数组的下标与结点的编号关联起来,

2022-05-04 23:14:58 636

原创 日撸 Java 三百行: DAY21 二叉树的深度遍历的递归实现

0.主题今天实现递归版本的二叉树深度遍历,并实现两个基于此遍历的方法,即求二叉树深度与二叉树结点数。1.二叉树的深度遍历深度优先遍历,顾名思义就是一直往深处遍历,直到无路可走再回头换个方向继续往深处遍历,一直到所有结点都被遍历过为止。在二叉树中,有前序遍历、中序遍历、后序遍历,他们都是对二叉树的深度遍历,区别在于处理结点的时机不同。前序遍历是先处理根结点,然后递归遍历左右子树,而中序遍历、后序遍历则分别是左根右和左右根的处理顺序。2.程序1. 二叉树二叉树中的结点包括三个元素,即结点的值,指向

2022-05-03 23:40:37 1856 1

原创 日撸 Java 三百行: DAY20 小结

1.面向对象与面向过程相比, 有哪些优势?面向对象的程序是以算法为核心,即先确定程序执行的步骤,然后一步步实现它。而面向对象是将现实世界的事物抽象为一个个类,程序描述了事物的行为。我认为面向对象这种对现实世界建模的视角更符合人类的角度,当面对更加复杂的程序时,面向过程对于程序执行步骤的分析会更加困难,对代码的调试也更容易陷入一团糟的状态。而面向对象将数据与方法封装在类中,更适合编写大的程序,出现错误时,先定位到类中再查找错误也会更容易。2.比较顺序表和链表的异同.顺序表和链表都是对表结构的实现,所

2022-05-02 23:53:05 1178 1

原创 日撸 Java 三百行: DAY19 字符串类

0.主题今天实现string类的一些功能,包括字符串匹配和求子串。1.程序1. 实例域 /** * The maximal length. */ public static final int MAX_LENGTH = 10; /** * The actual length. */ int length; /** * The data. */ char[ ] data;2. 构造器实现两个构造器,第一个用于生成空串,第二个用于根据给出的串生成对应的字符

2022-04-29 23:05:57 209 1

原创 日撸 Java 三百行: DAY18 循环队列

0.主题今天实现循环队列。1.循环队列队列除了有链式实习,还有顺序实现,但对于普通的顺序实现的队列可能会发生假溢出。这是因为head与tail只增不减,致使被删除元素的空间永远无法重新利用所致。循环队列通过做模运算将顺序队列转成了逻辑上的环形空间解决了这个问题。循环队列对队空,队满的判断如下:队空: head == tail队满: ( tail + 1 ) % TOTAL_SPACE == head其中head指向队头结点的位置,tail指向队尾结点后一个位置。由于要区分队空、队满这两种状

2022-04-28 21:03:14 539

原创 日撸 Java 三百行: DAY17 链队列

0.主题今天实现LinkedQueue类,包括一个内部类,以及几个方法。1.链队列队列同栈一样,也是一种受限的表结构,它只能在表的一端插入结点,在另一端删除结点,这两个操作分别被称作入队和出队。队列的特性是FIFO,即先进先出。所谓链队列,就是指存储方式为链式存储的队列。2.程序1.实例域LinkedQueue类含有几个实例域,包括一个内部类,一个头结点引用和一个尾结点引用。内部类包含一个用于存储数据的int型变量,一个用于链接下一个结点的引用和一个构造器,它定义了链表的结点结构。头、尾结点

2022-04-27 21:18:19 832 1

原创 日撸 Java 三百行: DAY16 递归

0.主题今天学习递归,并使用递归的方法实现程序sumToN和fibonacci。1.递归当一个函数要用它自己来定义时,这个函数就被称之为递归的。对于一个递归求解的问题,每次递归调用求解一个和原问题相同但规模更小的问题,当问题足够小的时候,将直接返回答案,最终将会神奇的求解出原问题的答案。对于递归程序,至少要求两点基准情形:即base case,这种情形不需要再进行递归调用,可以直接返回答案不断推进:即每次递归调用,程序应该朝着base case的方向靠近当然还有其他的递归程序设计法则,但上

2022-04-26 22:41:16 378 2

原创 日撸 Java 三百行: DAY15 括号匹配

0.主题今天实现栈的应用——括号匹配。1.括号匹配括号匹配要求:左括号必须用相同类型的右括号闭合。括号闭合的顺序要正确。2.程序程序实现的逻辑如下:遇到非括号元素,略过遇到左括号,将其入栈遇到右括号,将栈顶元素出栈,若匹配则处理下一个字符,若栈空无法出栈或者出栈的左括号不匹配,则返回false所有括号处理完毕后,栈内应没有括号,若有则返回false,否则返回true注:可以通过在栈中填充一个非法字符,将栈空和出栈左括号不匹配两种情况统一成一种,使程序更简洁。1.程序代码如下

2022-04-25 21:57:56 326 3

原创 日撸 Java 三百行: DAY14 栈

0.主题今天实现数据结构:栈1.栈栈是一种受限的表结构,数据只能在表的一端进行插入和删除,称之为入栈(push)和出栈(pop)。栈的特性是LIFO(后进先出),即后入栈的元素先出栈。栈是一种应用非常广泛的数据结构,括号匹配、中后缀转换等都需要用到栈,递归程序也会隐式的维护一个栈。2.实现1.实例域Stack类的有MAX_DEPTH,depth,data这三个实例域,其中MAX_DEPTH表示栈的最大深度,depth表示栈的当前深度,而data数组用于存储栈中元素。 /** * The d

2022-04-24 22:20:59 446

原创 日撸 Java 三百行: DAY13 链表

0.主题实现LinkedList类1.链表类LinkedList类中含有以下元素一个内部类,含有它自己的构造器一个构造器,用于初始化空链表方法toString,reset,locate,insert,delete2.程序实现1.内部类 /** * An inner class. */ class Node { /** * The data. */ int data; /** * The reference to the next node.

2022-04-23 22:16:52 615 1

原创 日撸 Java 三百行: DAY12 顺序表2

0.主题今天在昨天的SequentialList类中增加以下方法:indexOf:给出一个值,若在线性表中存在该值,则返回其首次出现的下标,否则返回-1insert:给出一个值和一个位置,若线性表未满且插入位置合法,则将其插入给定位置,否则插入失败delete:给出一个位置,若该位置合法,则删除该位置上的元素,否则删除失败1.程序1.indexOf遍历线性表,找到给出的值,则返回其下标。遍历完毕仍未找到则说明表中不存在该值,返回-1。代码如下: /** **************

2022-04-22 17:28:56 493 2

原创 日撸 Java 三百行: DAY11 顺序表1

0.主题今天的主题有以下内容初识面向对象顺序表通过构建一个SequentialList类来熟悉以上知识点。1.面向对象程序设计(OOP)面向对象程序设计(Object-oriented programming)是一种主流的程序设计范型,它 将数据放在第111位, 然后再考虑操作数据的方法,非常适用于解决规模较大的问题。类类(class)是构造对象的模板,通常类中有实例域,构造器和方法三个部分。其中构造器是一种特殊的方法,用于构造并初始化对象。举个例子,笔就是一个类。笔有各种属性,每

2022-04-21 21:08:32 204 1

原创 日撸 Java 三百行: DAY10 综合任务1

0.主题今天完成综合任务1,需要实现两个要求学生成绩的随机生成, 区间为 [50, 100]找出成绩最好、最差的同学。但有挂科的同学不参加评比学生的成绩存放于一个矩阵中,矩阵中第iii行jjj列的值含义为第iii个学生第jjj门课的成绩。1.分析成绩存放学生成绩放在一个矩阵中,可以用一个二维数组来表示该矩阵。成绩生成生成[50,100][ 50, 100 ][50,100]内的伪随机数调用java.util.Random类,使用其中的public int nextInt(int

2022-04-20 18:21:29 1611

原创 日撸 Java 三百行: DAY9 while 语句

0.主题今天主要是熟悉while语句的使用1.程序及运行结果代码如下package basic;public class WhileStatement { /** ******************** * The entrance of the program. * * @param args Not used now. ******************** */ public static void main( String args[ ] ) {

2022-04-19 17:01:31 315

原创 日撸 Java 三百行: DAY8 矩阵乘法

0.主题今天的主题是矩阵乘法,如果两个矩阵满足前一个矩阵的列数与后一个矩阵的行数相等,就可以做乘法。结果矩阵第i行j列的元素为第一个矩阵的第i行元素与第二个矩阵的第j列元素对应值做乘法再求和。例如,一个m行n列的矩阵A和一个n行p列的矩阵B做乘法得到一个m行p列的矩阵C可以表示如下:Cij=∑k=1nAikBkjC_{ij}=\sum_{k=1}^{n}A_{ik}B_{kj}Cij​=k=1∑n​Aik​Bkj​1.矩阵乘法程序代码如下,在进行矩阵乘法之前需要先判断两个矩阵能否做乘,若不能,程序

2022-04-18 21:10:26 289 2

原创 日撸 Java 三百行: DAY7 矩阵元素相加

0.主题今天的代码主要实现了两个方法,第一个是将矩阵内的元素累加并返回最终的和,第二个是将两个矩阵相加并返回新的矩阵。此外,还用到了import,new,二重for循环等知识点。package basic;import java.util.Arrays;public class MatrixAddition { /** ****************** * The entrance of the program. * * @param args Not used

2022-04-17 16:55:14 647 1

原创 日撸 Java 三百行: DAY6 for语句

0.主题今天主要是熟悉for循环。这是一种支持迭代的通用结构,利用每次迭代之后更新的变量来控制迭代次数。1.累加首先附上今天的代码。package basic;public class ForStatement { /** ***************** * The entrance of the program. * * @param args Not used now. ***************** */ public static vo

2022-04-16 18:56:58 58 1

原创 日撸 Java 三百行: DAY5 Switch语句

0.主题今天用一个将百分制成绩转为等级制的程序来熟悉基本switch语句的使用,java中switch语句的使用和C/C++中是一样的。首先附上代码。package basic;public class SwitchStatement { /** ****************** * The entrance of the program * * @param args Not used now. ****************** */ public s

2022-04-15 18:22:15 502 1

原创 日撸 Java 三百行: DAY4 闰年的计算

0.主题今天通过一个判定给出年份是否为闰年的小程序来学习if 语句的嵌套 布尔类型1.程序:闰年的计算首先给出程序代码package basic;public class LeapYear { public static void main( String args[ ] ) { //Test isLeapYear int tempYear = 2021; System.out.print("" + tempYear + " is "); if( !i.

2022-04-14 19:13:13 449 1

原创 日撸 Java 三百行: DAY3 基本If语句

0.主题今天的主题大致包含三块内容掌握基本if语句的使用 了解方法调用 对方法头部的规范注释通过实现一个求绝对值的小程序来过一遍这三个板块。1.If语句求一个数绝对值的逻辑很简单,即当值大于等于0时返回它本身,否则返回它的相反数。首先将程序代码附上。package basic;public class IfStatement { /** ************** * The entrance of the program. * * @param a

2022-04-13 18:46:15 244 1

原创 日撸 Java 三百行: DAY1 AND DAY2

0.前言由闵帆老师发布的教程:日撸 Java 三百行,有助于培养基本的java程序设计能力与良好的代码规范,同时逐渐深入,能够有助于对数据结构、机器学习相关知识的掌握与理解。我从今日开始,跟随此教程进行每日打卡,希望能够坚持下去,并借此使自己的代码能力得到加强,对一些算法的理解更加透彻1.DAY1:环境搭建与HelloWorldEclipse的安装工欲善其事,必先利其器。在进行java程序设计训练之前,首先要安装一个用于java程序开发的集成开发环境eclipse,这一步跟着操作教程走就可以了

2022-04-12 21:35:49 2807 1

空空如也

空空如也

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

TA关注的人

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