-
Julia集分形图案绘制
从去年就开始窥东大的C++教学群,当时就被李骏扬老师讲的分形图案给吸引了,简直美赞了。他们的期末作业就是制作一个分形图案的视频,我们这种学校显然不会有这种东西。于是就想着能不能自己研究着画下,然而并不知道这种图案怎么画,度娘上找来的基本没用。搁置了一年,偶然间翻到了一篇论文,终于找到了画图的方法了,加上之前正好有用python绘图的工具,总算把这个东西搞通了一点。其实这个玩意的水还是非常深的,牵涉到了复分析,分形,甚至是混沌理论,据说从上古贝壳的图案,到如今麦田怪圈的图案,都和Julia集有关,…
-
Ubuntu下OpenCV安装使用简述
简述 Opencv就不解释了,是个很有名的图形库。不仅在进行软件开发的过程中需要用到,而且他也是很多开源软件的运行依赖,所以安装一个Opencv就很有必要了,即使自己本身并不想学习使用。 安装 以下主要是从百度上找到的可用方法: 安装运行依赖 $ sudo apt-get install libqt4-dev libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config\ python-dev python-num…
-
libsvm库的使用
看了下svm(支持向量机)的实现原理,感觉基础的部分还是不难懂的,但是如果要自己动手实现的话还是有很大难度的,况且自己写的效果肯定不太好。于是就在网上找了一个大牛写的svm库,实现了多种分类方式,而且涵盖了几乎所有常见语言的接口,用起来方便而且效果也很好。 概述 LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的,综合使用了包括线性函数,多项式函数,径向基函数,sigmoid函数等在内的不同分类方式,而且支持包括C/C++,python,java,matlab,Oct…
-
自制正方软件系统验证码的识别程序(4/4)
效果 最后总的效果还是不错的,从测试集上面看,单个字符的识别准确率平均能达到90%左右,最好的时候达到过93%。我想这也差不多达到了优化的极限了,毕竟在图片样子不标准,位置更不标准。而且仅仅在截取子图这一步上就会与实际情况有些出入,况且一些细微的差别就算是人脑也容易出错,比如1和7、i和j等等。加上我使用整个数据集的量不算大,满打满算也就500张图,所以能进行33个字符的识别已经挺不错的了。官网上60000张图的数据集的学习也差不多达到了93%而已。 总结 代码就是这样了,不算多,也就小…
-
自制正方软件系统验证码的识别程序(3/4)
util.py 这个文件里主要提供了5个函数,提供给package.py使用,特别是对特征值的计算。 import Image,os,ImageFilter import numpy as np table1=[] table2=[] threshold1=18 for i in range(256): if i<threshold1: table1.append(0) else: table1.append(1) threshold2=240 for i in range…
-
自制正方软件系统验证码的识别程序(2/4)
文件组成 为了实现训练以及识别的过程,我总共设计了6个文件,作用如下: 文件作用split.py用于将验证码中四个小字符分割出来,并分类保存。util.py用于保存一些常用的函数logistic_sgd.py这是官网上的样例代码,实现了softmax的分类算法,当然还要进行下修改package.py这个用来将图像数据进行处理并打包压缩成为方便使用的数据集train.py这是开始训练的接口check.py这是利用训练结果进行识别的接口 还有两个文件夹: 文件夹作用recognized/用于…
-
自制正方软件系统验证码的识别程序(1/4)
学了几天机器学习的原理,感觉还是要自己动手写一个像样的程序才行。正好刚研究过deeplearning.net上的那个识别mnist数据库的源码,于是打算利用一下写一个识别验证码的程序。 他提供的代码已经基本实现了利用Logistic Regression 来分类,用的是softmax算法,支持多元分类。然而他只能读入指定的mnist数据集的经过处理后的格式。因此我当前的任务就是将一张实实在在的图片转换成计算机可以识别的格式,并且进行好预处理,选择好特征值,而不用考虑机器学习代码的细节(这个的确…
-
机器学习中的交叉验证思想
简述 在使用训练集对参数进行训练的时候,经常会发现人们通常会将一整个训练集分为三个部分(比如mnist手写训练集)。一般分为:训练集(train_set),评估集(valid_set),测试集(test_set)这三个部分。这其实是为了保证训练效果而特意设置的。其中测试集很好理解,其实就是完全不参与训练的数据,仅仅用来观测测试效果的数据。而训练集和评估集则牵涉到下面的知识了。 因为在实际的训练中,训练的结果对于训练集的拟合程度通常还是挺好的(初试条件敏感),但是对于训练集之外的数据的拟合程度…
-
逻辑回归算法
说到逻辑回归(Logistic Regression),其实他解决的并不是回归问题(Regression),而是分类问题(Classification)。分类问题都明白了,他和一般的回归问题的差别其实也就在于一个值域是连续的,而另一个值域是离散的, Sigmoid函数 我们都知道分类问题需要解决的问题是给你一个分好类的训练集,然后给你一个数据让你判断这个数据属于哪一类。严格来说这是一个离散的问题,然而我们一般能够处理的都应该是连续可导的函数。而连续可导的线性函数一般都不能非常好的体现出离散…
-
多变量线性回归算法
其实所谓的多变量的线性回归(Linear Regression with multiple variables )本质上将与单变量的线性回归没啥差别。因此我们完全可以用上一节中的梯度下降算法来解决,只需要在每一次迭代的时候多考虑几个变量而已。所以这一节就稍微介绍一下了,不再用例子分析。不过毕竟多了一些变量,在对多变量跑梯度下降算法时,显然对参数的调节就更加重要了,因此我们首先得学会一些参数调节的技巧。这些技巧在实际的操作过程中尤为重要。 调节参数 特征值缩放(Feature Scalin…