Scikit SVM:创建训练数据集

Scikit SVM: create training dataset

我正在使用此站点 http://scikit-learn.org/stable/datasets/(副标题 5.5)创建我的自定义数据集,以便使用 scikit 执行 SVM。我的一天总结:我基本上不知道我在做什么。

对于我的论文,我想预测股票 return 方向,即 SVM 的输出应该是 1(向上)或 -1(向下)。目前我正在尝试用随机样本计算 SVM(因为我确实了解教程的工作原理)。

在提到的网站上它说每一行都采用 <label> <feature-id>:<feature-value> <feature-id>:<feature-value> 的形式,我认为我提供的训练集应该采用相同的格式。因此,我在 Notepad++ 中创建了以下训练样本:

<1> <1>:<0>, <1>:<19260800>, <1>:<77.83>
<1> <2>:<-1>, <2>:<20110000>, <2>:<75.78>
<-1> <3>:<1>, <3>:<53306400>, <3>:<76.24>
<1> <4>:<0>, <4>:<61293500>, <4>:<78.00>
<-1> <5>:<-1>, <5>:<42649500>, <5>:<75.91>

例如第二行:

<1> 表示股票从前一天开始上涨,<2> 是第二行数据的值,<-1> 是当天特定公司的负面 Twitter 情绪,<20110000 >为当日成交量,<75.78>为当日调整后收盘价。

我希望你明白我想说的。我希望更多人能帮助我。

提前致谢!

查看 the docs 中引用的相关 link:

Public datasets in svmlight / libsvm format: http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/

Faster API-compatible implementation: https://github.com/mblondel/svmlight-loader

如果你点击第一个 link 你会发现 example data sets such as this one:

-1 3:1 11:1 14:1 19:1 39:1 42:1 55:1 64:1 67:1 73:1 75:1 76:1 80:1 83:1 
-1 3:1 6:1 17:1 27:1 35:1 40:1 57:1 63:1 69:1 73:1 74:1 76:1 81:1 103:1 
-1 4:1 6:1 15:1 21:1 35:1 40:1 57:1 63:1 67:1 73:1 74:1 77:1 80:1 83:1 
-1 5:1 6:1 15:1 22:1 36:1 41:1 47:1 66:1 67:1 72:1 74:1 76:1 80:1 83:1 
-1 2:1 6:1 16:1 22:1 36:1 40:1 54:1 63:1 67:1 73:1 75:1 76:1 80:1 83:1 
-1 2:1 6:1 14:1 20:1 37:1 41:1 47:1 64:1 67:1 73:1 74:1 76:1 82:1 83:1 

所以你不需要括号,<>。只需用数字标签填充文件, 和由冒号分隔的数字对。对之间没有逗号。

Per the docs,然后可以用

加载数据集
>>> from sklearn.datasets import load_svmlight_file
>>> X_train, y_train = load_svmlight_file("/path/to/train_dataset.txt")