第一篇:LibSvm 使用说明 学习心得
LibSvm 使用说明 学习心得
(本页内容来自互联网,如果对您的利益造成侵害,请通知我,我会立即删除!)
View this tutorial in: English Only TraditionalChinese Only Both(Default)(req.JavaScript if you want to switch languages)Core StyleSheets: Chocolate Midnight Modernist Oldstyle Steely Swiss Traditional Ultramarine
* This document is written in multilingual format.We strongly suggest that you choose your language first to get a better display.piaip's Using(lib)SVM Tutorial piaip 的(lib)SVM 简易入门
piaip at csie dot ntu dot edu dot tw, Hung-Te Lin Fri Apr 18 15:04:53 CST 2003 $Id: svm_tutorial.html,v 1.12 2005/10/26 06:12:40 piaip Exp piaip $ 原作:林弘德,转载请保留原出处
Why this tutorial is here
我一直觉得 SVM 是个很有趣的东西,不过也一直没办法(mostly 冲堂)去听 林智仁老师 的 Data mining 跟 SVM 的课; 后来看了一些网络上的文件跟听 kcwu 讲了一下 libsvm 的用法后,就想整理一下,算是对于并不需要知道完整 SVM 理论的人提供使用 libsvm 的入门。原始 libsvm 的 README 跟 FAQ 也是很好的文件,不过你可能要先对 svm 跟流程有点了解才看得懂(我在看时有这样的感觉); 这篇入门就是为了从零开始的人而写的。I've been considering SVM as an interesting and useful tool but couldn't attend the “Data mining and SVM” course by prof.cjline about it(mostly due to scheduling conflicts).After reading some materials on the internet and discussing libsvm with some of my classmates and friends , I wanted to provide some notes here as a tutorial for those who do not need to know the complete theory behind SVM theory to use libsvm.The original README and FAQ files that comes with libsvm are good documents too.But you may need to have some basic knowledge of SVM and its workflow(that's how I felt when I was reading them).This tutorial is specificly for those starting from zero.后来还有一些人提供意见,所以在此要感谢: I must thank these guys who provided feedback and helped me make this tutorial: kcwu, biboshen, puffer, somi 不过请记得底下可能有些说法不一定对,但是对于只是想用 SVM 的人来说我觉得这样说明会比较易懂。Remember that some aspect below may not be correct.But for those who just wish to “USE” SVM, I think the explanation below is easier to understand.这篇入门原则上是给会写基本程序的人看的,也是给我自己一个备忘 , 不用太多数学底子,也不用对 SVM 有任何先备知识。This tutorial is basically for people who already know how to program.It's also a memo to myself.Neither too much mathmatics nor prior SVM knowledge is required.还看不懂的话有三个情形 , 一是我讲的不够清楚 , 二是你的常识不足 , 三是你是小白 ^^;If you still can't understand this tutorial, there are three possibilities: 1.I didn't explain clearly enough, 2.You lack sufficient common knowledge, 3.You don't use your brain properly ^^;我自己是以完全不懂的角度开始的,这篇入门也有不少一样不懂 SVM 的人 看过、而且看完多半都有一定程度的理解,所以假设情况一不会发生,那如果不懂一定是后两个情况 :P 也所以 , 有问题别问我。Since I begin writing this myself with no understanding of the subject, ans this document has been read by many people who also didn't understand SVM but gained a certain level of understanding after reading it, possibility 1 can be ruled out.Thus if you can't understand it you must belong to the latter two categories, :P thus even if you have any questions after reading this, don't ask me.SVM: What is it and what can it do for me?
SVM, Support Vector Machine , 简而言之它是个起源跟类神经网络有点像的东西,不过现今最常拿来就是做分类(classification)。也就是说,如果我有一堆已经分好类的东西(可是分类的依据是未知的!),那当收到新的东西时,SVM 可以预测(predict)新的数据要分到哪一堆去。SVM, Support Vector Machine , is something that has similar roots with neural networks.But recently it has been widely used in Classification.That means, if I have some sets of things classified(But you know nothing about HOW I CLASSIFIED THEM, or say you don't know the rules used for classification), when a new data comes, SVM can PREDICT which set it should belong to.听起来是很神奇的事(如果你觉得不神奇,请重想一想这句话代表什么: 分类的依据是未知的!,还是不神奇的话就请你写个程序 解解看这个问题),也很像要 AI 之类的高等技巧...不过 SVM 基于 统计学习理论 可以在合理的时间内漂亮的解决这个问题。It sounds marvelous and would seem to require advanced techniques like AI searching or some time-consuming complex computation.But SVM used some Statistical Learning Theory to solve this problem in reasonable time.以图形化的例子来说明(by SVMToy), 像假定我在空间中标了一堆用颜色分类的点 , 点的颜色就是他的类别 , 位置就是他的数据 , 那 SVM 就可以找出区隔这些点的方程式 , 依此就可以分出一区区的区域;拿到新的点(数据)时 , 只要对照该位置在哪一区就可以(predict)找出他应该是哪一颜色(类别)了 : Now we explain with a graphical example(by SVMToy), I marked lots of points with different colors on a plane, the color of each point is its “class” and the location is its data.SVM can then find equations to split these points and with these equations we can get colored regions.When a new point(data)comes, we can find(predict)what color(class)a point should be just by using the point's location(data)原始资料分布 Original Data SVM 找出来的区域 SVM Regions
当然 SVM 不是真的只有画图分区那么简单 , 不过看上面的例子应该可以了解 SVM 大概在作什么.Of course SVM is not really just about painting and marking regions, but with the example above you should should be able to get some idea about what SVM is doing.要对 SVM 再多懂一点点,可以参考 cjlin 在 data mining 课的 slides: pdf or ps。底下我试着在不用看那个 slide 的情况 解释及使用 libsvm。To get yourself more familiar with SVM, you may refer to the slides cjlin used in his Data Mining course : pdf or ps.I'm going to try to explain and use libSVM without those slides.所以 , 我们可以把 SVM 当个黑盒子 , 数据丢进去让他处理然后我们再来用就好了.Thus we can consider SVM as a black box.Just push data into SVM and use the output.How do I get SVM?
林智仁(cjlin)老师 的 libsvm 当然是最完美的工具.Chih-Jen Lin 's libsvm is of course the best tool you can ever find.Download libsvm
下载处 : Download Location: libsvm.zip or libsvm.tar.gz
.zip 跟.tar.gz 基本上是一样的 , 只是看你的 OS;习惯上 Windows 用.zip 比较方便(因为有 WinZIP, 不过我都用 WinRAR), UNIX 则是用.tar.gz Contents in the.zip and.tar.gz are the same.People using Windows usually like to use.zip files because they have WinZIP, which I always replace with WinRAR.UNIX users mostly prefer.tar.gz Build libsvm
解开来后 , 假定是 UNIX 系统 , 直接打 make 就可以了;编不出来的话请 详读说明和运用常识.因为这是 tutorial, 所以我不花时间细谈 , 而且 会编不出来的情形真是少之又少 , 通常一定是你的系统有问题或你太笨了.其它的子目录可以不管 , 只要 svm-train, svm-scale, svm-predict 三个执行档有编出来就可以了.After you extracted the archives, just type make if you are using UNIX.You may ignore some of the subdirectories.We only need these executable files: svm-train, svm-scale, and svm-predict
Windows 的用户要自己重编当然也是可以 , 不过已经有编好的 binary 在里面了 : 请检查 windows 子目录 , 应该会有 svmtrain.exe, svmscale.exe, svmpredict.exe, svmtoy.exe.Windows users may rebuild from source if you want, but there're already some prebuilt binaries in the archive: just check your “windows” subdirectory and you should find svmtrain.exe, svmscale.exe, svmpredict.exe, and svmtoy.exe.Using SVM
libsvm 有很多种用法 , 这篇 tutorial 只打算讲简单的部分.libsvm has lots of functions.This tutorial will only explain the easier parts(mostly classification with default model).The programs
解释一下几个主要执行档的作用 :(UNIX/Windows 下檔名稍有不同 , 请用常识理解我在讲哪个)I'm going to describe how to use the most important executables here.The filenames are a little bit different under Unix and Windows, apply common sense to see which I'm referring to.svmtrain Train(训练)data.跑 SVM 被戏称为 “ 开火车 ” 也是由于这个程序名而来.train 会接受特定格式的输入 , 产生一个 “Model” 檔.这个 model 你可以想象成 SVM 的内部数据 , 因为 predict 要 model 才能 predict, 不能直接吃原始数据.想想也很合理 , 假定 train 本身是很耗时的动作 , 而 train 好可以以某种形式存起内部数据 , 那下次要 predict 时直接把那些内部数据 load 进来就快多了.Use your data for training.Running SVM is often referred to as 'driving trains' by its non-native English speaking authors because of this program.svmtrain accepts some specifically format which will be explained below and then generate a 'Model' file.You may think of a 'Model' as a storage format for the internal data of SVM.This should appear very reasonable after some thought, since training with data is a time-consuming process, so we 'train' first and store the result enabling the 'predict' operation to go much faster.svmpredict 依照已经 train 好的 model, 再加上给定的输入(新值), 输出 predict(预测)新值所对应的类别(class).Output the predicted class of the new input data according to a pre-trained model.svmscale Rescale data.因为原始数据可能范围过大或过小 , svmscale 可以先将数据重新 scale(缩放)到适当范围.Rescale data.The original data maybe too huge or small in range, thus we can rescale them to the proper range so that training and predicting will be faster.File Format
档案格式要先交代一下.你可以参考 libsvm 里面附的 “heart_scale”: This is the input file format of SVM.You may also refer to the file “heart_scale” which is bundled in official libsvm source archive.[label] [index1]:[value1] [index2]:[value2]...[label] [index1]:[value1] [index2]:[value2].....一行一笔资料,如 One record per line, as: +1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1
label 或说是 class, 就是你要分类的种类,通常是一些整数。Sometimes referred to as 'class', the class(or set)of your classification.Usually we put integers here.index 是有顺序的索引,通常是放连续的整数。Ordered indexes.usually continuous integers.value 就是用来 train 的数据,通常是一堆实数。The data for training.Usually lots of real(floating point)numbers.每一行都是如上的结构 , 意思就是 : 我有一排资料 , 分别是 value1, value2,....valueN,(而且它们的顺序已由 indexN 分别指定),这排数据的分类结果就是 label。Each line has the structure described above.It means, I have an array(vector)of data(numbers): value1, value2,....valueN(and the order of the values are specified by the respective index), and the class(or the result)of this array is label.或许你会不太懂,为什么会是 value1,value2,....这样一排呢? 这牵涉到 SVM 的原理。你可以这样想(我没说这是正确的),它的名字就叫 Support “Vector” Machine,所以输入的 training data 是 “Vector”(向量), 也就是一排的 x1, x2, x3,...这些值就是 valueN,而 x[n] 的 n 就是 由 indexN 指定。这些东西又称为 “attribute”。真实的情况是,大部份时候我们给定的数据可能有很多 “ 特征(feature)” 或说 “ 属性(attribute)”,所以输入会是 一组的。举例来说,以前面 画点分区的例子 来说,我们不是每个点都有 X 跟 Y 的坐标吗? 所以它就有 两种 attribute。假定我有两个点:(0,3)跟(5,8)分别在 label(class)1 跟 2,那就会写成 1 1:0 2:3 2 1:5 2:8 同理,空间中的三维坐标就等于有三组 attribute。Maybe it's confusing to you: why value, value2,...? The reason is usually the input data to the problem you were trying to solve involves lots of 'features', or say 'attributes', so the input will be a set(or say vector/array).Take the Marking points and find region example described above, we assumed each point has coordinates X and Y so it has two attributes(X and Y).To describe two points(0,3)and(5,8)as having labels(classes)1 and 2, we will write them as: 1 1:0 2:3 2 1:5 2:8 And 3-dimensional points will have 3 attributes.这种档案格式最大的好处就是可以使用 sparse matrix,或说有些 data 的 attribute 可以不存在。This kind of fileformat has the advantage that we can specify a sparse matrix, ie.some attribute of a record can be omitted.To Run libsvm
来解释一下 libsvm 的程序怎么用。你可以先拿 libsvm 附的 heart_scale 来做输入,底下也以它为例: Now I'll show you how to use libsvm.You may use the heart_scale file in the libsvm source archive as input, as I'll do in this example: 看到这里你应该也了解,使用 SVM 的流程大概就是: You should have a sense that using libsvm is basically: 1.准备数据并做成指定 格式(有必要时需 svmscale)Prepare data in specified format and svmscale it if necessary.2.用 svmtrain 来 train 成 model Train the data to create a model with svmtrain.3.对新的输入,使用 svmpredict 来 predict 新数据的 class Predict new input data with svmpredict and get the result.svmtrain
svmtrain 的语法大致就是 : The syntax of svmtrain is basically: svmtrain [options] training_set_file [model_file]
training_set_file 就是之前的格式,而 model_file 如果不给就会 叫 [training_set_file].model。options 可以先不要给。The format of training_set_files is described above.If the model_file is not specified, it'll be [training_set_file].model by default.Options can be ignored at first.下列程序执行结果会产生 heart_scale.model 檔:(屏幕输出不是很重要,没有错误就好了)The following command will generate the heart_scale.model file.The screen output may be ignored if there were no errors../svm-train heart_scale
optimization finished, #iter = 219 nu = 0.431030 obj =-100.877286, rho = 0.424632 nSV = 132, nBSV = 107 Total nSV = 132 svmpredict
svmpredict 的语法是 : The syntax to svm-predict is: svmpredict test_file model_file output_file
test_file 就是我们要 predict 的数据。它的格式跟 svmtrain 的输入,也就是
training_set_file 是一样的!不过每行最前面的 label 可以省略(因为 predict 就是要 predict 那个 label)。但如果 test_file 有 label 的值的话,predict 完会顺便拿 predict 出来的值跟 test_file 里面写的值去做比对,这代表: test_file 写的 label 是真正的分类结果,拿来跟我们 predict 的结果比对就可以 知道 predict 有没有猜对了。test_file is the data the we are going to 'predict'.Its format is almost exactly the same as the training_set_file, which we fed as input to svmtrain.But we can skip the leading label(Because 'predict' will output the label).Somehow if test_file has labels, after predicting svm-predict will compare the predicted label with the label written in test_file.That means, test_file has the real(or correct)result of classification, and after comparing with our predicted result we can know whether the prediction is correct or not.也所以,我们可以拿原 training set 当做 test_file 再丢给 svmpredict 去 predict(因为格式一样),看看正确率有多高,方便后面调参数。So we can use the original training_set_file as test_file and feed it to svmpredict for prediction(nothing different in file format)and see how high the accuracy is so we can optimize the arguments.其它参数就很好理解了: model_file 就是 svmtrain 出来 的档案,output_file 是存输出结果的档案。Other arguments should be easy to figure out now: model_file is the model trained by svmtrain, and output_file is where we store the output result.输出的格式很简单,每行一个 label,对应到你的 test_file 里面的各行。Format of output is simple.Each line contains a label corresponding to your test_file.下列程序执行结果会产生 heart_scale.out : The following commands will generate heart_scale.out:./svm-predict heart_scale heart_scale.model heart_scale.out Accuracy = 86.6667%(234/270)(classification)Mean squared error = 0.533333(regression)Squared correlation coefficient = 0.532639(regression)As you can see,我们把原输入丢回去 predict,第一行的 Accuracy 就是预测的正确率了。如果输入没有 label 的话,那就是真的 predict 了。As you can see, after we 'predict'ed the original input, we got 'Accuracy=86.6667%“ on first line as accuracy of prediction.If we don't put labels in input, the result is real prediction.看到这里,基本上你应该已经可以利用 svm 来作事了: 你只要写程序输出正确格式的数据,交给 svm 去 train,后来再 predict 并读入结果即可。Now you can use SVM to do whatever you want!Just write a program to output its data in the correct format, feed the data to SVM for training, then predct and read the output.Advanced Topics
后面可以说是一些稍微进阶的部份,我可能不会讲的很清楚,因为我的重点是想表达一些观念和解释一些你看相关文件时 很容易碰到的名词。These are a little advanced and I may not explain very clearly.Because I just want to help you get familiar with some of the terminology and ideas that you'll encounter when you read other(lib)SVM documents.Scaling
svm-scale 目前不太好用,不过它有其必要性。因为 适当的 scale 有助于参数的选择(后述)还有解 svm 的速度。
svmscale 会对每个 attribute 做 scale。范围用-l,-u 指定,通常是 [0,1] 或是 [-1,1]。输出在 stdout。
另外要注意的(常常会忘记)是 testing data 和 training data 要一起 scale。而 svm-scale 最难用的地方就是没办法指定 testing data/training data(不同档案)然后一起 scale。
svm-scale is not easy to use right now, but it is important.Scaling aids the choosing of arguments(described below)and the speed of solving SVM.svmscale rescales all atrributes with the specified(by-l,-u)range, usually [0,1] or [-1,1].Please keep in mind that testing data and training data MUST BE SCALED WITH THE SAME RANGE.Don't forget to scale your testing data before you predict.We can't specify the testing and training data file together and scale them in one command, that's why svm-scale is not so easy to use right now.Arguments
前面提到,在 train 的时候可以下一些参数。(直接执行 svm-train 不指定输入档与参数会列出所有参数及语法说明)这些参数对应到原始 SVM 公式的一些参数,所以会影响 predict 的正确与否。举例来说,改个 c=10:./svm-train-c 10 heart_scale
再来 predict,正确率马上变成 92.2%(249/270)。
We know that we can use some arguments when we were training data(Running svm-train without any input file or arguments will cause it to print its list syntax help and complete arguments).These arguments corresponds to some arguments in original SVM equations so they will affect the accuracy of prediction.Let's use c=10 as an example:./svm-train-c 10 heart_scale
If you predict again now, the accuracy will be 92.2%(249/270).Cross Validation
一般而言,SVM 使用的方式(在决定参数时)常是这样: 1.先有已分好类的一堆资料 2.随机数拆成好几组 training set 3.用某组参数去 train 并 predict 别组看正确率 4.正确率不够的话,换参数再重复 train/predict Mostly people use SVM while following this workflow: 1.Prepare lots of pre-classified(correct)data 2.Split them into several training sets randomly.3.Train with some arguments and predict other sets of data to calculate the accuracy.4.Change the arguments and repeat until we get good accuracy.等找到一组不错的参数后,就拿这组参数来建 model 并用来做最后对未知数据的 predict。这整个过程叫 cross validation,也就是交叉比对。When we got some nice arguments, we will then use them to train the model and use the model for final prediction(on unknown test data).This whole process is called cross validation.在我们找参数的过程中,可以利用 svmtrain 的内建 cross validation 功能来帮忙:-v n: n-fold cross validation
n 就是要拆成几组,像 n=3 就会拆成三组,然后先拿 1 跟 2 来 train model 并 predict 3 以得到正确率; 再来拿 2 跟 3 train 并 predict 1,最后 1,3 train 并 predict 2。其它以此类推。In the process of experimenting with the arguments, we can use the built-in support for validation of svmtrain:-v n: n-fold cross validation
n is how many sets to split your input data.Specifing n=3 will split data into 3 sets;train the model with data set 1 and 2 first then predict data set 3 to get the accuracy, then train with data set 2 and 3 and predict data set 1, finally train 1,3 and predict 2,...ad infinitum.如果没有交叉比对的话,很容易找到只在特定输入时好的参数。像前面我们 c=10 得到 92.2%,不过拿-v 5 来看看:./svm-train-v 5-c 10 heart_scale...Cross Validation Accuracy = 80.3704%平均之后才只有 80.37%,比一开始的 86 还差。If we don't use cross validation, sometimes we may be fooled by some arguments only good for some special input.Like the example we used above, c=10 has 92.2%.If we do so with-v 5:./svm-train-v 5-c 10 heart_scale...Cross Validation Accuracy = 80.3704% After the prediction results is averaged with cross validation we have only 80.37% accuracy, even worse than with the original argument(86%).What arguments rules?
通常而言,比较重要的参数是 gamma(-g)跟 cost(-c)。而 cross validation(-v)的参数常用 5。Generally speaking, you will only modify two important arguments when you are using training with data: gamma(-g)and cost(-c).And cross validation(-v)is usually set to 5.cost 默认值是 1, gamma 默认值是 1/k,k 等于输入 数据笔数。那我们怎么知道要用多少来当参数呢?
用 试 的
是的,别怀疑,就是 Try 参数找比较好的值。
cost is 1 by default, and gamma has default value = 1/k , k = number of input records.Then how do we know what value to choose as arguments? T R Y
Yes.Just by trial and error.Try 参数的过程常用 exponential 指数成长的方式来增加与减少参数的数值,也就是 2^n(2 的 n 次方)。When experimenting with arguments, the value usually increases and decreases in exponential order.i.e., 2^n.因为有两组参数,所以等于要 try n*n=n^2 次。这个过程是不连续的成长,所以可以想成我们在一个 X-Y平面上指定的范围内找一群格子点(grid,如果你不太明白,想成方格纸或我们把平面上所有 整数交点都打个点,就是那样),每个格子点的 X 跟 Y 经过换算(如 2^x, 2^y)就拿去当 cost 跟 gamma 的值来 cross validation。Because we have two important arguments, we have to try n*n=n^2 times.The whole process is discontinous and can be thought of as finding the grid points on a specified region(range)of the X-Y plane(Think of marking all integer interception points on a paper).Convert each grid point's X and Y coordinate to exponential values(like 2^x, 2^y)then we can use them as value of cost and gamme for cross validation.所以现在你应该懂得 libsvm 的 python 子目录下面 有个 grid.py 是做啥的了: 它把上面的过程自动化,在你给定的范围内呼叫 svm-train 去 try 所有的参数值。python 是一种语言,在这里我不做介绍,因为我会了 :P(just a joke,真正原因是--这是 libsvm 的 tutorial)。grid.py 还会把结果 plot 出来,方便你寻找参数。libsvm 有很多跟 python 结合的部份,由此可见 python 是强大方便的工具。很多神奇的功能,像自动登入多台 机器去平行跑 grid 等等都是 python 帮忙的。不过 SVM 本身可以完全不需要 python,只是会比较方便。So look for 'grid.py' in the 'python' subdirectory inside the libsvm archive.You should know what it does now: automatically execute the procedure above, try all argument values by calling svm-train within the region specified by you.Python is a programming language which I'm not going to explain here.grid.py will also plot the result graphically to help you look for good arguments.There're also many parts of libsvm powered by python, like logging into several hosts and running grids at the same time parallel.Keep in mind that libsvm can be used without python entirely.Python just only helped us to do thinks quickly.跑 grid(基本上用 grid.py 跑当然是最方便,不过 如果你不懂 python 而且觉得很难搞,那你要自己产生 参数来跑也是可以的)通常好的范围是
[c,g]=[2^-10,2^10]*[2^-10,2^10] 另外其实 grid 用 [-8,8] 也很够了。Running for grids(it's more convenient to just use grid.py but it's also ok if you don't)you may choose the range as [c,g]=[2^-10,2^10]*[2^-10,2^10] Usually [-8,8] is enough for grids.Regression
另一个值得一提的是 regression。
简单来说,前面都是拿 SVM 来做分类(classification), 所以 label 的值都是 discrete data、或说已知的固定值。而 regression 则是求 continuous 的值、或说未知的值。你也可以说,一般是 binary classification, 而 regression 是可以预测一个实数。比如说我知道股市指数受到某些因素影响 , 然后我想预测股市..股市的指数就是我们的 label, 那些因素量化以后变成 attributes。以后搜集那些 attributes 给 SVM 它就会 预测出指数(可能是没出现过的数字),这就要用 regression。那乐透开奖的号码呢? 因为都是固定已知的数字,很明显我们应该用一般 SVM 的 classification 来 predict。(注:这是真实的例子--llwang 就写过这样的东西)所以说 label 也要 scale, 用 svm-scale-y lower upper
但是比较糟糕的情况是 grid.py 不支持 regression,而且 cross validation 对 regression 也常常不是很有效。
总而言之,regression 是非常有趣的东西,不过也是比较 进阶的用法。在这里我们不细谈了,有兴趣的人请再 参考 SVM 与 libsvm 的其它文件。The other important issue is ”Regression“.To explain briefly, we only used SVM to do classification in this tutorial.The type of label we used are always discrete data(ie.a known fixed value).”Regression“ in this context means to predict labels with continuous values(or unknown values).You can think of classification as predictions with only binary outcomes, and regression as predictions that output real(floating point)numbers.Thus to predict lottery numbers(since they are always fixed numbers)you should use classification, and to predict the stock market you need regression.The labels must also be scaled when you use regression, by svm-scale-y lower upper However grid.py does not support regression, and cross validation sometimes does not work well with regression.Regression is interesting but also advanced.Please refer to other documents for details.Epilogue
到此我已经简单的说明了 libsvm 的使用方式,更完整的用法请参考 libsvm 的说明跟 cjlin 的网站、SVM 的相关文件,或是去上 cjlin 的课。Here we have already briefly explained the libsvm software.For complete usage guides please refer to documents inside the libsvm archive, cjlin's website , SVM-related documents, or go take cjlin's course if you are a student at National Taiwan University :)对于 SVM 的新手来说,libsvmtools 有很多好东西。像 SVM for dummies 就是很方便观察 libsvm 流程的东西。Take a glance at libsvmtools especially ”SVM for dummies" there.Those are good tools for SVM newbies that helps in observing libsvm workflow.Copyright All rights reserved by Hung-Te Lin(林弘德, piaip),,Website: piaip at ntu csie,2003.All HTML/text typed within VIM on Solaris.Style sheet from W3C Core StyleSheets.
第二篇:合法使用说明
易制毒化学品合法使用说明
本单位XX车间后续生产使用到国家管制的二、三类易制毒化学品——硫酸和盐酸,主要用于污水处理和实验试剂。
预计年涉及量:硫酸10吨/年,盐酸10升/年。
本单位保证严格遵守《易制毒化学品管理条例》和《易制毒化学品购销和运输办法》,保证将所购买易制毒化学品全部按照合法用途使用,在任何情况下不用于制造毒品,不挪作他用,不私自转让给其他单位或个人,并自觉加强易制毒化学品管理,落实出入库登记制度,自觉接受监督检查。如有违反上述承诺,致使易制毒化学品流入非法渠道,我单位自愿接受相应处罚。
特此证明。
单位名称(签章):
天津XX制造有限公司
日期:
****年**月**日
第三篇:课件使用说明
课件使用说明
1、课件使用的软件为flash8.0。
2、双击“两位数加减两位数.exe”或者“两位数加减两位数.swf”打开课件。
3、共14个环节,每个环节已改为自动播放,请稍等。
4、一个环节播完后,单击右下角的5、返回上一个环节单击左下角的按钮可进入下个环节。按钮。
按钮可停止音乐。
6、第14环节(欢迎来到动物村庄),单击右下角的7、按键盘上的Esc键,退出全屏模式,单击关闭按钮关闭课件。
第四篇:课件使用说明
课 件 使 用 说 明
一、课件说明
课件名称:荷叶圆圆
年级科目:人教版一年级语文下册
课件作者:道真自治县三桥镇接龙小学 王德敏 文件类型:PPT格式
二、课件使用说明
1、双击课件图标打开课件封面,出示作者,单击左键,出示图片,导出课题。
2、在第2张ppt上,单击 知故事内容,激发学生的学习兴趣。
3、在第9张ppt上,单击 键盘上按ESC键返回。
4、在第11张ppt上,单击 图,在键盘上按ESC键返回。
5、在第11张ppt上,单击 键盘上按ESC键返回。
6、在第12张ppt上,在右下角单击
7、在第14张ppt上,在右下角单击 塘美景视频,欣赏荷塘美景。
8、除以上7个操作之外,其余全部操作由单击左键完成。
二字,播放摇篮图,在 按钮,播放课文动画,感
三字,播放停机坪 字,播放动词做游戏,在 按钮,播放音 按钮,播放荷乐,做角色扮演活动,单击左键结束,并进入下一环节。
第五篇:规章制度使用说明
规章制度使用说明
各顾问单位负责法律事务的人员,请根据下列《企业劳动规章制度》结合本企业的实际情况,对《企业劳动规章制度》中未填写的部分予以填充;对《企业劳动规章制度》中不适合本企业的内容,可以删除和修改;对《企业劳动规章制度》中未涉及到的内容,可以增加补充。
经过顾问单位修改过的《企业劳动规章制度》,一定要经过职工代表大会或者职工大会讨论表决通过,并予以公示。表决的结果要用书面的形式记录下来,并作为档案保存。企业劳动规章制度 第一章 总则
第1条 为规范企业和职工的行为,维护企业和职工双方的合法权益,根据《中华人民共和国劳动法》、《中华人民共和国劳动合同法》及其配套法规、规章的规定,结合企业的实际情况,制定本规章制度。
第2条 本规章制度适用于企业和全体职工,职工包括管理人员、技术人员和普通职工;包括试用工和正式工;对特殊职位的职工另有规定的从其规定。
第3条 职工享有取得劳动报酬、休息休假、获得劳动安全卫生保护,享受社会保险和福利等劳动权利,同时应当履行完成劳动任务、遵守企业规章制度和职业道德等劳动义务。第二章 工作时间与休息休假
第5条 企业实行每天工作 小时,每周工作时间不超过40小时,每周至少休息一天,对特殊岗位的职工实行不定时或综合计时工作制。
第6条 职工每天正常上班时间为:上午 : 时— : 时,下午 :— : 时。
第7条公司根据生产需要,经与员工协商可以依法延长日工作时间和安排员工休息日(星期
六、日)加班,但每日延长工作时间一般不超过3小时,并保证员工每周至少休息一天。
第8条 员工加班加点应由部门经理、主管安排或经本人申请而由部门经理、主管批准;员工经批准加班的,依国家规定支付加班工资或安排补休。
第9条 员工的休息日和法定休假日如下:
(1)休息日: 星期
六、星期日;(2)休假日: 元旦1天、春节3天、五一节3天、国庆节3天。
(2)婚 假: 员工本人结婚,可享受婚假3天;晚婚者(男年满25周岁、女年满23周岁)增加10天。
(3)丧 假: 员工直系亲属(父母、配偶、子女)死亡,可享受丧假3天;员工配偶的父母死亡,经公司总经理批准,可给予3天以内的丧假。第三章 工资福利 第10条 职工工资不低于佛山市最低工资标准 元/月。第11条 企业实行计时工资和计件工资,此外包括加班工资、奖金、津贴和补贴。奖金和生活补贴不列入工资。计时工资和计件工资以劳动合同约定或单价协议书为准。
第12条 安排职工加班的,企业按国家有关规定支付加班工资。第13条 休息日安排职工加班,企业可以安排职工补休而不支付加班工资。
第14条 因职工原因给企业造成经济损失的,企业可以要求职工赔偿或依企业规章制度对职工罚款的,可从职工当月工资中扣除。罚款和赔偿可以同时执行,但每月扣除的不超过职工工资的20%,扣除后余额工资不低于最低工资标准 770 元。
第15条 有下列情况之一,企业可以代扣或减发职工工资而不属于克扣工资:
(1)代扣代缴员工个人所得税;(2)代扣代缴员工个人负担的社会保险费、住房公积金;(3)法院判决、裁定中要求代扣的抚养费、赡养费;(4)扣除依法赔偿给公司的费用;(5)、扣除员工违规违纪受到公司处罚的罚款;(6)劳动合同约定的可以减发的工资;(7)依法制定的公司规章制度规定可以减发的工资;(8)经济效益下浮而减发的浮动工资;(9)员工请事假而减发的工资;(10)法律、法规、规章规定可以扣除的工资或费用。
第四章 劳动安全卫生与劳动保护
第16条 公司努力贯彻安全第一、预防为主的方针,为员工提供符合国家规定的劳动安全卫生条件和必要的劳动防护用品,对从事有职业危害作业的员工和未成年工定期进行检查。第17条 公司对员工进行安全生产教育和培训,使员工具备必要的安全生产意识,熟悉安全生产制度和安全操作规程,掌握本岗位的安全操作技能。
第18条 公司实行安全生产责任制,部门经理(或部门主管)对本部门的安全问题负责,法定代表人(或总经理、安全主任)对全公司的安全问题负责。
第19条 公司对女职工和未成年工实行特殊劳动保护,不安排女职工和未成年工从事法律、法规禁止的劳动。第五章 劳动纪律与员工守则
第20条 员工必须遵守如下考勤和辞职制度:
(1)按时上班、下班,不得迟到、早退;(2)必须自己打卡,不得委托他人打卡或代替他人打卡;(3)因公外出、漏打、错打等特殊原因未能打卡的,必须由本部门经理或主管签卡方能有效;(4)有事、有病必须向部门经理或主管请假,不得无故旷工;(5)请假必须事先填写《请假单》,并附上相关证明(病假应有医生证明),在不得已的情况下,应提早电话、电报或委托他人请假,上班后及早补办请假手续;(6)一次迟到或早退20分钟以上的,应办理请假手续,否则以旷工论处(7)未履行 请假、续假、补假手续而擅不到岗者,均以旷工论处;(8)员工因故辞职,应提前一个月向部门经理或主管提交《辞职通知书》,试用期内辞职应提前三天书面通知;(9)员工辞职由部门经理或主管批准,辞职获准后,凭人事行政部签发的《离职通知书》办理移交手续。
第21条 员工必须遵守如下工作守则和职业道德:
(1)进入或逗留厂区,必须按规定佩戴厂证和穿着工作服;
(2)服从公司的正常调动和工作安排;
(3)严格遵守公司的各项规章制度、安全生产操作规程和岗位责任制;
(4)工作期间,不消极怠工,不干私活,不串岗,不吃零食,不打闹嬉戏,不大声说笑、喧哗,不打瞌睡等;
(5)不随地吐痰,不乱丢烟头杂物;
(6)爱护公物,小心使用公司机器设备、工具、物料,不得盗窃、贪污或故意损坏公司财物;
(7)节约用水、用电、用气,严禁浪费公物和公物私用;
(8)不得无理取闹、打架斗殴、造谣生事;
(9)关心公司,维护公司形象,敢于同有损公司形象和利益的行为作斗争。
(10)上班时间一到即刻开始工作,下班之后无特别事务不得逗留;
(11)上班时间原则上不准会客和打私人电话,因故而经部 门经理或主管许可的除外;
(12)遵守公司的保密制度,不得泄露公司的商业秘密。
第24条 员工必须遵守如下安全守则和操作规程:
(1)生产主管和领班要做好机器设备的保养、维修和用前检查工作,在确保机器设备可安全使用后,方可投入使用;
(2)操作机器设备时,必须严格遵守技术操作规程,保证产品质量,维护设备安全及保障人身的安全;
(3)设备使用过程中,如发现有异常情况,操作工应及时告知领班和相关技术人员处理,不得擅自盲目动作;
(4)发现直接危及人身安全的紧急情况,要立即采取应急措施,并及时将情况向领班、部门主管或部门经理报告;
(5)工作场所和仓库的消防通道,必须经常保持畅通,不得放置任何物品;
(6)对消防设备、卫生设备及其他危险防止设备,不得有随意移动、撤走及减损其效力的行为;
(7)、维修机器、电器、电线必须关闭电源或关机,并由相关技术人员或电工负责作业;
(8)非机械设备的操作人员,不得随意操作机械设备;
(9)危险物品必须按规定放置在安全的地方,不得随意乱放;
(10)车间和仓库严禁吸烟,吸烟要在指定场所,并充分注意烟火。
(11)严禁携带易燃易爆、有毒有害的危险物品进入公司;
(12)收工时要整理机械、器具、物料及文件等,确认火、电、气的安全,关好门窗、上好门锁。第六章 奖励与惩罚
第22条 为增强职工责任感,调动职工积极性和创造性,提高劳动生产率和工作效率,企业对表现优秀、成绩突出的职工实行奖励制度。奖励分为表扬、晋升、奖金三种。
第23条 职工品行端正,工作努力,忠于职守、遵规守纪,关心企业,服从安排,成为职工楷模者,给予通报表扬。
第24条 对有下列事迹之一的职工,除给予通报表扬外,另给予晋升、奖金的奖励:(1)对于生产技术或管理制度,提出具体方案,经执行确有成效,能提高企业经济效益,对企业贡献较大的;(2)节约物料,或对废料利用具有成效,能提高企业经济效益,对企业贡献较大的;(3)遇有灾情,勇于负责,奋不顾身,处置得当,极力抢救,使企业利益免受重大损失的;(4)敢于同坏人、坏事作斗争,举报损害企业利益行为,使企业避免重大损失的;(5)其他应当给予奖励的。
第25条 为维护正常的生产秩序和工作秩序,严肃厂规厂纪,公司对违规违纪员工实行惩罚制度。
惩罚分为:警告、记过、罚款、解除劳动合同四种。第26条 员工有下列情形之一,经查证属实,批评教育无效的,7 第一次口头警告,第二次以后每次书面警告1次,并罚款20至50元;每警告2次记过1次;一个月内被记过3次以上或一年内被记过6次以上的,属于严重违反企业规章制,予以解除劳动合同:
(1)委托他人打卡或代替他人打卡的;
(2)无正当理由经常迟到或早退(每次3分钟以上)的;
(3)不戴厂证或不穿厂服进入厂区的;
(4)擅离职守或串岗的(5)消极怠工,上班干私活的;
(6)随地吐痰或乱丢垃圾,污染环境卫生的;
(7)未经批准,上班时间会客或打私人电话的;
(8)下班后不按规定关灯、关电、关水、关气、关窗、锁门的;
(9)未经许可擅带外人入厂参观的;
(10)随意移动消防设备或乱放物品,阻塞消防通道的;
(11)违反公司规定携带物品进出厂区的;
(12)工作时间,与别人闲聊、打闹嬉戏、大声喧哗的;
(13)工作时间打瞌睡的;
(14)对客户的态度恶劣的;
(15)有其他与上述情形情节相当的情形的。
第27条 员工有下列情形之一,经查证属实,批评教育无效的,每次记过1次,并罚款50至100元;一个月内被记过3次以上 或一年内被记过6次以上的,属于严重违反企业规章制,予以解除劳动合同:
(1)无正当理由不服从公司正常调动或上司的工作安排的;
(2)无理取闹,打架斗殴,影响公司生产秩序和员工生活秩序的;
(3)上班时间打牌、下棋的;
(4)在宿舍私接电源或使用电炉的;
(5)私自调换床位或留宿外人的;
(6)浪费公司财物或公物私用的;
(7)非机械设备的操作者,随意操作机械设备的;(8)携带危险物品入厂的;
(9)在禁烟区吸烟的;
(10)有其他与上述情形情节相当的情形的。
第28条 员工有下列情形之一,经查证属实,批评教育无效的,属于严重违反企业规章制,予以解除劳动合同:
(1)一个月内累计旷工超过 日或者一年内累计旷工超过 日的;
(2)提供与录用有关的虚假证书或劳动关系状况证明,骗取公司录用的;
(3)违反操作规程,损坏机器设备、工具,浪费原材料,造成公司经济损失 元以上的;
(4)盗窃、贪污、侵占或故意损坏公司财物,造成公司经 济损失 元以上的;
(5)违反公司保密制度,泄露公司商业秘密,造成公司经济损失 元以上的;
(6)在异性宿舍与异性员工同宿的;
(7)利用工作或职务便利,收受贿赂而使公司利益受损的;
(8)有其他与上述情形情节相当的情形的。
第29 条:职工违规违纪对企业造成经济损失,除按规定处罚外,还应赔偿相应经济损失。
第30条 对职工的违纪处理,由违纪职工所在的车间主任根据本规章制度相关条款提出书面处理意见,并提交人事部门,再由人事部门提交总经理室审批。经批准后,由人事部门向违纪职工送达处理决定书,处理决定必须包括职工违纪事实、违纪证据、处理原因、处理依据、处理结果等五项内容。整个处理过程不得超过30日。
第31条 职工对企业处理不服的,享有申诉权利。申诉程序:第一步向车间主任申辩事实与理由;第二步对车间主任再次处理不服的,向人事部门申辩事实与理由;第三步对人事部门再次处理不服的,向总经理室申辨事实与理由,总经理室作出的再次处理决定为本企业最终处理决定。第七章 保密制度与竞业限制
第32条 为了维护企业利益,保护企业的商业秘密,特制订本保 密制度,企业全体职工必须严格遵守。
第33条 本规定所称的商业秘密是指不为公众所知悉,能为企业带来经济利益,具有实用性并经企业采取保密措施的技术信息和经营信息,以及企业依法律规定或者有关协议的约定,对外承担保密义务的事项。
第34条 可能成为企业商业秘密的技术信息包括技术方案、工程设计、制造方法、配方、工艺流程、技术指标、计算机软件、实验数据、实验结果、图纸、样品、模型、模具、技术文档、操作手册等等。
第35条 可能成为企业商业秘密的经营信息包括客户名单、客户订单、营销计划、采购资料、财务资料、进货渠道、产销策略、经营目标、经营项目、管理诀窍、货源情报、内部文件、会议纪要、经济合同、合作协议等等。
第36条 严格遵守企业秘密文件、资料、档案的登记、借用和保密制度,秘密文件应存放在有保密设施的文件柜中,借用秘密文件、资料、档案须经总经理或办公室主任批准;不得在公共场所谈论企业秘密事项和交接秘密文件。
第37条 秘密文件、资料、档案不得私自复印、摘录和外传。因工作需要复印时,应按有关规定经总经理或办公室主任批准。第38条 职工调职或离职时,必须将自己保管的秘密文件、资料、电子资料、档案或其他东西,按规定移交给企业总经理或办公室 主任,不得随意移交给其他人员。未办移交或者移交不清的,公司可以暂不予结算最后的工资。
第39条 企业根据实际情况和需要,与知悉或可能知悉企业商业秘密的职工另行签订《保密协议》,协议内容包括保密的内容、范围、权利、义务、期限、保密费和违约责任等事项。第57条 未经企业同意,职工在职期间不得自营或者为他人经营与企业同类的营业。
第40条 企业根据实际情况和需要,与知悉或可能知悉企业商业秘密的职工另行签订《竞业限制协议》,约定职工从离开企业后的一定期限和一定范围内,不得在生产同类且有竞争关系的产品的其他企业内任职。,本规定与现行劳动法律、法规、规章有抵触的,以现行劳动法律、法规、规章的规定为准。第41条 本规章制度未尽事宜,另行规定。
第42条 本规章制度已由职工代表大会(或全体职工)讨论和审议通过,并张榜公布。
第43条 本规章制度自 年 月 日生效。
(单位公章)
年 月 日