SHOGUN  3.2.1
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
静态接口

如前所述,SHOGUN可以为多种语言提供接口,其中包括Matlab(tm), R, Python以及Octave。 下面是关于这些静态接口的简介。对所有的静态接口,我们力求在所有语言都保持相同的 语法风格。然而在某些情况下这是不可能的,我们会在相关的文档中描述这些不同。在阅读这些 文档之前,我们建议读者先看一下examples 目录下的大量例子。例如,在examples/R目录和examples/python 目录。

静态接口概览和安装测试

接口命令

命令参考手册

静态接口概览和安装测试

静态matlab和octave接口

因为目前octave与matlab基本相同,对这两个接口一个文档已经足够,该文档基于octave (matlab可以相同地使用)

要在octave中使用SHOGUN,首先启动octave,使用以下命令检测SHOGUN是否被正确安装:

  sg('help')

这将显示shogun的帮助文本。

静态Python接口

要在python中使用SHOGUN,首先启动python,使用以下命令检测SHOGUN是否被正确安装

  from sg import sg
  sg('help')

这将显示shogun的帮助文本。

静态R接口

要在R中使用SHOGUN,需要检测SHOGUN是否已被正确安装在R中。在R的命令行中输入(>为提示符)

  > library()

将返回R的所有已安装包的列表,如果SHOGUN已安装会有sg这一项:

  sg                     The SHOGUN Machine Learning Toolbox

当你确定SHOGUN已被正确安装,你可以通过下面命令加载它:

  > library(sg)

你可以看到关于SHOGUN的一些信息,如编译选项等。使用这个命令加载后,你就可以使用 SHOGUN提供的命令。

一般来说,SHOGUN中的命令通过函数sg(...)来调用。如果你想查看SHOGUN命令的帮助,可以 输入

  > sg('help')

你可以看到一个帮助,该帮助对所有命令都有一个简单描述。

静态接口命令

feature相关函数

这些函数在各种接口中将数据传给shogun或者从shogun获得数据。假如你有一个包含数据的matlab矩阵 或者R矩阵,你想将这些数据传给shogun,你只需要像下面这样:

feature可以是char/byte/word/int/real值的矩阵,实值稀疏矩阵及字符串。当处理字符串时,需要 指定一个字母表(如DNA, RAW, ...)。 使用'TRAIN'告诉SHOGUN这是你用于训练分类器的数据,使用'TEST'来说明这是测试数据。

set_features 相反,add_features 将新建一个feature对象并将输入的feature添加进去。 这个命令在需要处理一组不同的feature(如实数和字符串)或者多个核函数时很有用。

如果通过set_features传递了一个字符串,它可以通过滑动窗口来变成多个字符串。 可以使用

通过下面的命令来删除features

从shogun获取Features

向训练数据传递labels及从shogun获取labels,也是采用类似的方法。下面这两个命令

分别将labels赋给训练数据及从shogun返回labels(注意trainlab的数据已经传给shogun,对trainlab的修改不会影响训练)。

核函数和距离

这些命令用于创建、获取和设置核函数矩阵。

在shogun中创建一个核函数

这里KERNELNAME是核函数名字,FEATURETYPE是feature的类型(例如,REAL代表标准实数feature向量),CACHESIZE是分配给核函数 的缓存(以MB为单位),PARAMETERS为其它参数。

已实现的核函数

在SHOGUN中已实现的核函数有以下这些:

想要在实数空间中使用一个高斯核函数,可以这样

sg('set_kernel', 'GAUSSIAN', 'TYPE', CACHESIZE, SIGMA)

例如:

sg('set_kernel', 'GAUSSIAN', 'REAL', 40, 1)

这样便创建了一个实数空间上的高斯核函数,它的缓存为40MB,sigma值为1。在高斯核函数 可使用的值类型有:REAL, SPARSEREAL。

通过下面这样可以创建一个线性核函数:

sg('set_kernel', 'LINEAR', 'TYPE', CACHESIZE)

例如:

sg('add_kernel', 1.0, 'LINEAR', 'REAL', 50')

这样创建了一个实值的线性核函数,其中缓存为50MB,权重为1.0。

线性核函数可使用的值类型:BYTE, WORD CHAR, REAL, SPARSEREAL。

通过下面这样可以创建一个多项式核函数:

sg('set_kernel', 'POLY', 'TYPE', CACHESIZE, DEGREE, INHOMOGENE, NORMALIZE) 

例如:

sg('add_kernel', 0.1, 'POLY', 'REAL', 50, 3, 0) 

添加了一个多项式核函数。多项式核函数可使用的值类型:REAL,CHAR, SPARSEREAL。

sg('set_kernel', 'SIGMOID', 'TYPE', CACHESIZE, GAMMA, COEFF)

例如:

sg('set_kernel', 'SIGMOID', 'REAL', 40, 0.1, 0.1) 

创建了一个实值sigmoid核函数,缓存为40MB,gamma值为0.1,还有一个值为0.1的系数。sigmoid 核函数可使用的值类型:REAL。

get_kernel_matrix和get_distance_matrix这两个命令分别用于返回核函数矩阵和距离矩阵。

km refers to a matrix object.

SVM

get_svm命令返回一个SVM的相关属性,如Langrange乘数alpha,偏置量b,支持向量的下标(从0开始)。

get_classifier命令返回一系列参数。set_classifier可用于设置alpha和b。

测试样本的分类结果通过下面方式得到:

HMM

POIM

实用程序

其它函数

返回shogun版本号

获取帮助文本

设置调试日志等级,这在跟踪错误时有用。

例如

  > sg('loglevel', 'ALL')

会显示所有操作。

通过学习上面的相关命令,你现在可以编写自己的SHOGUN应用程序。

例子

让我们来合并这个例子:

函数参考


SHOGUN 机器学习工具包 - 项目文档