算法
文章平均质量分 66
肥宅_Sean
在UCB,Stanford各做过一段时间的RA。去牛津访学过一段时间。
现在在某家头部量化当研究员。
个人站: https://seanquant.github.io/
展开
-
【强化学习】SarsaLambda算法详解以及用于二维空间探索【Python实现】
SarsaLambda算法本文工作基于之前的几篇文章的项目,如果有疑问可以看下面文章:【强化学习】Q-Learning算法详解以及Python实现【80行代码】【强化学习】Q-Learning用于二维空间探索【Python实现】【强化学习】Sarsa算法详解以及用于二维空间探索【Python实现】回到正题上。无论是在Sarsa算法还是Q-Learning中,每次学习都是只迭代Q表中的[S, A]这个位置的节点。之前也说过,这样的迭代效率非常低,因为这样每次都只有下一个能直接获取到奖励的节点原创 2022-04-22 15:38:47 · 1083 阅读 · 3 评论 -
【强化学习】Q-Learning用于二维空间探索【Python实现】
前言这个基于之前的工作,如果有什么疑问也可以参照以前的文章。【强化学习】Q-Learning算法详解以及Python实现【80行代码】本文主要做了两件事情将上篇文章中得弱智般的treasure on right问题,扩张到二维。且将teasure位置随机。并添加一些节点表示坑,即到该节点得到的奖励是负数。将代码结构调整了一下,让整个项目更加清晰。已经方便复用。其实上面的操作,mofan大神在github中也有提到,Q_Learning_maze但可能每个人的具体写法不一样,但是思想基本原创 2022-04-21 18:15:04 · 2698 阅读 · 0 评论 -
【C++】log(n)斐波那契数列计算
算法An=[[1,1],[1,0]]n=[[Fn+1,Fn],[Fn,Fn−1]]nA_n = [[1,1],[1,0]]^n = [[F_{n+1}, F_{n}],[F_{n}, F_{n-1}]] ^nAn=[[1,1],[1,0]]n=[[Fn+1,Fn],[Fn,Fn−1]]n将Fn的累计计算方式转换为矩阵乘法的计算方式。幂计算的方式由于,存在有logn算法,我在 整数幂计算方式logn 中提到了,幂计算的logn算法。注意的是: 由于矩阵乘法比对栈的压力比整数更大,其实一般不使原创 2021-02-25 18:28:30 · 662 阅读 · 0 评论 -
合并两个有序链表(C++)
简述将两个有序的链表合并,并返回输入:1->2->4, 1->3->4输出:1->1->2->3->4->4代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li...原创 2019-12-15 09:57:23 · 647 阅读 · 0 评论 -
有序的两个数组在满足其中一个数组的所有数都小于另外一个数组的情况下的整体的中位数
简述给定两个有序数组,且其中一个有序数组的最大值小于等于另外一个数组的最小值。得到这两个数组整合起来的数组的中位数。代码#include<iostream>using namespace std;#include<vector>double findMedianTwoSortArrays(vector<int>& nums1, vecto...原创 2019-12-14 15:14:59 · 324 阅读 · 0 评论 -
区间重合--c++
题目简述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...原创 2019-12-10 19:49:40 · 1063 阅读 · 0 评论 -
无重复字符的最长子串【哈希算法】-O(n)
无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长...原创 2019-10-29 20:26:14 · 440 阅读 · 0 评论 -
Manacher's algorithms(马拉车算法)最长回文子串
最长回文子串https://leetcode-cn.com/problems/longest-palindromic-substring/给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"Manach...原创 2019-10-23 07:43:48 · 212 阅读 · 0 评论 -
最长回文子串-三种DP实现
解法一T: 156 ms M: 14.8 MBclass Solution {public: string longestPalindrome(string s) { if (s.size() < 2) return s; int map[2000][2001]; int total = 1, star...原创 2019-10-22 19:40:00 · 843 阅读 · 0 评论 -
领近点梯度下降法、交替方向乘子法、次梯度法使用实例(Python实现)
简述凸优化会很详细地讲解这三个算法,这个学期刚好有这门课。这里以期末的大作业的项目中的一个题目作为讲解。题目考虑线性测量b=Ax+e,其中b为50维的测量值,A为50*100维的测量矩阵,x为100维的未知稀疏向量且稀疏度为5,e为50维的测量噪声。从b和A中恢复x的一范数规范化最小二乘法模型(任务!!)min∣∣Ax−b∣∣22+(p/2)∣∣x∣∣1min||Ax-b||_2^2 +...原创 2018-12-24 18:43:17 · 8690 阅读 · 1 评论 -
Boosted Trees简介【翻译+自己的理解】
原文https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf华盛顿大学的 Introduction to Boosted Trees. Tianqi Chen.本文结合该论文和网上其他资料,在自己理解之后,书写下来~文章目录原文监督学习Regression Tree and EnsembleRegression Tree ...原创 2019-02-03 13:33:48 · 2927 阅读 · 0 评论 -
五种排序方式gif展示【python】
排序简单排序import numpy as npimport matplotlib.pyplot as pltimport osimport shutilimport imageiodef plotAndSave(X, Y, path): plt.cla() plt.bar(X, Y) plt.savefig(path)def checkfile(...原创 2019-02-09 13:24:10 · 791 阅读 · 0 评论 -
Polynomial interpolation 多项式插值 --sklearn研究
This example demonstrates how to approximate a function with a polynomial of degree n_degree by using ridge regression. Concretely, from n_samples 1d points, it suffices to build the Vandermonde matr...原创 2019-02-14 12:08:06 · 3572 阅读 · 0 评论 -
FCM算法理论及其Python实现
FCM算法全名为Fuzzy C-Means,是一种聚类算法。Fuzzy c-means (FCM) is a method of clustering which allows one piece of data to belong to two or more clusters. This method (developed by Dunn in 1973 and improved by...原创 2019-03-05 15:00:25 · 6869 阅读 · 8 评论 -
K-Means算法理论及Python实现
简述K-means Algorithm(s)Assumes Euclidean space/distance 假设是在欧式空间下的。因为means本身是需要在欧式空间下才可以计算。但K-means有很多的推广版本,将欧式空间中所提到的Centroid转成Clustroid,是一种比较常见的推广方式。算法先取k个类: Initialization 的时候需要避免ill-initializat...原创 2019-03-07 17:00:22 · 1732 阅读 · 0 评论 -
遗传算法(Genetic Algorithm )+C++实现解决TSP问题
概念生物进化中的概念遗传算法中的作用环境适应函数适应性适应函数值适者生存适应值大的解被保留的概率大个体问题的一个解染色体解的编码基因编码的元素群体被选定的一组解种群按适应函数选择的一组解(编码表示)交配以一定的方式由双亲产生后代的过程变异编码的某些分量发生变化的过程三个生成过程select 自...原创 2018-12-11 00:08:50 · 5786 阅读 · 5 评论 -
模拟退火算法解决TSP(python实现 110+行代码)【gif生成】
简述代码我是基于我之前写的两篇,一篇是遗传算法TSP的Python实现,一篇是模拟退火算法的解决TSP的C++实现。模拟退火算法理论+Python解决函数极值+C++实现解决TSP问题遗传算法解决TSP问题 Python实现【160行以内代码】效果演示对比相比于遗传算法来说没有保持历史中的较优数据,但是通过退火的算法思维,很邻近点搜索的想法,任然能保持较为正确的收敛结果代码i...原创 2018-12-19 17:22:47 · 3970 阅读 · 0 评论 -
遗传算法解决TSP问题 Python实现【160行以内代码】
简述之前通过遗传算法(Genetic Algorithm )+C++实现解决TSP问题 写了一些基本的原理。并且给出了C++版本代码。相比于近300行的C++程序,Python只用了160行就解决了 可以说是非常方便了~基于之前的C++版本的Python版本代码import numpy as npimport randomdef read_data(file='data.txt'...原创 2018-12-12 20:09:11 · 10064 阅读 · 20 评论 -
【论文阅读】Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization
简述看这篇论文,并实现一下这个。(如果有能力实现的话)实时任意风格转换(用自适应Instance Normalization)instanceNorm = batchsize=1 的 batchNorm 1AbstractGatys et al. 最近介绍了一种神经网络算法,以另外一个图片的样式来呈现一个内容图片,实现了一个被称之为风格迁移的东西。然而,他们的框架需要慢慢的迭代优化过...原创 2018-12-03 07:43:21 · 9285 阅读 · 1 评论 -
模拟退火算法理论+Python解决函数极值+C++实现解决TSP问题
简述算法设计课这周的作业:赶紧写了先,不然搞不完了。文章目录简述算法理论部分变量简单分析从状态转移概率到状态概率推导理解当温度收敛到接近0的时候,收敛到结果理论部分的后记算法理论部分用粒子的排列或相应的能量表示物体所处的状态,在温度T下,物体(系统)所处的状态具有一定的随机性。主流趋势是系统向能量较低的状态发展,但粒子的不规则热运动妨碍系统准确落入低能状态。简单来说就是,在温度...原创 2018-11-16 00:22:02 · 1356 阅读 · 0 评论 -
n皇后问题(回溯法-递归法和循环法,最小冲突法(较快解决10000级别问题))
n皇后问题简单解释对于一个n*n的棋盘来说,皇后如果是同行同列或者是在同一斜对角上,就是会相互击杀。所以,我们需要找到一个安全的(使得所有皇后之间不相互击杀)安排方式。递归版本#include &amp;amp;amp;amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;amp;amp;amp;gt;using namespace std;#include &amp;amp;amp;a原创 2018-10-23 11:31:23 · 8805 阅读 · 9 评论 -
最优二叉搜索树探究【C/C++】
简述什么是二叉树下面的这棵树,就是二叉搜索树相对于什么最优这里考虑的是ASL(average search length)平均搜索长度。即根据概率来生成ASL最小的搜索树。到这里,最优二叉搜索树的概念就已经清楚了。解决方法如果是递归来搜索也是可以的,但是很明显需要做很多的重复的计算。为了解决这个问题,所以我们采用动态规划来做,很明显,这样能降低计算的复杂度。处理方法:动态...原创 2018-10-22 18:47:01 · 2062 阅读 · 1 评论 -
Spectral clustering 谱聚类讲解及实现
In multivariate statistics and the clustering of data, spectral clustering techniques make use of the spectrum(eigenvalues) of the similarity matrix of the data to perform dimensionality reduction b...原创 2019-03-19 20:51:13 · 6764 阅读 · 3 评论 -
COP-kMeans限制性--kMeans变体算法研究
简述最近发现一篇有趣的论文。关于限制性的kMeans. 主要思想是基于boosting principle的COP-kMeans。所以,我就先研究了下COP-kMeans。COP-kMeans是一种限制性聚类算法。限制性的含义很简单,就是需要考虑到有些节点在聚类前,我们就知道了这个两个节点是应该放在一起,还是应该分开。所以,这里有两类。最简单的想法,就是这里用一个二维矩阵来存储这个信息。...原创 2019-03-16 17:41:32 · 3172 阅读 · 14 评论 -
整数的幂计算(三种方法)最快O(logn)
整数的幂计算算法1: 一般来说的常见的计算xnx^nxn的方式,就是逐步乘上x,这样一共需要O(n)次O(n)次O(n)次的乘法算法2: 但如果x4x^4x4的话,其实我们只需要计算一次x2x^2x2,再用两个x2x^2x2相乘就好了。这样的话,算法复杂度就被降低到了O(logn)O(log n)O(logn) 。如果不是偶数的话,也可以通过提取出一个偶数来得到对应的结果。用递归的方式很容易就...原创 2019-10-02 11:01:43 · 4218 阅读 · 0 评论 -
[深搜]24点--改进版本
回顾之前写的版本[深搜回溯]24点,没有考虑到中间数值的可能性,是对数值进行深搜遍历,而不是对数值对进行深搜数值遍历,使得较为复杂的24点运算中有部分数据没办法得到解决。这次的改进将围绕着这个进行。算法思路当数组长度为1的时候输出,判断是否为24点,如果是24点,就输出对应的数学表达。如果数组长度大于等于2,则进行深度搜索在数组中任意选择两个数值,再选择加法,左减,右减(减法有顺序)...原创 2019-08-06 08:24:34 · 297 阅读 · 0 评论 -
超松弛迭代法求方法组的解(Python实现)
数值分析题目求方程组{5x1+2x2+x3=−12−x1+4x2+2x3=202x1+−3x2+10x3=2\left\{ \begin{array}{c}5x_1+2x_2 + x_3 = -12 \\-x_1 + 4x_2+2x_3 = 20 \\2x_1+-3x_2+10x_3=2\end{array}\right. ⎩⎨⎧5x1+2x2+x3=−12−x1+4...原创 2019-05-19 22:21:21 · 2708 阅读 · 0 评论 -
马科维茨的均值方差模型(MPT)粒子群优化--Python实现
MPTMPT, modern portfolio theory。现在资产配置理论。理论很简单。假设每个资产的收益率是一个随机变量xix_ixi。既然是随机变量,当然就会有均值和标准差。如果资产数量不是只有一个的话(一个的话,做什么资产配置),也就是存在有多个随机变量,随机变量之间当然就会有协方差。资产配置的目的就是,找到一种较好的资产配置组合,使得达到预期的收益率的情况下,风险最小。...原创 2019-05-18 09:29:22 · 7854 阅读 · 1 评论 -
PCA主成分分析以及Python实现(阅读笔记)
简述PCA日常使用,但还没有研究过其理论,这让我很好奇。理论部分《机器学习》中是这样开始的:对于正交属性空间的样本点,如何用一个超平面来对所有的样本点进行表达。超平面和半空间是优化领域的两个重要概念简单来说,矩阵方程W∗X+b=0W*X+b = 0W∗X+b=0表示的是超平面,W∗X+b≥0W*X+b \geq 0W∗X+b≥0表示的就是半空间。显然超平面是直线在高维空间的扩展。(...原创 2019-04-14 18:44:22 · 11359 阅读 · 1 评论 -
KMeans++算法理论和实现
简述在Kmeans当中,有两个限制定义在凸欧式空间上,使得在非凸空间上的聚类效果一般,在非欧式空间上无法计算均值点。病态初始化问题,由于初始化完全随机,会使得生成的点收到限制,最后聚类的结果不好第一类问题的主流解决方案就是,转换距离度量的方式,这样能使得做到一定的扩展。但任然没有办法解决非欧式空间的问题。KMeans++这篇论文主要关注于第二个问题。KMeans的算法和实现就不再...原创 2019-04-03 17:09:51 · 6304 阅读 · 2 评论 -
DBSCAN算法理论和Python实现
DBSCAN算法基于密度的聚类方法DBSCAN算法,是相当经典。算法思路很简单。简述算法思路:选取密度较高的点作为核心点通过一个核心点出发,把其领域的点都放入到广度优先搜索的队列中。将所有找到的点归结为一个类。之后,再从新的没有被访问过的点中找其他的核心点开始,又继续进行广度优先搜索。一直到所有的点都被访问过(即分配过了对对应的类别)Python实现导入数据from sk...原创 2019-04-06 09:45:04 · 972 阅读 · 1 评论 -
高斯混合模型GMM理论和Python实现
简述高斯混合模型,就是说用多个高斯函数去描述不同的元素分布。通过EM方法来迭代生成不同的高斯模型的各个参数。具体的EM算法的理论网上很多,但推荐各位先看完这个算法思路之后,再去看理论推导就更加好了。更新方法μi′=∑j=1mηji∗xj∑j=1mηji\mu_i^{'} = \frac{\sum_{j=1}^m{\eta_{ji} * x_j}}{\sum_{j=1}...原创 2019-04-05 11:40:12 · 5191 阅读 · 1 评论 -
FCM算法实现Python(简洁版)
FCM算法全名为Fuzzy C-Means,是一种聚类算法。Fuzzy c-means (FCM) is a method of clustering which allows one piece of data to belong to two or more clusters. This method (developed by Dunn in 1973 and improved by...原创 2019-04-17 17:46:11 · 15138 阅读 · 16 评论 -
【论文阅读】A social recommender system using item asymmetric correlation
Abstract推荐系统在近几年极大突出的信息筛选技术之一,然而,有两个主要的问题:数据稀疏:数据太稀疏了,没办法操作冷开始:一开始数据不多(或者),推荐效果不好或无法进行有一类系统,叫做社会推荐系统被提出,可以有效地解决数据稀疏度和冷开始的问题。给定一个社会关系并不是在每一个推荐系统都是可行的,这个隐含的在物品之间的关系算的上是一个代替限制的一个比较好的选择。在这篇paper中,...原创 2019-03-25 23:23:32 · 330 阅读 · 0 评论 -
【论文阅读和实现】On Spectral Clustering: Analysis and an algorithm【Python实现】
On Spectral Clustering: Analysis and an algorithm这是一篇引用量很高(7k+)的paper。开篇的abstract就吸引人。概括: 本文提出了一种简单的谱聚类算法,该算法易于实现而且表现的不错,并且基于矩阵摄动理论,我们可以分析算法并找出可以预期的良好条件。这篇文章的算法主要是关注与n维空间的聚类点。对于这类问题,一个标准的方法就是基于一个...原创 2019-03-21 17:41:22 · 4361 阅读 · 7 评论 -
无重复字符的最长子串【三种解法】--LeetCode
题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为原创 2019-03-13 10:29:32 · 8839 阅读 · 2 评论 -
LVQ模型Python实现
简述LVQ模型是聚类的经典模型,跟Kmeans有点像。但是作为一个聚类,这个模型是一个有监督的模型。算法流程输入的数据集X, y,还有学习率(在0,1之间)η\etaη初始,选k个点,作为原型向量然后开始循环在样本集中随机选个点。找到在原型向量中离它最近的点然后来比较这两个点之间的y是否一样。一样就正向更新节点,不一样就反向更新节点pi=pi(+/−)η∗(xj−pi)p_i...原创 2019-03-23 16:25:22 · 3145 阅读 · 2 评论 -
回文数字生成器
def is_palindom(n): return str(n) == str(n)[::-1]for i in filter(is_palindom, range(1,1001)): print(i, end=" ")原创 2017-10-06 19:51:16 · 911 阅读 · 0 评论 -
[MIPS汇编语言]InsertionSort插入排序
如果对MIPS实现数组的输入输出不懂,可以点这里 如果对MIPS实现简单排序有兴趣,可以点这里 如果你想要看一下怎么用C++(或者C)实现插入排序,可以点这里 如果你想要看一下用Python实现插入排序,可以点这里 这里举得栗子是降序排列 MIPS指令代码如下:建议和比较熟悉的高级程序语言对比着看.data array: .space 1024 input原创 2017-10-21 08:42:11 · 2430 阅读 · 0 评论 -
[二分查找变形]弯曲的木杆(POJ 1905)
这题很有意思,除了一般的程序知识,还用了数学的东西。推导了一些公式什么的。 这次用了两种方法做,层层深入,希望能让大家体会到代码的改良过程原创 2017-10-12 16:09:24 · 569 阅读 · 0 评论