自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 机器学习

诞生于19世纪60年代包含概率论,统计学等学科分类:监督学习supervised learning非监督学习unsupervised learning半监督学习强化学习 reinforcement learning遗传算法genetic algorithm

2018-04-09 15:53:53 244

转载 迭代加深搜索求埃及分数

原文出处:http://blog.csdn.net/u014800748/article/details/44998693迭代加深搜索迭代加深搜索(Iterative Deepening Depth-First Search, IDDFS)经常用于理论上解答树深度上没有上界的问题,这类问题通常要求出满足某些条件时的解即可。比如在“埃及分数”问题中要求将一个分数a/b分解成为若干个形如1/d的加数之...

2018-03-11 11:30:50 264

原创 辗转相除法求最大公约数

int gcd(int a, int b)  {   return b == 0 ? a : gcd(b, a%b);  }  

2018-03-11 09:52:41 361

原创 求32位数中有几位非0位及最低非0位和最高非0位的方法

算法摘自http://www.xqbase.com/computer/struct_intro.htm对代码的解释为原创(1) 求一个32位数中有几位非零位的运算——Count32操作: int Count32(unsigned long Arg) { Arg = ((Arg >> 1) & 0x55555555) + (Arg & 0x55555555); Arg =...

2018-03-08 20:04:30 3031

转载 向量表示,投影,协方差矩阵,正交对角化对于降维的作用

原文:http://blog.csdn.net/songzitea/article/details/18219237引言当面对的数据被抽象为一组向量,那么有必要研究一些向量的数学性质。而这些数学性质将成为PCA的理论基础。理论描述向量运算即:内积。首先,定义两个维数相同的向量的内积为:(a1,a2,⋯,an)T⋅(b1,b2,⋯,bn)T=a1b1+a2b2+⋯+anbn内积运算将两个向量映射为一...

2018-02-28 21:18:03 995

转载 矩阵微分

ContentsNotationDerivatives of Linear ProductsDerivatives of Quadratic ProductsNotationd/dx (y) isa vector whose (i) elementis dy(i)/dxd/dx (y) is a vectorwhose (i) elementis dy/dx(i)d/dx (yT)is a mat...

2018-02-28 13:59:52 452

原创 尾递归优化

尾递归就是递归语句在函数最后执行,且无需对返回值进行进一步操作。编译器会对这种递归进行优化,在进入深层递归时候,不是在递归栈进行入栈操作,而是直接覆盖栈顶。线性递归与尾递归区别如下线性递归:12345long Rescuvie(long n) {     return (n == 1) ? 1 : n * Rescuvie(n - 1); }尾递归:123456789101112long Tail...

2018-02-23 17:09:57 354

转载 后序遍历二叉树非递归

原文出处:点击打开链接leetcode中有这么一道题,非递归来实现二叉树的后序遍历。二叉树的后序遍历顺序为,root->left, root->right, root,因此需要保存根节点的状态。显然使用栈来模拟递归的过程,但是难点是怎么从root->right转换到root。方法1:对于节点p可以分情况讨论1. p如果是叶子节点,直接输出2. p如果有孩子,且孩子没有被访问过,则...

2018-02-21 13:52:14 142

原创 统计学习概述

三要素:模型,策略,算法应用:人工智能,模式识别,数据挖掘,自然语言处理,语音识别,图像识别,信息检索和生物信息等计算机科学由三维组成,系统,计算,信息。统计学习主要属于信息统计学习包括监督学习,非监督学习,半监督学习,强化学习损失函数风险函数或期望损失:   经验风险或者经验损失:结构风险:                J(f)为模型的复杂度过拟合:学习时所包含的模型所选择的参数过多,以至于出...

2018-02-11 11:41:04 219

原创 机器学习实战第三章,决策树的实现

新建tree.py模块,写入下列代码,这里的所有函数共同完成了建立一个决策树from math import logimport numpy as npimport matplotlib as pltimport operatordef calcShannonEnt(dataSet): # 计算给定数据的香农熵 numEntries = len(dataSet)

2018-01-18 00:01:21 278

原创 python pickle模块实现决策树长期保存,机器学习实战

