SHOGUN  4.1.0
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
StaticInterfaces.mainpage
浏览该文件的文档.
1 /*! \page staticinterfaces 静态接口
2 
3 如前所述,SHOGUN可以为多种语言提供接口,其中包括Matlab(tm), R, Python以及Octave。
4 下面是关于这些静态接口的简介。对所有的静态接口,我们力求在所有语言都保持相同的
5 语法风格。然而在某些情况下这是不可能的,我们会在相关的文档中描述这些不同。在阅读这些
6 文档之前,我们建议读者先看一下\b examples 目录下的大量例子。例如,在examples/R目录和examples/python
7 目录。
8 
9 <b>静态接口概览和安装测试</b>
10 \li \ref staticoctaveinterf_sec
11 \li \ref staticpythoninterf_sec
12 \li \ref staticrinterf_sec
13 
14 <b>接口命令</b>
15 \li \ref staticiffeatures_sec
16 \li \ref staticifkernel_sec
17 \li \ref staticifsvm_sec
18 \li \ref staticifhmm_sec
19 \li \ref staticifpoim_sec
20 \li \ref staticifutil_sec
21 \li \ref staticifexample_sec
22 
23 <b>命令参考手册</b>
24 \li \ref staticifcmdref_sec
25 
26 \section staticifoverview_sec 静态接口概览和安装测试
27 
28 \subsection staticoctaveinterf_sec 静态matlab和octave接口
29 
30 因为目前octave与matlab基本相同,对这两个接口一个文档已经足够,该文档基于octave
31 (matlab可以相同地使用)
32 
33 要在octave中使用SHOGUN,首先启动octave,使用以下命令检测SHOGUN是否被正确安装:
34 
35 \verbatim
36  sg('help')
37 \endverbatim
38 
39 这将显示shogun的帮助文本。
40 
41 \subsection staticpythoninterf_sec 静态Python接口
42 
43 要在python中使用SHOGUN,首先启动python,使用以下命令检测SHOGUN是否被正确安装
44 
45 \verbatim
46  from sg import sg
47  sg('help')
48 \endverbatim
49 
50 这将显示shogun的帮助文本。
51 
52 \subsection staticrinterf_sec 静态R接口
53 
54 要在R中使用SHOGUN,需要检测SHOGUN是否已被正确安装在R中。在R的命令行中输入(>为提示符)
55 
56 \verbatim
57  > library()
58 \endverbatim
59 
60 将返回R的所有已安装包的列表,如果SHOGUN已安装会有sg这一项:
61 
62 \verbatim
63  sg The SHOGUN Machine Learning Toolbox
64 \endverbatim
65 当你确定SHOGUN已被正确安装,你可以通过下面命令加载它:
66 
67 \verbatim
68  > library(sg)
69 \endverbatim
70 
71 你可以看到关于SHOGUN的一些信息,如编译选项等。使用这个命令加载后,你就可以使用
72 SHOGUN提供的命令。
73 
74 一般来说,SHOGUN中的命令通过函数sg(...)来调用。如果你想查看SHOGUN命令的帮助,可以
75 输入
76 
77 \verbatim
78  > sg('help')
79 \endverbatim
80 
81 你可以看到一个帮助,该帮助对所有命令都有一个简单描述。
82 
83 \section staticifcmds 静态接口命令
84 
85 \subsection staticiffeatures_sec feature相关函数
86 这些函数在各种接口中将数据传给shogun或者从shogun获得数据。假如你有一个包含数据的matlab矩阵
87 或者R矩阵,你想将这些数据传给shogun,你只需要像下面这样:
88 
89 \arg \b set_features \verbatim sg('set_features', 'TRAIN|TEST', features[, DNABINFILE|<ALPHABET>]) \endverbatim
90 \arg \b add_features \verbatim sg('add_features', 'TRAIN|TEST', features[, DNABINFILE|<ALPHABET>]) \endverbatim
91 
92 feature可以是char/byte/word/int/real值的矩阵,实值稀疏矩阵及字符串。当处理字符串时,需要
93 指定一个字母表(如DNA, RAW, ...)。
94 使用'TRAIN'告诉SHOGUN这是你用于训练分类器的数据,使用'TEST'来说明这是测试数据。
95 
96 与\b set_features 相反,\b add_features 将新建一个feature对象并将输入的feature添加进去。
97 这个命令在需要处理一组不同的feature(如实数和字符串)或者多个核函数时很有用。
98 
99 如果通过set_features传递了一个字符串,它可以通过滑动窗口来变成多个字符串。
100 可以使用\arg \b from_position_list \verbatim sg('from_position_list', 'TRAIN|TEST', winsize, shift[, skip]) \endverbatim
101 或者
102 \arg \b obtain_from_sliding_window \verbatim sg('obtain_from_sliding_window', winsize, skip) \endverbatim
103 
104 
105 通过下面的命令来删除features
106 \arg clean_features \verbatim sg('clean_features') \endverbatim
107 
108 从shogun获取Features
109 \arg \b get_features \verbatim [features]=sg('get_features', 'TRAIN|TEST') \endverbatim
110 
111 
112 向训练数据传递labels及从shogun获取labels,也是采用类似的方法。下面这两个命令
113 \arg \b set_labels \verbatim sg('set_labels', 'TRAIN', trainlab) \endverbatim
114 \arg \b get_labels \verbatim [labels]=sg('get_labels', 'TRAIN|TEST') \endverbatim
115 
116 
117 分别将labels赋给训练数据及从shogun返回labels(注意trainlab的数据已经传给shogun,对trainlab的修改不会影响训练)。
118 
119 \subsection staticifkernel_sec 核函数和距离
120 
121 这些命令用于创建、获取和设置核函数矩阵。
122 
123 在shogun中创建一个核函数
124 \arg \b set_kernel \verbatim sg('set_kernel', 'KERNELNAME', 'FEATURETYPE', CACHESIZE, PARAMETERS) \endverbatim
125 \arg \b add_kernel \verbatim sg('add_kernel', WEIGHT, 'KERNELNAME', 'FEATURETYPE', CACHESIZE, PARAMETERS) \endverbatim
126 
127 这里KERNELNAME是核函数名字,FEATURETYPE是feature的类型(例如,REAL代表标准实数feature向量),CACHESIZE是分配给核函数
128 的缓存(以MB为单位),PARAMETERS为其它参数。
129 \subsubsection staticifsuppkernels_sec 已实现的核函数
130 
131 在SHOGUN中已实现的核函数有以下这些:
132 
133 \li AUC
134 \li Chi2
135 \li Spectrum
136 \li Const Kernel
137 \li User defined CustomKernel
138 \li Diagonal Kernel
139 \li Kernel from Distance
140 \li Fixed Degree StringKernel
141 \li Gaussian \f$ k(x,x')=e^{-\frac{||x-x'||^2}{\sigma}} \f$
142 
143 想要在实数空间中使用一个高斯核函数,可以这样
144 \verbatim sg('set_kernel', 'GAUSSIAN', 'TYPE', CACHESIZE, SIGMA)\endverbatim
145 
146 例如:
147 \verbatim sg('set_kernel', 'GAUSSIAN', 'REAL', 40, 1)\endverbatim
148 这样便创建了一个实数空间上的高斯核函数,它的缓存为40MB,sigma值为1。在高斯核函数
149 可使用的值类型有:REAL, SPARSEREAL。
150 
151 \li Gaussian Shift Kernel
152 \li Histogram Kernel
153 \li Linear \f$k(x,x')=x\cdot x'\f$
154 
155 通过下面这样可以创建一个线性核函数:
156 \verbatim sg('set_kernel', 'LINEAR', 'TYPE', CACHESIZE)\endverbatim
157 
158 
159 例如:
160 \verbatim sg('add_kernel', 1.0, 'LINEAR', 'REAL', 50')\endverbatim
161 
162 这样创建了一个实值的线性核函数,其中缓存为50MB,权重为1.0。
163 
164 线性核函数可使用的值类型:BYTE, WORD CHAR, REAL, SPARSEREAL。
165 
166 \li Local Alignment StringKernel
167 \li Locality Improved StringKernel
168 \li Polynomial Kernel \f$k(x,x')=(x\cdot x')^d\f$
169 
170 通过下面这样可以创建一个多项式核函数:
171 \verbatim sg('set_kernel', 'POLY', 'TYPE', CACHESIZE, DEGREE, INHOMOGENE, NORMALIZE) \endverbatim
172 
173 例如:
174 \verbatim sg('add_kernel', 0.1, 'POLY', 'REAL', 50, 3, 0) \endverbatim
175 添加了一个多项式核函数。多项式核函数可使用的值类型:REAL,CHAR, SPARSEREAL。
176 
177 \li Salzberg Kernel
178 \li Sigmoid Kernel
179 下面这样可以创建一个Sigmoid核函数:
180 
181 \verbatim sg('set_kernel', 'SIGMOID', 'TYPE', CACHESIZE, GAMMA, COEFF)\endverbatim
182 
183 例如:
184 
185 \verbatim sg('set_kernel', 'SIGMOID', 'REAL', 40, 0.1, 0.1) \endverbatim
186 
187 创建了一个实值sigmoid核函数,缓存为40MB,gamma值为0.1,还有一个值为0.1的系数。sigmoid
188 核函数可使用的值类型:REAL。
189 
190 \li Weighted Spectrum Kernel
191 \li Weighted Degree Kernels
192 \li Match Kernel
193 \li Custom Kernel
194 
195 \arg \b set_custom_kernel \verbatim sg('set_custom_kernel', kernelmatrix, 'DIAG|FULL|FULL2DIAG') \endverbatim
196 此外,用户也可以自定义核函数,定义时可以指定一个上三角矩阵(DIAG),全矩阵(FULL),或者用上三角矩阵保存的全矩阵(FULL2DIAG)。
197 
198 get_kernel_matrix和get_distance_matrix这两个命令分别用于返回核函数矩阵和距离矩阵。
199 
200 \arg \b get_distance_matrix \verbatim [D]=sg('get_distance_matrix', 'TRAIN|TEST') \endverbatim
201 \arg \b get_kernel_matrix \verbatim [K]=sg('get_kernel_matrix', 'TRAIN|TEST') \endverbatim
202 
203 km refers to a matrix object.
204 
205 
206 \subsection staticifsvm_sec SVM
207 \arg new_classifier 新建一个分类器 (例如一个SVM实例).
208 \arg train_classifier 利用设置的features和核函数训练SVM
209 
210 get_svm命令返回一个SVM的相关属性,如Langrange乘数alpha,偏置量b,支持向量的下标(从0开始)。
211 \arg \b get_classifier \verbatim [bias, alphas]=sg('get_svm') \endverbatim
212 \arg \b set_classifier \verbatim sg('set_classifier', bias, alphas) \endverbatim
213 
214 get_classifier命令返回一系列参数。\b set_classifier可用于设置alpha和b。
215 
216 测试样本的分类结果通过下面方式得到:
217 \arg \b classify \verbatim [result]=sg('classify') \endverbatim
218 \arg \b classify_example \verbatim [result]=sg('classify_example', feature_vector_index) \endverbatim
219 结果是一个向量,包含每一个数据点的分类结果,\b classify_example 只返回一个指定数据点的分类结果(注意python中的下标是以0开始,
220 而在octave, matlab, R中是以1开始的)。
221 
222 \subsection staticifhmm_sec HMM
223 \li get_hmm
224 \li set_hmm
225 \li hmm_classify
226 \li hmm_classify_example
227 \li hmm_likelihood
228 \li get_viterbi_path
229 
230 \subsection staticifpoim_sec POIM
231 \li compute_poim_wd
232 \li get_SPEC_consensus
233 \li get_SPEC_scoring
234 \li get_WD_consensus
235 \li get_WD_scoring
236 
237 \subsection staticifutil_sec 实用程序
238 
239 其它函数
240 
241 返回shogun版本号
242 \arg \b help \verbatim sg('get_version') \endverbatim
243 
244 获取帮助文本
245 \arg \b help \verbatim sg('help') \endverbatim
246 \arg \b help \verbatim sg('help', 'CMD') \endverbatim
247 
248 设置调试日志等级,这在跟踪错误时有用。
249 \arg loglevel \verbatim sg('loglevel', 'LEVEL') \endverbatim
250 等级可为DEBUG, WARN, ERROR之一
251  \li ALL: 极为详细的日志输出 (只在内存泄漏时比较有用)。
252  \li DEBUG: 详细的日志输出 (调试时有用)。
253  \li WARN: 少量日志输出 (查找错误时有用)。
254  \li ERROR: 只在遇到致命错误时才输出日志。
255 
256 例如
257 \verbatim
258  > sg('loglevel', 'ALL')
259 \endverbatim
260 会显示所有操作。
261 
262 通过学习上面的相关命令,你现在可以编写自己的SHOGUN应用程序。
263 
264 \section staticifexample_sec 例子
265 让我们来合并这个例子:
266 
267  \li \verbatim sg('set_features', 'TRAIN', traindat) \endverbatim
268  将traindat中的数据注册为训练数据。
269 
270  \li \verbatim sg('set_labels', 'TRAIN', trainlab) \endverbatim
271  注册训练label。
272 
273  \li \verbatim sg('set_kernel', 'GAUSSIAN', 'REAL', 100, 1.0) \endverbatim
274  创建一个高斯核函数。
275 
276  \li \verbatim sg('new_classifier', 'SVMLIGHT') \endverbatim
277  创建一个SVM对象。
278 
279  \li \verbatim sg('c', 20.0) \endverbatim
280  将SVM的C值高为20.0。
281 
282  \li \verbatim sg('train_classifier') \endverbatim
283  将数据传给核函数并作使用这些样本训练分类器。
284 
285  \li \verbatim sg('set_features', 'TEST', testdat) \endverbatim
286  注册测试样本
287 
288  \li \verbatim out=sg('classify') \endverbatim
289  attaches the data to the kernel and classifies. Then
290  将数据传给核函数及分类器。然后通过一个向量返回分类结果。
291 
292 
293 \section staticifcmdref_sec 函数参考
294  \li \subpage staticoctave
295  \li \subpage staticpython
296  \li \subpage staticcmdline
297  \li \subpage staticr
298 */

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