UCI数据集整理(附论文常用数据集)
摘要:UCI數據集作為標準測試數據集經常出現在許多機器學習的論文中,為了更方便使用這些數據集有必要對其進行整理,這里整理了論文中經常出現的數據集,并詳細介紹如何使用MATLAB將數據集文件整理成自己需要的格式以及如何使用數據集文件。要點如下,博主另一篇博文UCI數據集詳解及其數據處理(附148個數據集及處理代碼)有更加詳細的介紹。
文章目錄
- 1. 前言
- 2. UCI數據集介紹
- 2.1 簡要認識
- 2.2 下載數據
- 3. 用程序整理數據集
- 4. 如何使用數據集文件
- 5. 下載鏈接
UCI數據集整理與MATLAB實現
代碼介紹及演示視頻鏈接:https://www.bilibili.com/video/BV1wS4y1Y7Sn/(正在更新中,歡迎關注博主B站視頻)
1. 前言
UCI數據集是一個常用的機器學習標準測試數據集,是加州大學歐文分校(University of CaliforniaIrvine)提出的用于機器學習的數據庫。機器學習算法的測試大多采用的便是UCI數據集了,其重要之處在于“標準”二字,新編的機器學習程序可以采用UCI數據集進行測試,類似的機器學習算法也可以一較高下。其官網地址如下:
website: UCI Machine Learning Repository
盡管從UCI數據集官網可以很容易找到許多想要的數據集,但要將其提供給自己的程序使用還需要了解數據的詳細信息。UCI數據集中并非所有數據集都是以相同格式存于文件中的,讀取和使用文件方式不一,因此有必要對數據文件稍作整理,特此總結。
2. UCI數據集介紹
2.1 簡要認識
要使用數據集中的數據首先需要分清標記和屬性值。如點擊進入數據集官網:UCI數據集官網選取數據集Iris
該數據集詳情頁面如下,從表中數據顯示該數據集的數據量為150,屬性數為4
而再往下的Data Set information 中則介紹了該數據集的詳細信息,下面的Attribute Information(屬性信息)是我們需要關注的,如下圖
其中1-4分別說明了四個屬性所代表的實際意義,而5則說明了該數據集分為三類:Iris Setosa、Iris Versicolour和Iris Virginica。認識到這些,再去看具體的Iris文件中的數據便清楚明了了,點擊標題Iris Data Set下方的Data Folder進入文件位置頁面,選擇iris.data(該文件為Iris數據集數據存放文件)
進入到數據詳情頁面,如下圖。可以看到文本的排列:每行5個數以逗號分隔,共150行,每行的前4列(紅框內的數)分別對應4個屬性值,而最后一列(綠色框內)為每個數據所屬類別(或稱標記)。當前看到的都是“Iris-setosa”一類的數據,往下翻則可看到”Iris-versicolour“和”Iris-virginica”
- 其他的數據集的情況與iris相似,而各個數據集屬性數或類別數各有差異。值得注意的是,有些數據集每行數據中間的分隔符并非都是“ ,”(逗號),還有可能是“ ”(空格);有些數據集的標記可能是用數字表示的,如1,2,… 其位置也可能出現在第1列(也可能文件中未給出標記,需自行加上);還有的可能屬性值都是英文字符,分別如下所示的wine數據集、heart-disease數據集、adult數據集。要想以統一的程序使用這樣內部格式不一的數據集,就需要在程序使用前根據實際情況對數據集進行調整了。
總之,各數據集可能各有差異,按照上面的步驟了解了各自的注釋信息,找到屬性數、分類數、標記等重要信息使用起來便順利得多。
2.2 下載數據
要保存網站上的數據文件,可以進入某個數據集的文件位置頁面,如Iris文件位置,選擇“iris.data”,右鍵,鏈接另存為,即可下載該數據集文件。如下所示,當前保存的文件格式為“.data”文件。
- 如若想保存文本文件(.txt),可先自行新建一個文本文件,直接點擊iris.data進入數據詳情頁面,直接全選所有數據將數據粘貼到自己新建的文本文件中。至于其他文件格式如.mat,.xls則可借助MATLAB先讀取文件數據然后轉存為其他格式,在后面章節也會介紹。
3. 用程序整理數據集
本節介紹如何使用MATLAB對數據集進行整理,下面以對Iris數據集的整理為例介紹。
首先從官網下載數據集,例如前面下載的iris.data或者自行復制的txt文件(自命名iris.txt),在文件所在文件夾新建一個.m文件。整理程序的功能是讀取原文件數據將最后一列的英文標記按每類改為1-3的數字并將標記放在第一列,重新存儲到新的txt文件,順便另存為.mat以及.xls文件。
從前面可知,iris文件的最后列為英文字母,如果直接采用MATLAB的load( )函數將導致最后一列文本未知錯誤,所以這里采用textscan( )函數。textscan( )函數調用方式如下
textscan( ): 讀取任意格式的文本文件。通過此函數,能夠以一次讀取一個塊的方式讀取文件,并且每個塊可以具有不同的格式。
使用方法:首先打開文本文件以進行讀取,fopen 返回文件標識符。
fileID = fopen('test80211.txt','r');
讀取 4 個簡介行,這些行是由換行符分隔的字符串。
Intro = textscan(fileID,'%s',4,'Delimiter','\n')
Intro = 1x1 cell array{4x1 cell} textscan 返回一個 1x1 元胞數組,其中包含由字符串組成的一個 4×1 元胞數組。
然后讀取每個塊的內容即可取出數據了,最后關閉文件。
fclose(fileID);
—— 引自 《MATLAB中文文檔》
對Iris數據集進行整理的MATLAB程序如下。首先利用textscan()讀取數據data為 1 * 5 cell 的元胞數組,每個元素是150*1 double 的數組,存儲了一列上的所有數據。明顯地,最后一個元素就是全部的標記數組,我們遍歷這些標記并把帶同一類標記的數據的索引記錄下來。根據記錄下的每類所有數據的索引便可取出每一類的數據并重新加上數字的標記。
- textscan()也可以讀取txt的文件數據,所以第6行的代碼中的文件名同樣可以是txt文件,如第5行代碼所示。
經過代碼1-42行的操作,原來帶有的英文標記的數據便由相應的數字標記代替了并放在了第一列的位置上。這里原來標記為Iris-setosa的數據重新標記為1,Iris-versicolor標記為2,Iris-virginica標記為3。
代碼45行和46行分別將整理好的數據保存為.mat文件和.data文件;第49-61行是通過文件操作的方式利用循環逐行逐列將數據打印到txt文件中,每個數據中間由逗號分隔,每行5個數據打印完則回車至下一行。
當然也可以采用64行或65行的方式保存txt文件,不過里面數據的格式稍有不同,讀者可以自行嘗試一下。整理前后的文件對比情況如下圖所示。參照以上代碼對于其他數據集的整理程序可在此之上根據實際需要稍作修改。
4. 如何使用數據集文件
整理好了數據文件,使用起來就比較簡單了,其實前面的代碼中已經讀取過文件中的數據了。經過整理現在文件中的數據都是數字形式,在MATLAB中可以通過load( )函數直接讀取了,如下代碼
iris_data=load('iris1.txt'); lable_iris=iris_data(:,1); attributes_iris=iris_data(:,2:end);iris_data包含了標記和屬性值的全部數據,lable_iris是iris_data的第一列所有元素,即每個數據的標記,attributes_iris取自其后的所有列上的元素,即所有屬性值的數組。具體的使用UCI數據集的機器學習算法實例可參考本人前面一篇博文Kmeans聚類算法詳解,后面也會繼續介紹。
5. 下載鏈接
論文中經常出現的數據集本人已經按照以上方法整理完成,現將其一并分享給大家。整理好的數據集如下表所示,每個數據集文件都保存了.mat、.data、.txt三種文件格式方便大家選擇下載,另外在整理過程中搜集了許多其他的UCI數據集,文件都是mat格式方便使用,下圖是壓縮包內的文件詳情,具體可見如下參考文章或參考視頻。
參考文章:https://zhuanlan.zhihu.com/p/568797582
參考視頻:https://www.bilibili.com/video/BV1wS4y1Y7Sn/
????本人微信公眾號已創建,點擊文末卡片關注“AI技術研究與分享”,后回復“UC20180830”即可獲取全部資源文件詳細信息。
????由于博主能力有限,博文中提及的方法與代碼即使經過測試,也難免會有疏漏之處。希望您能熱心指出其中的錯誤,以便下次修改時能以一個更完美更嚴謹的樣子,呈現在大家面前。同時如果有更好的實現方法也請您不吝賜教。
總結
以上是生活随笔為你收集整理的UCI数据集整理(附论文常用数据集)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TeamViewer免费版和付费版有什么
- 下一篇: AI智能语音客服机器人系统/方案/案列/