2013-05-04 95 views
0

我有一個csv格式的大型(150000)數據集。數據集在一些領域有一些噪音和錯誤。我想讀取這個文件並使用svm(使用libsvm)對它進行分類。 我需要讀取乾淨且可用的數據子集。選擇10000個乾淨的隨機記錄,並且沒有任何字段是嘈雜的。嘈雜的文件的值爲0或NA。我怎樣才能用matlab做到這一點?在matlab中讀取一個csv文件的隨機子集

+5

簡單地讀取整個文件,刪除噪聲線,然後從剩餘的行中選擇10000個隨機行? – 2013-05-05 09:51:57

+0

我同意@Eitan這是最簡單的解決方案。您必須讀取整個文件或創建自定義CSV解析函數,該函數在處理文件時忽略具有0或NA值的行。 – dratewka 2013-05-05 09:58:43

回答

0

如果您想要一個正確的MATLAB解決方案,您將需要製作一個自定義文件讀取器。不過這可能不值得。

我能想到的最快解決方案是在用MATLAB加載文件之前用另一種工具(例如grep)過濾掉所有錯誤的行,使用csvread。如果你有grep,你可以擺脫與「NA」行:

cat file | grep --invert-match NA > file.filtered 

你可以閱讀file.filtered沒有與MATLAB的csvread功能的問題。您可以很容易地從MATLAB內部刪除0行。