介紹
UCI數據可以使用matlab的dlmread(或textread或者利用matlab的導入數據)讀取,不過,需要先將不是數字的類別用數字,比如1/2/3等替換,否則讀入不了數值,當字元了。
每個數據檔案(*.data)包含以“屬性-值”對形式描述的很多個體樣本的記錄。對應的*.info檔案包含的大量的文檔資料。(有些檔案_generate_ databases;他們不包含*.data檔案。)作為數據集和領域知識的補充,在utilities目錄里包含了一些在使用這一數據集時的有用資料。
例子
下面以UCI中IRIS為例介紹一下數據集:
ucidata\iris中有三個檔案:
Index
iris.data
iris.names
index為資料夾目錄,列出了本資料夾里的所有檔案,如iris中index的內容如下:
Index of iris
18 Mar 1996 105 Index
08 Mar 1993 4551 iris.data
30 May 1989 2604 iris.names
iris.data為iris數據檔案,內容如下:
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
……
7.0,3.2,4.7,1.4,Iris-versicolor
6.9,3.1,4.9,1.5,Iris-versicolor
……
6.3,3.3,6.0,2.5,Iris-virginica
6.4,3.2,4.5,1.5,Iris-versicolor
5.8,2.7,5.1,1.9,Iris-virginica
7.1,3.0,5.9,2.1,Iris-virginica
……
如上,屬性直接以逗號隔開,中間沒有空格(5.1,3.5,1.4,0.2,),最後一列為本行屬性對應的值,即決策屬性Iris-setosa
。
iris.names介紹了irir數據的一些相關信息,如數據標題、數據來源、以前使用情況、最近信息、實例數目、實例的屬性等,如下所示部分:
……
7. Attribute Information:
1. sepal length in cm
2. sepal width in cm
3. petal length in cm
4. petal width in cm
5. class:
-- Iris Setosa
-- Iris Versicolour
-- Iris Virginica
……
9. Class Distribution: 33.3% for each of 3 classes.
本數據的使用實例請參考其他論文,或本站後面的內容。
下面以wine數據為例導入matlab並利用前面提到的libsvm做測試
>> uiimport('wine.data')
導入數據,workspace處出現wine數組178*14
將標籤和數據屬性提取,並保存到matlab平台下的數據
>> wine_label = wine(:,1);
>> wine_data = wine(:,2:end);
>> save winedat.mat
(下次使用的時候可以直接>> load winedat)
svm訓練模型得到wine模型
>> modelw = svmtrain(wine_data,wine_label);
.*
optimization finished, #iter = 239
nu = 0.892184
obj = -61.125695, rho = 0.131965
nSV = 130, nBSV = 53
.*
optimization finished, #iter = 193
nu = 0.882853
obj = -50.421538, rho = -0.166754
nSV = 107, nBSV = 42
.*
optimization finished, #iter = 214
nu = 0.800233
obj = -53.411663, rho = -0.286931
nSV = 119, nBSV = 44
Total nSV = 178
分類結果
>> [plabelw, accuracyw] = svmpredict(wine_label,wine_data,modelw);
Accuracy = 100% (178/178) (classification)