Category编程与算法

Tensorflow&机器学习速成笔记

本笔记依托于谷歌机器学习速成课程 会与前面机器学习笔记存在重复部分 部分文字与图片节选自Google机器学习速成课程讲义和Tensorflow官方API及对应社区或其他文档 文章会持续更新 课程地址:  机器学习术语 监督式学习是机器学习系统通过学习如何组合输入信息来对从未见过的数据做出有用的预测。 标签 在简单线性回归中,标签是我们要预测的事物,即 y 变量。标签可以是小麦未来的价格、图片中显示的动物品种、音频剪辑的含义或任何事物。 特征 在简单线性回归中,特征是输入变量,即 x 变量。简单的机器学习项目可能会使用单个特征,而比较复杂的机器学习项目可能会使用数百万个特征,写成如下形式: 样本 样本是指数据的特定实例:x。(我们采用粗体 x 表示它是一个矢量。)我们将样本分为以下两类:有标签样本和无标签样本 有标签样本同时包含特征以及标签 Python labeled examples:...

OpenCV-Python学习手册(一)安装配置与初步使用

这又是一个新坑系列,主要的笔记主要是关于大名鼎鼎的OpenCV的Python接口的学习,主要的文档支持就是OpenCV-Python手册,顺序也基本会按照这个文档来 安装OpenCV以及开启其Python支持 这里主要是针对Linux发行版的安装方法,我本人也是使用的Ubuntu Gnome 16.04LTS 依赖环境 GCC 4.4.x or later CMake 2.6 or higher Git GTK+2.x or higher, including headers (libgtk2.0-dev) # 控制opencv GUI pkg-config Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy) ffmpeg or libav...

从0开始用Python实现图像边缘检测

自上次使用感知哈希进行图像检测以后,我又开始造轮子了。这次是从0开始的使用Python的图像边缘检测 本次针对图像的边缘检测一口气使用了5个算子,包括Prewitt算子,Sobel算子,laplace算子,拓展laplace算子,canny算子。一个一个慢慢说 首先 既然我们要做图像边缘检测,那就要首先弄清楚什么是图像的边缘,边缘有什么特征,这样才能对特征加以识别 现在一幅常规的图像都是彩色的,但是色彩的存在会增加我们判断的难度,所以我们既要消除色彩对我们的影响。所以我们要对图像进行灰度化处理 得到灰度图像以后那么边缘两侧的图像灰度值肯定相差很大,但是图像的像素之间都会有多多少少的灰度差异,因此我们需要做的不仅是找到灰度差异大的部分,而是需要找到灰度差异最大的部分,这样这个地方是边缘的可能性就越强。 那么接下来的问题就转化成如何知道那里的灰度变化值最大。...

基于Python的进程调度算法实验

最近操作系统的实验课老师要求我们来实现进程调度算法,加之最近又在学习Python。于是就用Python实现进程调度的几个经典算法:先来先服务、短进程优先、时间片轮转。 算法解析 先简单的介绍一下三种进程调度算法 FCFS先来先服务 讲道理这个算法是最简单的调度算法,就是判断谁先来,先来的就先服务。没啥道理可讲 SJF短进程优先 这个只是FCFS的改进版,防止长进程过长时间占用CPU,因此将CPU设置为优先服务短进程 时间片轮转法 为了应对上述两种方法在,进程并发上的缺陷,将CPU的服务量化为时间片,将CPU的计算资源分配改为按时间片分配。每个进程拥有一定的时间片,从而让每个进程都可以得到相应。当然对于时间片轮转算法可以有很多改进,例如给每个进程加上优先级,优先服务优先级高的程序 算法实现 依据上面说的算法原理,采用OOP的思想(虽然超级不严谨)来进行实现 PCB...

从0开始用Python实现图片相似度检测

