两周过去了,感觉蛮有收获,现把所用到的技术总结总结:
1.PSO算法:
PSO算法,ANN和GA法是三大来源于生物学的算法,又称为进化算法,人工神经网络(ANN)是模拟大脑分析过程的简单数学模型,反向转播算法是最流行的神经网络训练算法。pso和GA是关于最优化问题的,都是产生很多可能的解空间,然后在里面搜索全局最优解。GA具有交叉和变异操作,染色体(chromosomes) 互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动. 在PSO中, 只有gBest (or lBest) 给出信息给其他的粒子, 这是单向的信息流动. 整个搜索更新过程是跟随当前最优解的过程. 与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解。
2.两种类型的数据集
一种是高维低样本类型,另一种是低维高样本类型,两种类型的处理方法具有相似性,对于前者,可以用MIMST,也就是先用过滤法去掉无关属性和冗余属性,从而减少维数。对于后者,可以先对样本进行层次聚类,然后从每一类选一个代表样本代表这一类进行处理。
3.程序结构法
代码如果很多,会增加调试的难度以及出错的概论,牵一发而动全身,可以分别把实现不同功能的函数放在不同的文件中,在主程序中直接调用函数就行了。
程序的结构为:头文件,主函数文件以及若干功能函数文件,头文件中包含函数声明和变量声明和常量声明,若某个功能函数文件需要用到其他文件定义的变量,可以在头文件中用extern关键字声明,如果某个文件的文件不允许被其他文件使用,可以用static关键字声明。每个功能函数文件如果没有使用其他文件的变量,要求改变功能函数为main函数就能够正确运行。
4.CrossValidation
把样本分成m份,每次去m-1份作为训练数据,剩下的一份作为测试数据,迭代m次,使得每次迭代的训练和测试数据都不相同。
5.SAS软件
sas是一款非常强大的统计软件,基本上所有统计分析都可用sas完成,甚至数据挖掘的聚类和分类也可以,不愧为王道
6.快速排序
冒泡,插入排序等等都是o(n*n)的时间复杂度,快排和归并才是o(n*logn)的复杂度。
7.数据预处理
也就是数据规范化,常用的有三种方法,最小最大规范化,z-score规范化和小数定标规范化。其中z-score规范化是最常用的。
8.随机函数
rand()产生一个随机数,但是系统是根据一个种子产生的,如果种子不破坏,每次产生的随机数都会一样,所以必须加上
srand(TIME(NULL))
srand必须加上 stdlib.h
time必须加上time.h
这样每次都破坏种子,从而产生不一样的随机数
9.文件输入输出
10.Ackley函数
阅读全文(4513) | 回复(2) | 编辑 | 精华
|