我有一個以svmlight數據集形式存在的15M +訓練實例的數據集。我使用sklearn.datasets.load_svmlight_file()讀取這些數據。數據本身並不稀疏,所以我不介意將其轉換爲任何其他密集表示(我更喜歡這一點)。將訓練實例插入scikit-learn數據集
在我的程序中的某個時候,我需要爲我的訓練數據(隨機位置)添加數以百萬計的新數據記錄(實例)。我使用vstack,也嘗試轉換爲密集矩陣,但效率不高或未能提供正確的結果(詳情如下)。有沒有辦法有效地完成這項任務?
我正在實施DAgger算法,並且在第一次迭代中它試圖添加大約7M個新的訓練實例。我想在隨機位置添加這些新實例。我試過vstack(因爲我的數據是csr格式的,我期望它至少不會太低效)。然而,24小時後還沒有完成。
我試圖將數據轉換爲numpy.matrix格式,只是以svmlight格式加載它們之後。抽樣顯示它可以幫助我加快速度,但有趣的是,我從轉換數據集和原始數據集的訓練中得到的結果看起來並不匹配。它似乎sklearn不符合我認爲的方式與numpy矩陣。我在sklearn文檔中找不到任何東西。
我認爲的另一種方法是從一開始就定義一個更大的數據集,以便它在內存中「保留」足夠的空間,但是當我使用sklearn訓練或測試功能時,我會將我的數據集編入最後「真實」記錄。這樣,我認爲,vstack不會要求在內存中開闢一個新的大空間,這可能會使整個操作需要更長的時間。對此有何想法?