- 博客(42)
- 收藏
- 关注
原创 新日撸java三百行` 新手小白java学习记录 `Day1
古人称长江为江,黄河为河。长江水清,黄河水浊,长江在流,黄河也在流。长江之水灌溉了两岸数省之田地,黄河之水也灌溉了数省两岸之田地,只能不因水清而偏用,也只能不因水浊而偏废,自古皆然。
2024-11-13 14:08:39
679
原创 周报2023.7.7
图像识别想要的是局部的信息,比如图片里有猫,有狗,我们希望提取信息的时候是把猫,狗局部分别提取特征,如果用全局信息就会变成猫与狗作为一个整体成为一个新的物种,这不是我们想要的结果,所以不能直接生搬硬套傅里叶变换。由此可以发现:CNN的目的与此相同,也是希望经过卷积后的每个信息点都包含了全局信息,也就是不再那么单纯了是复合型的信息,能被BP很好的发挥!正交性:希尔伯特空间中的向量可以相互正交。回到卷积神经网络的卷积层,我们一般选择3*3的大小,就相当于做了一个限制,所以卷积操作的每一步都是有据可依的。
2023-07-07 20:35:11
243
原创 【无标题】
根据贪心选择策略可知:子问题的最小生成树。中的节点看作为一个节点,则整个网络退化为。假设子问题有一个更优解,即存在。为已被连接的节点集合,则其他节点集合为。中合并的节点还原并加上扩展的边后得到。
2023-03-29 13:32:04
183
原创 机器学习(08)主动学习(ALEC )
如果能每次都做到一条数据一个标签,那自然是很好的,然而在实际运用中面对大量的数据,每一条数据都标记那么花费的成本自然是很高的。若能用少量有限的标签来进行训练学习,并且还能达到不错的效果,自然是很节约成本,这便是主动学习的雏形了,为什么叫主动学习,因为这里的有限个标签是由机器挑选的,而不是程序员给的或者随机的。主动学习最重要的就是标签的选择策略,也就是选择哪些数据的标签进行查看学习,由于学习次数是有限制的,这就要求我们查看标签的时候尽量选择意义重大的、有代表性的数据的标签,就不要去挑那些意义不明的边缘数据。
2022-06-06 21:17:46
524
2
原创 机器学习(07)集成学习
集成学习的大致思路弱分类器:模型比较简单,效果很差的分类器,本次代码里面用到的弱分类器是决策树桩分类器。集成学习就是把很多个弱分类器集中到一起,共同进行决策。
2022-05-31 17:32:10
504
1
原创 机器学习(06)决策树
决策树是什么?为决策而构建的树。决策就是根据不同的条件作出不同的选择,最简单的if语句就是一种决策。下面是一颗决策树:这个图一放出来就一目了然,比如某天是雨天,那么我们就看当天的风力情况,若是大风就不出门,是小风就出门。决策属性的选择在构建一颗决策树的过程中,最重要的就是当前属性的选择。这里需要引入信息熵的概念。熵:事件的不确定性称为熵,不确定性越大,熵越大,确定事件的熵为 0。信息熵的计算公式:...
2022-05-23 11:53:52
262
2
原创 前十日总结
机器学习在干什么?一个字:猜。这里的猜不是乱猜,而是根据已事物的特点,来推测新的事物。这是一种有根据的推测,我自己感觉机器学习与大数据的发展密不可分,机器学习它必然是要学习,没有数据那咋学。KNN与其他算法的区别KNN是惰性学习,它其实只有算法,没有学习过程,在KNN中训练集就是“参考答案”,测试集中的每条数据都会走一遍算法,与训练集中的每条数据在算法的作用下最后得出结果。Kmeans与NB算法都会先用训练集进行学习,然后会得到一个模型,KMeans中这个模型是质心的多维坐标,NB中模型是概率公式.
2022-05-12 22:47:01
244
1
原创 机器学习(05)Naive Bayes(数值型)
有了符号型的基础,数值型就快多了。数值型与符号型的不同点就是数值并不是有限集合,某个数值精确落到某个点上的概率基本为零,但是落到某个区间的概率就可以计算了。比如要在某个学校里面找到一位身高为170.0的同学的概率为0,但是要找到一位身高在169-171之间的同学的概率就不是零了。概率密度函数p(x)p(x)p(x)p(x)p(x)p(x)=pdx\frac{p}{dx}dxp其中ppp为概率,dxdxdx为区间长度,很显然移过去积个分概率就算出来了,由于我们的目的是比较大小,所以完全没有必要算出
2022-05-11 18:48:29
307
1
原创 机器学习(04)Naive Bayes(符号型)
数据集@relation 'mushroom'@attribute a0 {b,c,x,f,k,s}@attribute a1 {f,g,y,s}@attribute a2 {n,b,c,g,r,p,u,e,w,y}@attribute a3 {t,f}@attribute a4 {a,l,c,y,f,m,n,p,s}@attribute a5 {a,d,f,n}@attribute a6 {c,w,d}@attribute a7 {b,n}@attribute a8 {k,n,b,h
2022-05-09 23:52:13
413
原创 日撸java 三百行 趁热打铁(03)kMeans 聚类
KMeans是无监督学习的算法之一,在KNN中我们明确的已经知道了每个数据对象事物分类,而KMeans则没有数据所对应的类别,我们需要将数据中相似的可能是一类的给聚在一起。同一类我们把它称为一个簇。今天用的数据集和之前kNN的是同一个,但是我们要忽略掉类别那一列(最后一列)算法思想:首先我们要虚拟出K个簇心,为了方便,直接取数据集的前K个成为簇心,然后遍历数据集,让每个数据对象都归顺于最近的那个簇心,由于数据变动簇心很可能也会变动(如果不变了,分类也就完成了),当然也有可能运气好第一次随机取的点就是最
2022-05-05 21:51:38
487
1
原创 日撸java 三百行 趁热打铁(02)基于 M-distance 的推荐
日撸java 三百行 趁热打铁(02)基于 M-distance 的推荐knn的变种,基于用户已有的评分来猜测当前的评分,采用的是 leave-one-out 测试方法,要对数据集里的每一个评分都进行一次预测,由于这种测试方法的工作量特别大,所以对算法要求很高或者计算机特别能跑今天的数据集是txt文本,所以不能用weka来帮助我们管理数据,只能手动用java的文件io,数据集是一个二维数组,有三列,第一列表示用户编号,第列表示电影编号,第三列表示用户对电影的评分。首先是构造方法,主要目的是读取文件,并
2022-05-04 20:07:31
491
1
原创 日撸java 三百行 趁热打铁(01)KNN分类器
前两天刚听完闵帆老师的讲座,赶紧趁着热乎开撸。KNN是机器学习里面的入门基础算法之一,但是它的普适性很强,对于新的问题,把KNN拿出来缝缝补补改改它又能战斗了,所以可以把它当做算法检测标杆KNN思想(人类的比较思维):要判断一个未知的事物,可以找一个我们知道并且与之最相似的事物,我们就认为它俩是同一种事物。那么具体落到计算机上要怎么实现呢?其最主要的就是要模拟找相似的过程,对于输入的一个向量,可以考虑衡量它与已知数据的距离,如果距离值越小,就认为两组数组很接近。距离的计算方式常用有两种,曼哈
2022-05-02 18:39:35
876
1
原创 日撸java 三百行 (day 24 )图的m着色问题
问题描述:给定连通图G=(V,E)和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的2个顶点着不同颜色。解决这个问题需要用到回溯法,其实在之前二叉树递归遍历的时候就有了回溯的雏形了,回溯法是一种暴力的搜索方式,与递归密不可分。在图的m着色问题中,我们最终需要的就是一个结果集,这个结果集可能不存在,可能不止一个。运用回溯法找到该结果集,我们可以抽象出一个完全m叉树,接着要做的就类似先序遍历这个完全m叉数。 /** ****
2022-04-28 19:53:38
527
原创 日撸java 三百行 (day 23 )图的深度优先遍历
深度优先遍历可以借用一个辅助栈:今天的测试用例(非强连通图):首先选取顶点D为初始顶点:接着根据邻接矩阵的信息把E压栈:由于D已经被访问过,并且E没有与其余节点相连接,将E出栈,D同理:等D出栈后,队列为空,但是标记数组显示还有顶点未被访问,则程序接着运行:代码及运行效果: /** ********************* * Depth first traversal. * * @param...
2022-04-27 20:25:07
570
1
原创 日撸java 三百行 (day 22 )图的广度优先遍历
图的广度优先遍历和数的广度优先遍历思想上几乎一模一样,都需要借助一个辅助队列,由于图可能出现非连通的情况,需要额外借助一个标记数组,将已经遍历的顶点标记。这样可以保证所有的顶点都被遍历。今天的测试用例(非强连通图):以D为初始顶点:D先进队D出队,B、C进队B出队,A进队C出队,A已经进过队不再进队A出队,B、C已经进过队,不再进队,所有节点都已经遍历过,遍历完成代码接着昨天写: /** *******************..
2022-04-26 19:58:31
397
1
原创 日撸java 三百行 (day 21 )图的连通性检测
图由顶点集V ( G )与边集E( G )构成,通常表示为: G = ( V , E ) ;有向图:边集E中都是有向边的图无向图:边集E中都是无向边的图如果图中任意两个节点之间存在通路,那么这个图就是连通图(有向图叫全连通图,这里统一称连通图)。我们要检测一个图是否是连通图,首先的知道图的存储方式之一:邻接矩阵。邻接矩阵可以表示出两两节点之间的关系(0表示无通路,1表示存在通路),但是只通过邻接矩阵没有办法判断该图是否连通;如A到C之间虽然没有直接通路,但是却可以通过顶点B间..
2022-04-25 20:08:46
1187
1
原创 日撸java 三百行 (day 20 )辅助矩阵类
接下来的几天进入了图的代码学习,今天是准备工作,需要写出一个辅助类IntMatrix,里面包含了矩阵的基本操作。package com.day20;import java.security.PublicKey;import java.util.Arrays;public class IntMatrix { /** * the data */ int data[][]; /** * ******************** *
2022-04-24 17:38:07
409
1
原创 日撸java 三百行 (day 19)哈夫曼编码 (03编码与解码)
接着昨天,当哈夫曼树建立后,我们就要对其进行编码。此时我们的数据被存放在叶子节点,规定从根节点开始,到叶子节点结束,每条路径上向左记为0,向右记为1。a:000b:001同理:c:01;d:1编码的时候从叶子节点到根节点,解码的时候从根节点到叶子节点 /** * ******************** * Generate codes for each character in the alphabet. * ******************
2022-04-23 20:38:11
264
1
原创 日撸java 三百行 (day 18 )哈夫曼编码 (02建树)
昨天已经把基本准备工作做完了,今天主要是建立哈夫曼树。第一步:创建叶子节点,将字符与对应的权值赋值给叶子节点 第二步:通过两个for循环建立哈夫曼树。外层循环 i 代表非叶子节点,内层循环 j 依次遍历当前已经存在的节点,两个内层循环可以选出其中权值最小的两个节点(这里需要一个标记数组,为了避免重复选择同一个),将两个权值最小的节点相加得到其父节点,最后连接其父子关系。具体过程如下图:/** ********************* ...
2022-04-22 20:27:17
428
1
原创 日撸java 三百行 (day 17 )哈夫曼编码 (01定义+文件预处理)
哈夫曼编码是哈夫曼树的应用之一编码是计算机很重要的步骤,编码分为等长编码与不等长编码。等长编码顾名思义,对于不同的编码对象所对应的长度相同,优点就是简单暴力,众生平等,缺点也很明显我们所有的编码长度都是以最长的编码为基准,比较浪费不等长编码就得需要精心设计,哈夫曼编码就属于不等长编码。哈夫曼编码是一种可以被唯一解读的二进制编码 频率低的采用短编码,频率高的采用长编码今天主要是节点的定义、文件读取与节点数组的确定(预处理)package com.day17;import java
2022-04-21 20:42:49
316
1
原创 日撸java 三百行 (day 16 )Hanoi 塔问题
游戏规则:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要将A杆子上的圆盘复刻到C上,并且一次只能移动一个圆盘。比较经典的算法,基本都知道分析:1:当A上圆盘数n=1时,直接放入C即可2:当A上圆盘数n>1时,需要借助辅助杆B1)n=2,...
2022-04-21 10:54:16
118
1
原创 日撸java 三百行 (day 15 )二叉树的先、后序遍历(栈)
今天的任务是不用递归完成二叉树的先序、后序遍历;先序遍历和昨天的中序差不多,改一下输出语句的位置就行。 /** * ******************** * 先序遍历(栈) * * @return void * ******************** */ public void preOrderVisitWithStack() { ObjectStack tempStack = new ObjectSta
2022-04-19 18:55:36
81
1
原创 日撸java 三百行 (day 14 )二叉树的中序遍历(栈)
今天是用非递归的方式遍历二叉树,需要借助一个辅助栈;首先建立一个object类型的栈,并添加一个判定栈空的方法 isempty()。package com.day07;/** * Circle int queue. */public class ObjectStack { /** * The depth. */ public static final int MAX = 10; /** * The data */
2022-04-18 17:55:46
356
1
原创 日撸java 三百行 (day 13 )二叉树的建立
昨天二叉树的存储为今天的二叉树创建做了铺垫,即从两个数组中抽象出二叉树。只要把昨天的理清了,今天就不是特别难。声明一个双参构造方法,参数为二叉树节点值数组与索引数组 /** ********************* * 第二个构造方法 通过参数创建二叉树 * * @param paraDataArray 节点值数组 * @param paraIndicesArray 索引数组 *********************
2022-04-17 18:48:26
490
原创 日撸java 三百行 (day 12 )二叉树的存储
今天的代码联动性比较强,需要用到辅助队列(之前写的改一下就派上用场),目标是要存储一颗二叉树。根据老师的描述:我们可以完全满二叉树的角度广度优先遍历的角度来考虑这个问题: 每个节点都有一个 name 及其在二叉树中的位置. 令根节点的位置为 0; 则第 2 层节点的位置依次为 1 至 2; 第 3 层节点的位置依次为 3 至 6. 以此类推.把昨天那个例子所对应的二叉树画出来, 我们有两种方法:空使用 0 来表示, 可以用一个向量来存储:[a, b, c, 0, d, e, 0, 0, 0, f
2022-04-16 19:45:13
492
1
原创 日撸java 三百行 (day 11 )二叉树及其基本操作
今天开启新篇章,进入树这一数据结构,主要是递归操作。二叉树作为树的代表,是一种常用的数据结构,其所有节点的度最多为2。二叉树的三种遍历先序遍历:根、左、右中序遍历:左、根、右后序遍历:左、右、根记忆技巧:左右位置相对不变,根的位置与之遍历名字相对应。先序遍历是在递的过程中输出节点,中序与后序则是在归的过程中输出节点二叉树求高度与求节点数则是在归过程中通过相应的计数操作得到先序遍历图(中、后同理):package com.day11;...
2022-04-15 18:51:11
988
1
原创 日撸java 三百行 (day 10 )字符串匹配与总结
今天仿写了String类中的两个方法,一个是字符串匹配,一个是字符串截取;字符串匹配使用的值最简单的暴力循环,逐个比对;字符串截取是将要截取字符串放入自己定义的类的char型数组中。package com.day10;/** * 自己封装一个类似String类的day_10MyString类. * 本质上是char类型的顺序表. */public class day10_MyString { /** * 最大长度默认20. */ public stat
2022-04-14 19:27:53
724
1
原创 日撸java 三百行 (day 09 )队列
队列也是一种受限线性表,其特点是先进队的元素先出队链队列package com.day09;/** * 链队列. */public class day09_LinkedQueue { /** * 队列的长度 */ int length = 0; /** * 内部类 */ class Node { /** * 数据域 */ int data;
2022-04-13 18:56:02
974
2
原创 日撸java 三百行 (day 08 )递归
递归:程序调用自己,通过不断将问题分解,将问题规模逐步减小、分解为简单容易处理的情况。递归有两个过程:递去与归来。递去的过程不断分解问题规模直到到达临界位置后开始归来,返回到原点。解决问题时,可以在递的过程中解决,也可以在归的过程中解决。案列一 递归求和 /** ********************* * 递归求和 * * @param paraValue * 传入参数. * @return The su
2022-04-12 16:33:49
515
1
原创 日撸java 三百行 (day 07 )栈及其应用(括号匹配)
栈是一种受限的线性表,我们规定:栈只能在表尾进行插入或者删除,由此可知,栈有着先进后出的特性,栈一般拥有入栈(push)与出栈(pop)操作括号匹配任务描述: 检查一个字符串的括号是否匹配. 所谓匹配, 是指每个左括号有相应的一个右括号与之对应, 且左括号不可以出现在右括号右边. 可以修改测试字符串, 检查不同情况下的运行.package com.day07;/* * 顺序栈的实现 * 栈的应用之括号匹配 */public class day07_charStack { /
2022-04-11 18:36:45
152
2
原创 日撸java 三百行 (day 06 )单链表
链表作为线性表的半壁江山,链表与顺序表的逻辑结构是相同的,但是存储结构却不一样。顺序表需要一块连续的内存空间,当我们已知这块内存的起始位置时,可以根据线性表的特性推很容易拿到每一个位置的值 单链表在内存中则不一定是连续的,每个节点都会牺牲一定的空间来存放下一个节点的位置,这样无限套娃下去便形成了一种链式结构。由其特性不难知道:链表不能由起始位置直接推断出剩下节点的位置,只能顺藤摸瓜慢慢找。单链表中每个节点已知的信息只有自己的节点值与自己的下一个节点的位置,其余信息一概不知。package com.
2022-04-10 14:53:16
595
1
原创 日撸java 三百行 (day 05 )顺序表(二)
今天在成功建立顺序表的基础上实现顺序表的基本操作:增、删、改、查增操作:在给定位置增加元素. 如果线性表已满, 或位置不在已有位置范围之内, 就拒绝增加. 该位置可以是在最后一个元素之后一个. /** ********************* * Insert a value to a position. If the list is already full, do nothing. * * @param paraPosition The given p
2022-04-09 14:14:24
720
1
原创 日撸java 三百行 (day 04 )顺序表(一)
顺序表的创建,之前的数据结构都是用c语言写的,今天第一次用java,看了闵帆老师对 '对象' 的理解我之前一直将这两个用来对比:c中的malloc函数作用在结构体上是否与java中new对象效果相似。如果相似为什么要专门搞出一个面向对象编程,但看了老师的解释后,我明白了 结构体里只有数据,而对象里面不只有数据,还有对于数据的操作,当数据与操作绑为一体时,自然成为面向对象编程。package com.day04;/** 使用java创建一个顺序表*/public class Sequentia.
2022-04-08 12:29:35
662
2
原创 日撸 Java 三百行 (day03 Java基础)
今天是java基础语法的收尾,以一个综合任务画句号。综合任务一学生的成绩存放于一个矩阵,其中行表示学生,列表示科目。如:第 0 行表示第 0 个学生的数学、语文、英语成绩。要求:进行学生成绩的随机生成, 区间为 [50, 100]. 找出成绩最好、最差的同学。但有挂科的同学不参加评比.(60分为及格线)过程分析:数据结构选择二维数组,以行号 i 表示不同的学生,列号 j 表示不同的科目代码:package com.day03;import java.util.Arrays;i
2022-04-07 14:48:35
2026
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人