定义两个函数,storeTree用于把决策树以二进制形式保存到文件中,grabTree从文件中读出决策树到内存def storeTree(inputTree, filename): ''' 序列化决策树,存入文件 :param inputTree: :param filename: :return: ''' import pickle

2018-01-17 23:28:18 1987

原创 用matplotlib注解绘制决策树,机器学习实战第三章

这段代码纠结了很久,也调了很久,算是弄懂了,感觉还是应该写下来,以后可以看看,也方便有同样疑惑的同学节省时间首先贴上treePlotter.py的代码,这个自定义模块实现了所有的函数用于画决策树import matplotlib.pyplot as pltdecisionNode = dict(boxstyle='sawtooth', fc='10')leafNode = dict(boxs...

2018-01-17 16:00:47 4168 4

原创 python:setattr的迷惑以及函数作为对象添加引用

import sysclass A: def __init__(self,str): self.str=str setattr(self.__class__,self.str,self.test) def test(self): print sys._getframe().f_code.co_name print s

2018-01-16 11:51:18 2090

原创 python获取调用栈中的函数信息

导入sys模块,sys._getframe(i)表示栈中第i层,i=0表示栈顶sys.getframe(i).f_code.co_name表示第i层的函数例如import treePlotter as tpimport sysdef a(): b()def b(): c()def c(): print(sys._getframe(0).f_code.co_name

2018-01-16 11:13:11 4113

原创 python set函数,去除列表重复元素

正如标题所说,set函数可以非常方便的将一个列表去重,例如a = [1,2,3,4,4,2,3,31,3,3,2,4,313,1,21,21,3,3,22,2,2,2,3,3,3,4,4]b = set(a)print(a)print(b)输出为[1, 2, 3, 4, 4, 2, 3, 31, 3, 3, 2, 4, 313, 1, 21, 21, 3, 3,

2018-01-15 10:07:38 3125

原创 k-近邻算法实现手写数字识别

这里的数字存储在一个文本文件中,是由32*32个0或1组成的数字矩阵,背景用0表示,数字用1表示from numpy import *import operatorimport osdef classify0(inX, dataSet, labels, k): dataSetSize = dataSet.shape[0] diffMat = tile(inX, (dat

2018-01-13 12:38:53 372

原创 python的matplotlib库的matplotlib模块scatter函数的color属性

这个属性可以赋给一个列表,那么这个列表代表什么,如果直接color=‘red’我都懂,但是列表是啥意思看不懂源码,函数申明出的英语说明也没看懂,好歹也是过了六级的人啊,好气。网上也没有看到有人研究过这个问题,所以我做了几个对照试验。这么一段代码,我不断改变b数列的值来探究颜色变化,对于上面这个图,输出为我令b=[0,9,9,10,1000]输出为我把10

2018-01-12 22:00:02 1224 1

原创 python 的文件操作

只记录下可能会用到的操作1.f = open(filename,mode)函数打开文件,mode可以是‘r’:只读, ‘w’:只写, ‘a’:追加, f是一个类文件对象2.f.read(n)函数依字符读取文件,n表示读取字符的个数,n省略则将文件全部读完3.f.readline()函数按行读文件4.f.readlines()函数将文件读取返回成列表,列表中的每个元素

2018-01-11 22:35:08 293

原创 k-近邻算法改进约会网站配对效果

from numpy import *import operatordef createDataSet(): group = array([[1.0, 1.1], [1.1, 1.0], [0, 0], [0, 0.1]]) labels = ['A', 'A', 'B', 'B'] return group, labelsdef classify0(inX, d

2018-01-10 23:22:51 226

原创 字典的items()函数.返回列表,用于字典排序

例如>>a = {'a':1, 'b':2, 'c':3}>>b = a.items()([('a', 1), ('b', 2), ('c', 3)])然后对其使用operator.itemgetter(i)函数可以选定键或者值作为排序的依据,i = 0表示按键大小排序i=1表示按值大小排序

2018-01-10 23:15:16 3063

转载 在列表中选择每个元素给定位置的值,operator.itemgetter函数

文章出处 https://www.cnblogs.com/zhoufankui/p/6274172.htmloperator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号。看下面的例子a = [1,2,3] >>> b=operator.itemgetter(1)      //定义函数b,获取对象的第

2018-01-10 23:06:43 183

原创 python的random模块的几个实用函数

1. randrange(a,b,step)从a到b的以step为间隔的序列中随机选出一个整数This fixes the problem with randint() which includes theendpoint; in Python this is usually not what you want.2. random()返回0到1之间的随机浮点数3.un

2018-01-10 22:02:26 622

原创 python的字典类型循环

a = {"nihao":3, "shangdi":2, "wocao":7,"shabi":5}for x in a: print(x)返回值为nihaoshangdiwocaoshabi返回键而已,这么一个小知识点,为了记下来,浪费我大把时间,的确考虑要不要换个博客了

2018-01-10 18:17:02 292

原创 numpy模块的tile函数

tile(A,reps)有两个参数A,reps,返回数组,用于将数组的每个维度进行重复这个函数是在机器学习实战的k-近邻算法中看到的,下面是我查找的它的文档Construct an array by repeating A the number of times given by reps.If `reps` has length ``d``, the result will ha

2018-01-10 15:17:00 198

转载 uva 1601(The morning after Halloween ,Japan 2007, UVa 1601)

文章出处:http://blog.csdn.net/loveyou11111111/article/details/48879167第一,将有用的空格编码成1-256之间的整数,节省了存储空间第二,将每个状态用一个int型进行编码,很巧妙#include #include #include #include #include using namespace std;

2017-07-19 22:20:45 304

原创 倒水问题(Fill,UVa 10603)

路径搜索问题,用bfs可以解决这里用来一个二维数组visit进行判重。因为如果搜索到了相同的状态那么第一个水杯中的水量x1和第二个水杯中的水量x2将会相同,所以可以通过visit[x1][x2] = 1判断这个状态事先被访问过,无需插入队列中注意这里是要找倒水量最少的解,不是总的步数最少,所以要用优先队列,到水量少的先出队,所以需要操作符重载了#include#i

2017-07-10 20:17:09 383

原创 天平难题(Mobile Computing, ACM/ICPC Tokyo

1.重点是求子集的代码 for (int l = (s - 1)&s; l > 0; l = (l - 1)&s), 这里通过l可以求出s的所有子集。可以举一个例子来理解 。假设s = 1010 1100,   将s的0,2,4,5位抽出是1111第一次, s-1 = 1010 1011 l = (s-1)&s = 10101000 l的 0,2,4,5位抽出是1110第二次, l

2017-07-08 09:14:47 477

原创 带宽(Bandwidth,UVa 140

本题用回溯法,将已经排列好的节点放在数组a中,并且记录下此时数组a的带宽值,这里的带宽值是作为函数参数传递的,即now_bandwith如果a中的节点数等于输入的节点数,则此时为一个全排列,如果这个排列的带宽值比已经保存的最小带宽值小,那么保存该排列和带宽值即可。为了优化代码,这里用到了剪枝的方法,当a中的排列的带宽值已经大于当前保存的最小带宽时,就没必要继续往a中加入元素了,也就不继续递

2017-07-07 21:02:46 660

原创 困难的串(Krypton Factor,UVa 129)

回溯法注意一定要写47行的if(count == n) return;否则递归不会终止17行的if(q > i) ok = 0 去掉也能ac,不过还是写上逻辑清晰 ,因为可能存在p先到达0但是q没到达i的情况,则两个子串不相邻,我这个算法会出现这种情况,没有学过好的判断相同子串的办法,暂时想到这个了#include using namespace std;const i

2017-07-07 11:11:37 335

原创 素数环(Prime Ring Problem, Uva 524)

回溯法#include #include #include using namespace std;const int maxn = 16 + 5;int circle[maxn];int visit[maxn];int n;bool is_prime(int n){ int k = sqrt((double)n); int ok = 1; for(int i = 2;

2017-07-07 09:16:52 214

原创 八皇后问题

参考书籍《算法竞赛入门经典》刘汝佳设置一个数组int c[maxn] ,c[i] = k 表示第i行第k列放了一个皇后,因此,原问题可以表示为对0-n进行全排列(对于八皇后问题,n是7),在这些排列中筛选出符合条件,即互不攻击的排列放入数组c那么怎么判断c[cur]是否与当前已经放入的皇后发生冲突呢,这里设置了一个visit[3][maxn*2]的数组,visit[0][i] = 1表示第

2017-07-06 21:43:28 191

原创 二进制输出所有的子集

参考的书是刘汝佳《算法竞赛入门经典》对于一个二进制数,从右往左,第一位代表数字0,第二位代表数字1,第三位代表数字2,以此类推,这样一个二进制数就可以代表一个子集了。例如0100011000110111表示对应的子集为{0,1,2,4,5,9,10,14}最重要的好处是,利用二进制数表示子集,可以很方便的表示集合的交并补运算。二进制数的&对应交运算,|对应并运算,ALL_BITS^A对应补

2017-07-06 17:14:14 726

原创 位向量法输出所有子集

给定一个集合,元素为{0,1,2,3,4.。。。。。n},输出所有的子集#include using namespace std;void print_subset(int n, int* B, int cur){ if(cur == n) { for(int i = 0; i < cur; i++) if(B[i]) cout<<i<<" "; cout<<endl;

2017-07-06 16:12:50 492

原创 增量构造法输出所有子集

给定一个集合,元素为{0,1,2,3,4.。。。。。n},输出所有的子集思路是一次选出一个元素放入到集合A中,A始终保持从小到大顺序,cur记录当前子集中元素个数,下一个递归的子集为A[cur-1] + 1到n中任意选一个数添加在A的末尾,表示子集个数加1.#include using namespace std;void print_subset(int n, int* A, int

2017-07-06 16:03:04 285

转载 next_permutation求下一个排列的原理

stl的next_permutation方法,实现求下一个全排列。这里mark一下,告诉自己有这么个函数,原理如下出处http://blog.csdn.net/qq575787460/article/details/41215475这篇文章的例子有点小问题不过这不是重点啦最近刷leetcode的时候遇见next permutation这道题,感觉挺有意思的一个题

2017-07-06 15:14:19 420

原创 分数拆分(Fraction Again?!, Uva 10976)

这题本身是很简单的,大概思路是这样的:容易知道y是从k+1到2k的,所以我先循环枚举y值,然后根据1/k = 1/x + 1/y 计算 x = y*k / (y-k) 这里x肯定算出是double型然后判断是否为整数,是的话就是要输出的内容难点是,每次计算出的x,y,k,不能直接输出,得先保存在string类型中,开始我直接string s = “1/” + k + " = 1

2017-07-06 10:40:25 304

原创 最大乘积(Maximum Product, UVa 11059)

分两步1.定义一个函数,参数是i,表示求以si开头的子串的最大乘积2.分别以i为0,1,2,,3.。。。。。n 调用该函数,  然后在这些乘积中选出最大值,就是所求。#include using namespace std;const int maxn = 18 + 5;int s[maxn];int n;long long _max(int i) //计算数组中从i出

2017-07-05 21:34:02 323

原创 除法(Division, UVa 725)

先对分子的五位数进行排列,如若两两不相等,则乘上给的积得到分母将分母拆分成五位数,对以上的十位数再次判断是否两两不相等如若两两不相等,输出利用set容器判断是不是两两不相等,#include #include #include using namespace std;bool different(int a, int b, int c, int d, int e, int

2017-07-05 20:59:12 380

转载 Patrol Robot UVa1600巡逻机器人

#include #include #include #include using namespace std; int n,m,k,t; int map[25][25]; bool vis[25][25][25];//增加一个维度Z来表示跃过的墙的层数。 int dx[4]= {1,0,-1,0}; int dy[4]= {0,1,0,-1}; struc

2017-07-05 17:45:37 420

原创 骑士的移动(Knight Moves, UVa 439)

本题实际上就是一次BFS,很普通,我这里利用对称性,将a-h视作行,1-8视作列,且a在上,h在下,1在左,7在右,这样符合C语言的数组习惯#include#include #include using namespace std;const int maxn = 8+5;int dir[maxn][maxn]; //初始值设为0,表示还未访问,出发点的值设为1,以后没进一层,相应位置d

2017-07-04 16:30:13 794 1

空空如也

空空如也

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

TA关注的人

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