我正在運行一堆預處理在幾乎每次迭代中都會發生變化的實驗。一旦我有格式的數據,我需要從scikits(liblinear)運行分類器。我可以將數據轉換爲svm light格式。我知道有一個模塊將其轉換爲scikits標準。問題是我不想寫一個文件到磁盤。我有48場演出的內存,而且更願意在內存中進行轉換。用於scikit的SVM輕型裝載機學習
下面是一個例子,我採用svm light格式,將它寫入一個字符串對象,並將svm光加載器寫入它。不幸的是,裝載機拒絕撒播(其他方式)。有什麼建議麼?我正在運行超過1000個不同的預處理管道,我不能繼續寫入磁盤。
樣本SVM光數據是: http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/a1a
我的代碼
import numpy as np
from sklearn.datasets import svmlight_format
import cStringIO
bufFile = cStringIO.StringIO()
with open('C:/Users/theDesktop/Desktop/sampleData.txt') as a:
p = a.readlines()
a.close()
bufFile.writelines(p)
X_train, y_train = svmlight_format.load_svmlight_file(bufFile)
我的錯誤:
Traceback (most recent call last):
File "C:\Users\theDesktop\Desktop\module1.py",
line 25, in <module> X_train, y_train=svmlight_format.load_svmlight_file(bufFile)
File "C:\Python27\lib\site-packages\sklearn\datasets\svmlight_format.py",
line 97, in load_svmlight_file zero_based))
File "C:\Python27\lib\site-packages\sklearn\datasets\svmlight_format.py",
line 177, in load_svmlight_files for _, indices, _, _ in r):
File "C:\Python27\lib\site-packages\sklearn\datasets\svmlight_format.py",
line 177, in <genexpr> for _, indices, _, _ in r):
File "C:\Python27\lib\site-packages\numpy\core\fromnumeric.py",
line 1895, in amin return amin(axis, out)
ValueError: zero-size array to minimum.reduce without identity
嘿謝謝你試圖幫助我。還是一個懸而未決的問題,並不確定它在你的答案中得到解決。 a)sklearn在liblinear svm上有它自己的包裝器b)svm -light只是數據格式c)目前我基於一些預處理需求創建新文件,將文件存儲到硬盤然後通過load_svmlight_file讀取它 - 指向被覆蓋的磁盤上的特定文件。我不想寫入磁盤,而是想寫入更快的內存,並將load_svm_light指向存儲在內存中的此文件。 – pythOnometrist
我的黑客使用cstringio類似對象的文件失敗。所以任何解決這個問題的辦法都會有幫助對不起,不能在一個評論中適合所有這一切。 – pythOnometrist
我不知道你是否可以寫作工作記憶並從那裏讀取或不讀,但我沒有得到它的必要性。爲什麼你需要這樣一個高效的程序?你願意寫入工作內存的文本文件的平均大小是多少? – clancularius