自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [JAVA]从零开始创建个人博客——环境搭建

博客第一阶段

2022-11-30 20:54:18 863 1

原创 EM算法总结

EM算法是一种优化迭代策略,最适合数据集不完全的情况, 常用来预测高斯混合模型的参数,隐式马尔科夫,该算法分为E步(期望步)和M布(极大步)。基本思想是:先根据已经观测的数据,估计出模型的参数,然后使用这些参数,估计缺失的数据,将缺失的数据和已经观测的数据再重新估计参数,如此反复,直到收敛。算法步骤:(1)随机初始化模型参数的初值,设置最大迭代次数,输入观测数据X,联合分布p(x,z;),条件分布p(z|x,),这里z就是观测不到的数据,x是可以观测的数据。(2)E步骤:求解,如果是混合高斯分布

2021-10-07 16:09:21 292

原创 Dynamic inner PCA 和 Dynamic PCA

动态PCA方法的核心思想:将数据X变成增广矩阵,即:l为潜在变量数,然后对X进行传统的PCA方法进行求解,即是动态PCA的结果。动态内模PCA与之不同,上述动态PCA的一大缺陷是增加了数据的维度,而动态内模PCA并没有这种问题。他的核心思想:其实相当于对tk进行动态分析,这个也是我认为动态内模的核心所在,如果理解错误还望指正。DIPCA算法流程如下所示:参考文献:Yining Dong and S. Joe Qin. A novel dynamic PCA al.

2021-10-07 11:16:13 1935 2

原创 KPCA算法+python实现

KPCA核心:用核函数将数据实现非线性映射,然后再使用PCA进行降维核函数有很多,这里选择常用的高斯核函数:得到K之后需要对K进行中心化处理:得到之后对K'求出其特征向量和特征值,将特征向量和特征值从大到小排序,根据参数选择的主成分来裁切部分。与PCA不同的是,得出的特征向量并不是投影的坐标轴,而是投影出来的坐标。参考代码如下:def rbf_kernel_pca(X,gammas,components): #计算欧式距离的平方 sq_dist = pdist(

2021-10-06 15:40:16 5043 2

原创 《Automated Evolutionary Approach for the Design of Composite Machine LearningPipelines》笔记

目标: 设计机器学习管道(自动化生成具有复杂结构的数据驱动模型)原因: 构造复合管道是一项复杂耗时的任务,现有的机器学习实现缺乏自动化,需要人为选择特 征选择方式,构建模型。优化公式: f是适应函数,在限制时间内最大的适应值,为所有可能的管道结构,为最优结构。六大问题: 1、在实际问题中复合结构不清楚是否优于简单结构 2、仍然没有统一的方式...

2021-10-05 15:14:53 88

原创 leecode做题笔记32————最长的有效括号

