- 博客(33)
- 收藏
- 关注
原创 机器学习——主成分分析(PCA)
给定n个样本(每个样本维度为p维):定义为样本在第一主成分/主方向a1上的投影:其中我们的目标是找到a1, 使z1的方差最大。ORL人脸数据集一共包含40个不同人的400张图像,此数据集下包含40个目录,每个目录下有10张图像,每个目录表示一个不同的人。所有的图像是以PGM格式存储,灰度图,图像大小宽度为92,高度为112。主成分分析(PCA)是一种常用的多变量数据降维技术,具有广泛的应用领域。
2024-01-01 20:00:08
1836
1
原创 MyBatis应用
遇到的问题:因为maven默认只拷贝resources下的xml及小配置文件。现在我们的配置文件放在了java源文件的包中,因此出错。需要在pom文件中设置resources以及resource,让maven去拷贝我们需要的文件到classpath路径下。
2023-12-26 20:18:03
947
原创 Spring MVC应用
遇到问题:解决方法:再创建一个process的servlet来接受WEB-INF中的资源跳转。本次实验旨在学习Spring MVC和Spring框架的配置以及进行代码重构的过程。主要包括了对Spring MVC的配置、注解方式的请求映射、以及代码重构的步骤。在实验中,首先进行了配置文件的编辑,包括ApplicationContext.xml和web.xml,确保Spring容器和Spring MVC能够正确初始化。在配置文件中进行了包扫描、数据源配置和事务管理的设置,为后续的项目搭建奠定基础。
2023-12-22 11:29:15
974
原创 Spring与Servlet的整合
掌握Spring的配置、Bean的配置、实例化与装配方式;理解AspectJ框架来进行AOP开发;掌握Spring JDBCTemplate的常用方法;理解Spring的事务管理。
2023-12-21 11:00:57
1254
原创 机器学习——支持向量机
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。在这个实验中,我探索了支持向量机(Support Vector Machine,SVM)算法,并成功地将其应用于垃圾邮件分类任务。
2023-12-18 20:50:04
967
原创 DAO设计模式的应用
在实验中,我们首先了解了DAO设计模式的概念和作用。DAO设计模式是一种用于抽象和封装数据访问细节的模式,它将数据访问逻辑与业务逻辑分离,提高了代码的可维护性和可扩展性。接下来,我们设计了DAO接口,该接口定义了对数据库进行增删改查操作的方法。比如,我们可以创建一个名为"UserDAO"的接口,其中包含了创建用户、读取用户、更新用户和删除用户等方法声明。然后,我们实现了DAO接口。
2023-12-17 08:49:23
142
原创 操作系统——进程同步
本次实验通过实现生产者-消费者模型,结合共享内存和信号量的使用,加深了对进程间通信和同步互斥的理解。在实验中,我们通过使用shmget函数创建了一个共享内存段,并使用shmat函数将其连接到进程的地址空间中。这样,多个生产者和消费者进程就可以通过共享内存进行数据的读写操作。为了保证多个进程之间的代码执行顺序和访问资源的互斥性,我们还使用了信号量来实现进程间的同步与互斥。通过在关键代码段前后使用semop函数对信号量进行等待和释放操作,可以确保进程之间的操作是有序的。
2023-12-14 21:41:45
121
原创 JSP存取数据库
在本次实验中,我使用JSP和JDBC技术完成了一个用户登录程序,并实现了对一张表的添加、删除、查找和修改操作。通过这个实验,我深入了解了JSP和JDBC的工作原理和使用方法。首先,我创建了一个用户登录页面,包括用户名和密码的输入框以及登录按钮。当用户点击登录按钮时,JSP页面会将用户输入的用户名和密码传递给后台处理。在后台代码中,我首先通过JDBC连接数据库,并根据用户输入的用户名和密码查询数据库中是否存在匹配的用户。如果存在,则登录成功,跳转到另一个页面;
2023-12-12 09:43:10
422
原创 Web的运行环境配置和简单的Web页面实现
这个实验是我在学习Web开发过程中的一次实践性学习,主要包括两个部分:安装Web开发工具并进行初步配置,以及学习HTML基础控件、制作简单HTML页面并部署到Tomcat服务器上运行。首先,我按照指导,选择了适合我的操作系统的Web开发工具,并进行了安装。在安装过程中,我遇到了一些依赖库版本不匹配的问题,需要手动调整配置。通过查阅官方文档和进行一些实验,最终成功地完成了安装。在安装完成后,我对工具进行了初步配置,包括设置默认编码、安装必要的插件等,确保可以顺利进行后续的开发工作。接着。
2023-12-08 19:32:00
280
原创 进程高级通讯
第一个实验的设计原理:创建一条管道,子进程写入数据,父进程写出数据。在父进程中使用 wait() 函数,这样在子进程执行完毕之前,父进程一直要等待。调用pipe()建立一条管道,两个子进程分别向管道写入一句话,在父进程中使用wait()函数,使父进程等待子进程执行结束,依次输出P1、P2发来的消息。第二个实验的消息队列方式:(1)用一个程序作为“引子”,先后fork()两个进程,SERVER和CLIENT,进行通信(2)SERVER端建立一个Key为75的消息队列,等待其他进程发来的消息。
2023-12-07 15:22:40
59
原创 A*算法求解实验
通过本次实验,发现选用不同的启发函数,对于实验的结果有较大的影响。选用第一或第二种(也就是采用A*算法)远远优于普通的广度优先搜索,同时,明显的感觉到第二种启发函数效率更高,更快的找到最优解。但是,在实验过程中,也遇到了一些问题,比如初始值的八数码初始值的选择对于实验结果的影响很大,在选取一些样例时,比如,实验结果达到20000次依然没有停止,无法比较两种启发函数的优越性,鉴于时间原因,选取一些迭代次数较小就可以达到目标状态的样例进行验证,发现第二种结果优于第一种启发函数的结果。A*
2023-12-04 16:03:08
1466
原创 机器学习——Logistic回归
Logistic回归是一种十分常见的分类模型,是的严格来说这是一个分类模型,之所以叫做回归也是由于历史原因。不同于线性回归中对于参数的推导,我们在这里运用的方式不再是最小二乘法,而是极大似然估计。逻辑斯谛回归(logistic regression)是统计学习中的经典分类方法,属于对数线性模型,所以也被称为对数几率回归。这里要注意,虽然带有回归的字眼,但是该模型是一种分类算法,逻辑斯谛回归是一种线性分类器,针对的是线性可分问题。
2023-12-02 02:34:20
390
原创 图像灰度变换和空间滤波
这次实验涵盖了图像处理的多个关键技术,包括对比度拉伸、直方图分析、直方图均衡化、直方图规定化以及相关和卷积计算。通过实验,我们深入了解了这些技术的原理和应用,并使用Matlab编写了相应的程序来完成实验任务,通过代码的编写和相应的输出,我对这些知识点的理解比实验前更加深刻了,也对书本上的知识有了更深刻的了解,以下是对每个实验的总结:1.对比度拉伸:在第一个实验中,利用对比度拉伸函数来提取图像的高亮度区域。
2023-12-01 00:42:27
173
原创 图像频域变换
通过本次实验,我理解了频域滤波的基本原理:频域滤波是一种基于图像在频率域上的变换和处理的方法。它通过对图像进行傅立叶变换,将图像转换为频率域表示,然后根据需要设计和应用不同类型的滤波器,最后再进行傅立叶逆变换,得到滤波后的图像。掌握了傅立叶变换及其逆变换的操作:傅立叶变换是将一个函数从时域转换到频域的过程,傅立叶逆变换则是将一个函数从频域转换回时域。在实验中,我学会了使用MATLAB函数进行傅立叶变换及逆变换,并且观察了频域图像的幅度和相位分布。
2023-11-28 22:16:59
1412
原创 logsim实验一
运算器的实验虽然关数较多,但是关关相扣,每一关都是建立在上一关的基础上来实现,当真正搞懂之后会发现其实真的不难,而且这一关关通过获得的成就感真的让人很有动力。每个电路实现的背后都有自己的原理,加法器、乘法器的实现也都是基于书上的知识,这种把理论知识在电路上实现的感觉也很有成就感。虽然在实验过程中遇到了很多问题,特别是出现了一些基础的错误,但是在最后完成实验的那一瞬间内心真的很开心。每次实验都会遇到各种各样的困难,有些问题同学们讨论不出结果可以自行上网查找,如果还是得不出结果可以向老师请教。
2023-11-25 09:23:07
2519
原创 粒子群算法实验
粒子群算法本质是一种随机搜索算法,它是一种新兴的智能优化技术。该算法能以较大概率收敛于全局最优解,它适合在动态、多目标优化环境中寻优,与传统优化算法相比,具有较快的计算速度和更好的全局搜索能力。它有以下的四个特点:1)粒子群算法是基于群智能理论的优化算法,通过群体中粒子间的合作与竞争产生的群体智能指导优化搜索。与其他算法相比,粒子群算法是一种高效的并行搜索算法。2)粒子群算法与遗传算法都是随机初始化种群,使用适应值来评价个体的优劣程度和进行一定的随机搜索。
2023-11-23 21:19:19
210
原创 机器学习——朴素贝叶斯
贝叶斯分类算法是统计学中的一种概率分类方法,朴素贝叶斯分类是贝叶斯分类中最简单的一种。其分类原理就是利用贝叶斯公式根据某特征的先验概率计算出其后验概率,然后选择具有最大后验概率作为该特征所属的类。之所以称之为“朴素”,是因为贝叶斯分类只做最原始、最简单的假设:所有的特征之间是相对独立的。朴素贝叶斯算法是一种基于概率的分类算法,常用于文本分类问题。其应用是十分广泛的,并且大多数情况下分类预测效果较好,训练速度较快。该算法基于贝叶斯公式和朴素假设,能够高效地进行分类。
2023-11-20 20:10:22
363
1
原创 java入门实验
1.代码调试中产生的错误及原因分析错误:对equals()函数的使用,相同的变量也输出false;原因,两个变量需是同一类的变量,即类型需要相同才会返回true。2.实验中遇到的设计问题及解决方法感觉实验里面挺多个实验内容我没有完成的,比如实验第二部分对于Mypoint.java我就实现的不是很好。我自行查阅了csdn,发现有些知识好像老师还没有教,而我对其 使用也不熟练,甚至是不会使用,所以实验完成的不是特别好,但我已经尽力完成了。3.实验体会和收获。
2023-11-18 11:58:21
107
1
原创 基于搜索的算法
1、请从你实现的级别中选择一题,按照你的实现绘制搜索树。2、你觉得回溯法和蛮力搜索有相同点吗?有不同点吗?请举例说明。有,都是基于尝试探索。不同点:穷举法是要将一个解的全部选项生成后判断是否满足,不满足再去尝试其他解,而回溯法,他的每个解是逐步生成的,会根据约束条件和限界条件来经行减枝和回溯。具体的归纳如下:都是穷举搜索:回溯法和蛮力搜索都是通过遍历所有可能的解空间来求解问题,它们不依赖于问题的特定性质或结构,而是通过尝试不同的选择组合来找到解决方案。
2023-11-16 18:03:58
107
1
原创 综合实验(一维最近对、最大子段和)
将字段分成大小差不多的两个区间,最大字段出现的情况有三种,一种是前半段区间,一种是后半段区间,一种是两段区间的和,利用递归不断的吧区间分为两部分,每次分完都对前半段、后半段求解,对前半段、后半段、前半段和后半段的和三个大小经行比较,最后即可得出结果。的话,将数的区间分成大致相等的两部分,最近点对出现的的位置有三种情况,第一种在前半区,第二种在后半区,第三种就是一个点在前半区,一个点在后半区,结合这三种情况分析后即可得出答案。,顾名思义,就是很蛮力,我们直接别求解所有相邻点对的距离,找到最近点对。
2023-11-14 19:59:36
166
1
原创 贪心法详细解读
1 理解贪心法的特征(最优子结构\贪心选择\局部最优)2 理解贪心法的求解(划分过程\根据贪心策略做出选择,规模变小\求解子问题)3 掌握贪心法的简单实现和时间复杂度分析。
2023-11-11 18:44:37
103
1
原创 动态规划法
1.如果用分治函数实现斐波那契数列,该函数被调用几次?而用自顶向下递归备忘实现时,该函数又被调用几次?自底向上迭代填表时,又被调用几次?请你给出1个n的具体值,画图回答以上问题。2.请从你实现的级别中选择一题,说明动态规划法的解决过程(划分阶段、逆向推导、正向计算),再针对实现说明是自底向上或是自顶向下。(例:级别为“中”,就从走棋盘或者找零钱中选择一道题来分析。挖金矿问题:填表法:填充一人一个金矿,一人两个金矿,两个一个金矿…n人m个金矿获得的最大值,最后即为所求。自底向上实现。
2023-11-08 21:39:41
85
1
原创 机器学习——决策树
决策树(Decision Tree),它是一种以树形数据结构来展示决策规则和分类结果的模型,作为一种归纳学习算法,其重点是将看似无序、杂乱的已知数据,通过某种技术手段将它们转化成可以预测未知数据的树状模型,每一条从根结点(对最终分类结果贡献最大的属性)到叶子结点(最终分类结果)的路径都代表一条决策的规则。决策树是一种解决分类问题的算法,基于树的结构进行决策,从根节点开始,沿着划分属性进行分支,直到叶节点。根节点:包含样本的全集。
2023-11-06 20:30:01
436
原创 代码打卡(7)——减治法
思路:先将前n-1个排完序再将第n个数有序插入,对于前n-1个数排序,先将前n-2个数排完序,再将第n-1个数有序插入,以此类推,问题分为两个部分,将n个数据分解成n-1和第n个数,将第n个数插入n-1个数中,对于分解过程,如果分解到一个数即为排序成功,再将第二个数、第三个数…思路:在所给的low-high的范围内,求其中点mid = (low+high)/2,比较a[mid]和k的的大小,如果a[mid]>k则在low-mid的范围寻找,反之则在mid+1-high范围寻找,找到之后返回下标mid。
2023-11-05 20:13:52
489
原创 代码打卡(6)——深度学习入门之数据处理
本次实验是是和数据处理相关的实验,首先学习了数据操作,学习了张量torch及其的使用,学会了广播机制以及和numpy的转换。然后学习了自动求梯度,利用已有函数对其追踪,反向传播等操作来计算梯度,最后学习了线性代数基础:标量、向量、矩阵的转置、Hadamard积、点积等,我发现在此次的学习中张量贯穿始终,由此可见张量的重要。在深度学习中,张量是我们处理和表示数据的基本单位。熟悉张量操作是掌握深度学习框架的关键。
2023-11-04 14:59:54
61
1
原创 代码打卡(5)——分治法
1.分治法实现的复杂度一定比蛮力法优吗?举例说明。不一定,对于一维数组求和来说,蛮力法和分治法的复杂度都是O(n)2.分治法实现一定要用递归吗?你能实现一个不用递归的分治吗?不一定,用循环迭代的方法实现快速排序也是分治的一种。3.假定原问题的规模为n,分解的子问题的规模为n/b,分解的子问题的个数为a,a与b之间的大小关系如何,举例说明。a==b,把一个规模为n的一位数组,分为规模为n/2的子问题,则把问题的个数分成了2个->a==b。4.通过实验叙述你对分治法的理解及其优缺点。
2023-11-03 19:19:29
187
原创 代码打卡(4)——蛮力法
蛮力思路清晰简单,便于读者理解,便于实现,把一个问题实现的所有情况都列举出来,选择符合条件的情况,类似于数学中的穷举法。缺点是:代码运行的时间较长,时间复杂度较高,代码效率较低,适合规模较小的问题。对于百元买百鸡:在计算第三种鸡时可以用100-x-y计算,这样可以减少一层循环。
2023-11-02 22:31:46
306
原创 代码打卡(3)——Huffuman编码
Huffman 编码是一种常用的数据压缩算法,通过对频率较高的字符使用较短的编码,从而实现对原始数据的有效压缩。本次实验我们实现了 Huffman 编码的过程,并进行了编码和解码的操作。在实验中,我们首先统计了输入文本中每个字符的出现频率。然后,根据字符频率构建了 Huffman 树,并生成了 Huffman 字典,其中记录了每个字符对应的编码方式。在编码过程中,将原始文本转换为符号数组,并使用 Huffman 字典将其编码为比特位序列。编码后的数据以比特位形式保存到一个文件中,以便后续的存储和传输。
2023-11-01 22:25:16
109
1
原创 代码打卡(2)——水仙花数求解
今天写了一题求水仙花数的题目,突然想起来这是我刚学习c语言时比较难的一道题目,当时觉得这道题真的是非常难的一道题目了,但是今天写起来却觉得它十分简单,就是感觉思路很清晰,写起来十分轻松,不禁让我很感慨,以前觉得如此困难的事情,过了一段时间之后你会发现在现在的你看来已经没那么折磨你了。(不感慨了来看题目吧)
2023-10-31 21:51:19
87
1
原创 代码打卡(1)——基于hough变换的图像边缘提取
本次实验基于霍夫变换实现了图像边缘检测和直线检测的功能,通过Matlab进行编程实现。主要的步骤包括读取图像、转换为灰度图像、使用Canny算子进行边缘检测、使用霍夫变换进行直线检测、计算直线的矢量化特征、在图像上绘制检测到的直线并输出结果。通过本次实验,我们学习到了以下内容:图像处理基础:了解了图像处理的基本原理和常用算法,如边缘检测、霍夫变换等。Matlab编程技巧:掌握了一些Matlab编程的技巧和方法,如读取图像、图像处理和可视化等,并应用这些技巧完成了本次实验。
2023-10-30 19:39:57
789
原创 机器学习——ROC曲线、PR曲线
目录背景介绍ROC曲线介绍深入ROC曲线的主要用途及其优点补充PR曲线介绍深入使用场景ROC曲线和PR曲线关系具体实现ROC曲线的实现PR曲线的实现实验总结ROC曲线(receiver operating characteristic)是一种对于灵敏度进行描述的功能图像,又称为感受性曲线(sensitivity curve。ROC曲线可以通过描述真阳性率(TPR)和假阳性率(FPR)来实现。由于是通过比较两个操作特征(TPR和FPR)作为标准,ROC曲线也叫做相关操作特征曲线。
2023-10-20 21:00:12
2777
2
原创 KNN算法(K近邻算法)
KNN(K-Nearest Neighbor)即K邻近法,是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类,用老话说:“人以群分,物以类聚”。KNN 算法是有监督学习中的分类算法,它看起来和另一个机器学习算法 K-means 有点像(K-means 是无监督学习算法),但却是有本质区别的。
2023-10-09 20:24:57
8887
1
原创 机器学习环境搭建(vscode+anaconda的安装+conda虚拟环境的激活)
环境复制:通过创建虚拟环境,可以轻松地复制整个开发环境,包括特定版本的Python解释器和所有安装的软件包。conda创建虚拟环境的作用是为了在同一个系统中可以隔离和管理不同的项目所需的依赖关系和软件包。版本控制:通过将虚拟环境与版本控制系统结合使用,可以确保项目的开发和部署环境始终保持一致,从而避免由于依赖项不一致而导致的问题。总的来说,conda创建虚拟环境可以提供一个干净、独立和可重现的开发环境,有助于简化项目管理和依赖项管理。test为你创建虚拟环境的名称,运行后既可以进入刚刚创建的虚拟环境。
2023-09-25 21:53:19
757
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人