最近突发奇想,想利用Python做一个轮子工程,就是使用Python来做两个图片相似度的比较,不引用市面上成熟的API,是完完全全的轮子工程(后期估计会有一大堆优化,如果我不懒的话) 主要应用的算法就是感知哈希算法。感知哈希算法的核心就是将图像抽象成一个字符串指纹,然后比较两个字符串指纹之间的汉明距离(Hamming Distance)。但是两张图片的大小都不尽相同,直接拿来比较的可比性也比较低,因此首先需要对图像进行一些预处理 图像预处理 首先要做的第一步就是消除图像中颜色的差异,对于颜色的处理无外乎就是二值化,灰度化那么几种。而这里选择二值化显然保留的数据太少了。所以我们选择灰度化,来去除掉图像的颜色。 何为灰度化?简单的来讲图像分为RGB三原色,每一原色都用256位来表示(0...

Python3那些与Python2不同的地方(持续更新)

又是一年踩坑时啊,最近写Python为了保证在Python2和Python3中同时运行踩了不少关于两者的坑,本来是没打算总结的,可是越踩越多,越踩越多,脑子实在记不住了,就提笔写了这一篇博客 print 这是一个很普遍的坑,也是一个很容易遇到的坑 在Python27中,print可以这么写 Python print "hello world" 1 print "hello world" 也可以这么写 Python print("hello world") 1 print("hello world")...

使用Python爬虫获取拉钩职位信息的作死过程

Today i….. 最近本宝宝在做大数据的有关作业,需要获取一下拉勾的职位信息,于是,我就开始了我的爬虫之路 所谓爬虫就是 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫 1 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫 大概就是这样,接下来大概就是分享一下我做这个爬虫的是时候的一些整体思路 首先,我洗了个澡,吃了点水果,咳咳。说正经的了。...

关于树形结构中树深度和高度的讨论

今天在复习树形结构的相关知识时,发现了对于树的高度还有深度存在两个版本的解释,因此在这里讨论一下 下图是《数据结构与算法分析-C语言描述(原书第二版)》(机械工业出版社)关于树深度和高度的描述 在文章中不难看出,树形结构的深度和高度实际上就是根节点(或者叶子结点)到目标节点边的条数 在上图这个树形结构中B的深度为1,高度为2;A的深度为0,高度为3。其他的节点可以以此类推 下图是《数据结构(C语言版)》(清华大学出版社)关于树深度和高度的描述 其中树中结点的最大层次根据该书前面的解释如下图 也就是说对于刚才提到的树形结构,树的高度和深度就发生了改变 A点的深度就变成了1,高度变成了4;B点的深度变成了2,高度变成了3。...

一个有趣的C语言程序

经常听有人说C语言里其实没有数组,说实话刚开始我是拒绝的,毕竟自己用了这么长时间 他为了说明这个问题,给了我这样一个简短的程序 C++ #include <stdio.h> int main(void){ int a = 1; int x[5]={1,2,3,4,5}; printf("%d",a[x]); return 0; } 12345678 #include <stdio.h> int main(void){    int a = 1;    int x[5]={1,2,3,4,5};    printf("%d",a[x]);    return 0;}...

哈夫曼树的编码与解码

我又要开更一些比较低端的玩意了,作为自己学习的笔记 今天来说一下如何建立一棵哈夫曼树以及如何利用哈夫曼树对字符串进行编码和解码。 在这之前首先应该了解一下什么是哈夫曼树(最优二叉树):给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 带权路径长度:为所有叶子结点的带权路径长度之和。这么说或许还是有点抽象,带权路径长度简单可以这么理解: 一条路的路程长度为2,一条路的路程长度为6,那么从根节点到第一个叶子结点的带权路径长度为2+6=8,以此类推其他的带权路径长度也可以知道 哈夫曼树被称为最优二叉树,究其原因就是带权路径长度最短。所以它在一些编码方面使用的比较广泛。 在使用哈夫曼树进行编码解码的时候我们需要把这个问题拆解成几个小问题来处理 1...

Your sidebar area is currently empty. Hurry up and add some widgets.