一开始看到这个题目的时候,由于之前做到过判断是否为有效括号的题目,所以我想到了用栈的思想,编写代码。但是,从这个思路走下去,必须把整个字符串分解为各个有效部分,分别判断,求取最长,比较麻烦。后来看到题解的方法,是先在栈里面放进去了一个(-1).这个想法很好。具体代码如下:class Solution {public: int longestValidParentheses(string s) { int maxans = 0; stack<int

2021-06-14 20:10:41 122

原创 leecode做题笔记23————合并K个升序链表

题目描述:一开始思路并不是很明确,后来想起来之前做过合并两个数组的题目,所以可以一直两两合并,直到结束,得到最终的结果。但是我之前写的合并两个链表的代码会导致运算超过时间限制。用官方题解的就不会。附上官方代码:class Solution {public: ListNode* mergeTwoLists(ListNode* a, ListNode* b) { if ((!a) || (!b)) return a ? a : b; ListNode he

2021-05-30 16:07:41 80

原创 leecode做题笔记21————合并两个有序的链表

题目描述如下:这道题很容易想到通过比较单个链表对应的值,选择小的值填入新的链表中,并往后迭代一次。做题时碰到的问题是创建新的链表时,使用head=head->next导致head链表没有连续起来,已知都是大小为1。所以需要两个链表联合使用。即: void add(ListNode*& head, ListNode*& cur, ListNode*& s) { if (head == NULL) {

2021-05-20 11:05:41 120

原创 leecode做题笔记20————有效的括号

题目的描述:一开始我的想法是for循环,if语句判断括号类型,但是示例s = "([)]",表明了括号顺序的重要性。根据括号排布的顺序,表明了需要用栈来表示,即先入后出的性质。但是后续具体代码尝试失败。观看题解,发现使用了unordered_map,哈希表。这一点是我没有预想到的。具体代码思想是首先判断字符串长度是否为偶数,奇数的话直接返回0。然后判断字符串里面的括号,若为({【这三种括号,则进行入栈操作,如果是)}】这三种括号,则将其与出栈后的字符进行比较。具体代码如下所示:clas

2021-05-19 17:22:38 212

原创 leecode做题笔记19————删除链表的倒数第 N 个结点

题目描述如下:这道题由于上一题的递归思想的影响,所以想通过递归去解决这个问题。首先需要知道链表的长度,也通过递归来实现,然后通过链表长度和倒数第n个,可以求出目标位置,若链表到达目标位置,则直接进行跳过。具体代码如下所示:class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { int sz=0; int pos=-1; list

2021-05-18 19:54:38 88

原创 模式识别看书笔记1————线性分类器

今天第一节看的是关于随机逼近法和LMS法上一节中我们设定了均方误差MSE(期待值与真实值之间的差的平方的期望):,目的是将其最小化,,这样的话,求解导数为0时候的w,可以求解出来。均方差估计通过的是求解相关矩阵,来求解。随机逼近法采用迭代方法来进行求解。即。xk为随机向量序列,w为未知参数向量,F(-,-)为一个函数。LMS算法是基于上式的改进,即。第二节,误差平方和估计(期待值与实际值的差的平方和):记住公式:即可。例题:...

2021-05-17 21:07:56 150

原创 leecode做题笔记17————电话号码的字母组合

题目如下所示:一开始的想法是通过循环遍历算法,但是每次循环的次数,由于每个数字包含的字母并不相同,所以会很麻烦。于是想到了使用递归的思想,但是由于本身递归算法使用的不够熟练,所以并没有写出成功的代码,参考了题解中一位大哥的代码。这个里面我需要认识到的是,所谓递归就是很多循环,那么本题的思路就是将每个循环中的字符单独相加。参考代码如下,更好理解:class Solution {public: vector<string> ans; // 设为全局变量,方便helper函

2021-05-17 19:56:40 118

原创 leecode做题笔记15————三数之和

题目如下所示:一开始我的想法是先对数组进行排序,然后针对其中数组大小小于3的特例返回空,寻找三个元素的方法是通过两个for循环,首先设置i和j,计算两个位置对应元素之和,然后在数组中用find函数,寻找它的相反数,这种方法还没有考虑到重复性的问题,所以会导致所求解出来的结果有重复。所以我加上了如果第i个与第i+1相同则跳过的程序,但是会导致有些符合条件的元素没有被选中。最终选择通过官方解法,排序加双指针。需要强调的是,以后求解需要有双指针的思维,不能总是暴力求解。算法流程出自评论区的一个老哥

2021-05-16 15:43:21 92

原创 leecode做题笔记10————正则表达式匹配

题目叙述如下:一开始的思路是首先处理‘*’字符,对p字符进行‘*’的搜索,得到‘*’的位置,然后根据和对应s字符是否符合要求进行删除和赋值操作,将改变后的p字符与s字符进行匹配。但是针对示例s='aaa',p='ab*a*c*a"这种情况,会出现修改后的p字符串变成‘aaaa’造成不匹配。所以该算法不符合要求。后来通过官方题解动态规划求解。所谓动态规划,重要的是构造出状态表达式,这个里面的f[i][j]表示的是前i个,前j个字符是否匹配。所以重要的是动态规划,状态方程的这个思路,需要在以后好好吸

2021-05-15 20:58:09 176

原创 leecode做题笔记11————盛最多的水

题目为:很明显,我一开始的想法是通过遍历暴力求解,然后中间有一个示例数据很长,导致求解时间过长,该算法的时间复杂度太高。后来想到一种寻找高度的最大值,确定一个边界然后选择另一个边界的方法,虽然复杂度降下来了,但是算法有漏洞,比如【1,2,1】不可以通过。最后通过官方题解提出来的双指针方法求解出来。所谓双指针,指的的首先选择数组的开头和结尾,然后选择较小的指针移动,直至不可以继续移动。其中的最大值就是所要求的解。这个里面的原理是因为如果移动较大的指针,则不管怎么移,所得到的结果都不会增大。所以

2021-05-15 20:41:23 67

空空如也

空空如也

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

TA关注的人

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