The sharing of resources about Statistical Learning Theory and Machine Learning(includeing SVM,Semi-Supervised Learning,Ensemble Learning,Clustering) ,welcome to contact and communicate with me: Email: xiankaichen@gmail.com,QQ:112035246,

Thursday, July 10, 2008

数据标准化/归一化方法

归一化方法(Normalization Method)
1。 把数变为(0,1)之间的小数
主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。
2 。把有量纲表达式变为无量纲表达式
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。
比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。
另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。
标准化方法(Normalization Method)
数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。一般常用的有以下几种方法。
(1) 最小-最大规范化对原始数据进行线性变换。假定MaxA与MinA分别表示属性A的最大与最小值。最小最大规范化通过计算

将属性A的值映射到区间[a, b]上的v。一般来说,将最小-最大规范化在用于信用指标数据上,常用的有以下两种函数形式:
a) 效益型指标(越大越好型)的隶属函数:

b) 成本型指标(越小越好型)的隶属函数:

(2) z-score规范化也称零-均值规范化。属性A的值是基于A的平均值与标准差规范化,A的值计算公式

(3) 小数定标规范化是通过移动属性A的小数点位置来实现的。小数点的移动位数依赖于A的最大绝对值,计算公式为

其中,j是使得MAX(|v|)<1的最小整数。例如A的值为125,那么|A|=125,则j=3,有v=0.125。
///////////////////////////////////////////////////////////////////////////////////////////////////
//C++实现的归一化和反归一化处理函数
///////////////////////////////////////////////////////////////////////////////////////////////////
void __fastcall TModelManage::TranslateData(TModel* pModel,int Id,double *Value,int Flag)
{
//转换函数类型
int iChgFunc;

//节点对应的最大、最小值
double dMaxValue,dMinValue;

//取节点配置信息:转换函数类型,最大值,最小值
GetNodeConfValue(pModel->ConfTable,Id,&iChgFunc,&dMaxValue,&dMinValue);
if(Flag==1) //仿真时不取边界值,以避免仿真结果误差太大
{
if(*Value<=(dMinValue*1.005))
*Value=dMinValue*1.005;
if(*Value>=(dMaxValue*0.995))
*Value=dMaxValue*0.995;
}
else
{
if(*Value<=dMinValue)
*Value=dMinValue;
if(*Value>=dMaxValue)
*Value=dMaxValue;
}

//线性函数转换,转换在0-1之内
if(iChgFunc==0)
{
*Value=(*Value-dMinValue)/(dMaxValue-dMinValue);
}
//用atan函数转换在0-1之内
else if(iChgFunc==2)
{
*Value=atan(*Value)*2/M_PI;
}
//用log函数转换
else if(iChgFunc==1)
{
if(*Value<=1)
*Value=0;
else
*Value=log10(*Value); //用log10函数转换(缩小)
if(dMaxValue>1)
*Value=*Value/log10(dMaxValue); //转换为0-1之间
}
//不用转换
else if(iChgFunc==3)
{
*Value=*Value;
}

*Value=((0.5-0.001)/0.5)*(*Value)+0.001; //用线性函数把数据转换为0.001-0.0.9995之间
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//反数据转换,主要是针对仿真结果要反算回实际预测的值
void __fastcall TModelManage::UnTranslateData(TModel* pModel,int Id,double *Value,int Flag)
{
//转换函数类型
int iChgFunc;

//节点对应的最大、最小值
double dMaxValue,dMinValue;

//取节点配置信息:转换函数类型,最大值,最小值
GetNodeConfValue(pModel->ConfTable,Id,&iChgFunc,&dMaxValue,&dMinValue);
*Value=(((*Value)-0.001)*0.5)/(0.5-0.001); //对应于---->用线性函数把数据转换为0.001-0.0.9995之间

//反线性函数转换
if(iChgFunc==0)
{
*Value=(*Value)*(dMaxValue-dMinValue)+dMinValue;
}
//用tan函数转换
else if(iChgFunc==2)
{
*Value=tan(*Value)*M_PI/2;
}
//用反log函数转换
else if(iChgFunc==1)
{
*Value=pow(10,(*Value)); //用反对数方式函数转换(放大)
}
else if(iChgFunc==3)
{
*Value=*Value; //不用转换
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////

Tuesday, July 8, 2008

Shark Software(a optimization toolbox for machine learning)

SHARK is a modular C++ library for the design and optimization of adaptive systems. It provides methods for linear and nonlinear optimization, in particular evolutionary and gradient-based algorithms, kernel-based learning algorithms and neural networks, and various other machine learning techniques. SHARK serves as a toolbox to support real world applications as well as research in different domains of computational intelligence. The libraries are not necessarily dependent on any third party software. The sources are compatible with the following platforms: Windows, Solaris, MacOS X, and Linux.

The JMLR recommend it.for more information please go to Shark-Project site

To download the Shark:http://shark-project.sourceforge.net/

Monday, July 7, 2008

在C++中如何调用c文件

在C++中调用c程序的时候,得对每个c代码的头文件 用如下代码将其括起来

#ifdef __cplusplus
extern "C" {


c代码的头文件内容

#endif
#ifdef __cplusplus
}
#endif

然后.c文件放在项目的源文件部分,.h文件放在头文件部分.

如果用的是vs2005或vc6 在 Project ->Property->configuration properties下的 C\C++->precomplied headers 将"Create/Use Precompiled Header "设置为"Not Use Precompiled Header (/Yu)"