2015-11-08 64 views
2

我對Python很新。我使用python的閱讀現在ARFF文件:如何使用python處理arff文件中的數據?

import arff 

for row in arff.load('cpu.arff'): 
    x = row 
    print(x) 

樣本輸出的部分是這樣的格式:

<Row(125.0,256.0,6000.0,256.0,16.0,128.0,198.0)> 
<Row(29.0,8000.0,32000.0,32.0,8.0,32.0,269.0)> 
<Row(29.0,8000.0,32000.0,32.0,8.0,32.0,220.0)> 
<Row(29.0,8000.0,32000.0,32.0,8.0,32.0,172.0)> 
<Row(29.0,8000.0,16000.0,32.0,8.0,16.0,132.0)> 
<Row(26.0,8000.0,32000.0,64.0,8.0,32.0,318.0)> 
<Row(23.0,16000.0,32000.0,64.0,16.0,32.0,367.0)> 

實際上,只有數據的最後一列是標籤,其餘的數據是屬性。我想知道如何通過使用數組來保存它們? 因爲我想將最後一列的數據分配爲y,並且將前六列數據分配爲我的x,然後我將對來自arff文件的數據進行交叉驗證。

或者是否有任何方法來自動分隔數據的屬性和標籤從arff文件?從arff模塊support typical python array slicing

+0

如果'row'是一個數組中分離數據,則可以使用'X =行[: - 1]'和'ÿ =行[6]'。 –

回答

0

行對象,從而可以從標籤容易

import arff 

X = [] 
y = [] 

for row in arff.load('cpu.arff'): 
    X.append(row[:-1]) 
    y.append(row[-1]) 
+0

我試圖像你說的,但我得到「TypeError:難以置信的類型」。任何理想? Ty :) – Andy

+0

顯示確切的代碼,上面的一個不需要散列,也許你使用set/dictionary而不是列表? – lejlot