本文將介紹如何為UCI機器學習庫引入一個簡單直觀的API。用戶可以借此查看數(shù)據(jù)集描述,搜索感興趣的數(shù)據(jù)集,甚至可以根據(jù)數(shù)據(jù)集大小或機器學習任務(wù)分類下載。
介紹
UCI機器學習庫是機器學習領(lǐng)域的一個神器。對于初學者和進階學習者來說,它就像一家商店。它將數(shù)據(jù)庫、業(yè)務(wù)知識以及用于機器學習算法實證分析的數(shù)據(jù)生成器集中在一起。1987年,加州大學歐文分校的David Aha和他的學生以ftp檔案的形式創(chuàng)建了該網(wǎng)站。從那時開始,全世界的學生、教育工作者和研究人員將其作為機器學習數(shù)據(jù)集的主要來源。作為文檔影響的一個標志,它已被引用超過1000次,使其成為計算機科學中引用率最高的100篇“論文”之一。
附UCI鏈接:
http://archive.ics.uci.edu/ml/index.php
相比之下,用戶要操縱門戶網(wǎng)站費時費力,因為感興趣的數(shù)據(jù)集沒有簡單直觀的API或下載鏈接,必須跳轉(zhuǎn)多個頁面才能轉(zhuǎn)到目標數(shù)據(jù)所在的原始頁面。此外,如果你對特定類型的機器學習任務(wù)(例如回歸或分類)感興趣并且想要下載與該任務(wù)相對應(yīng)的所有數(shù)據(jù)集,很難通過簡單的命令實現(xiàn)。
我很高興能為UCI ML網(wǎng)站引入一個簡單直觀的API,用戶可以輕松查找數(shù)據(jù)集描述,搜索他們感興趣的特定數(shù)據(jù)集,甚至可以按大小或機器學習任務(wù)分類下載數(shù)據(jù)集。
從此處下載
這是一個由MIT授權(quán)的Python 3.6開源代碼庫,它提供了函數(shù)和方法,以便用戶通過交互方式使用UCI ML數(shù)據(jù)集。以下Github頁面可以下載/復(fù)制/分離代碼庫。
附Github:
https://github.com/tirthajyoti/UCI-ML-API
所需要的包
運行此代碼只需要以下三個廣泛使用的Python包。為了便于安裝這些支持包,setup.bash和setup.bat文件包含在我的repo中。只需在Linux / Windows shell中運行即可!
Pandas
Beautifulsoup 4
Requests
如何運行?
首先,確保你已連接到網(wǎng)絡(luò)!然后,只需下載/克隆Github中的repo,確保安裝了以上包。
git clone https://github.com/tirthajyoti/UCI-ML-API.git
{your_local_directory}
然后轉(zhuǎn)到已克隆Git的your_local_directory并在終端上運行以下命令。
python Main.py
隨后將打開一個菜單,允許你執(zhí)行各種任務(wù)。菜單的屏幕截圖如下:

目前支持的特征和函數(shù)
以下是目前應(yīng)用的特征(即上圖中1-9)
1.抓取整個網(wǎng)站以構(gòu)建本地數(shù)據(jù)庫,其中包括數(shù)據(jù)集名稱,描述和URL。
2.抓取整個網(wǎng)站以構(gòu)建本地數(shù)據(jù)庫,其中包括數(shù)據(jù)集名稱,大小和機器學習任務(wù)。
3.搜索并下載特定數(shù)據(jù)集。
4.下載前幾個數(shù)據(jù)集。
5.顯示所有數(shù)據(jù)集的名稱。
6.顯示所有數(shù)據(jù)集的簡要描述。
7.搜索數(shù)據(jù)集的單行描述和網(wǎng)頁鏈接(了解更多信息)。
8.根據(jù)數(shù)據(jù)集大小下載數(shù)據(jù)集。
9.根據(jù)與之關(guān)聯(lián)的機器學習任務(wù)下載數(shù)據(jù)集。
案例(搜索并下載某個數(shù)據(jù)集)
例如,如果要下載著名的Iris數(shù)據(jù)集,只需從菜單中選擇選項3,輸入存儲的本地數(shù)據(jù)庫的名稱(以便搜索更迅速)。 就可以下載Iris數(shù)據(jù)集并將其存儲在名為“Iris”的文件夾中!

案例(搜索包含關(guān)鍵詞的數(shù)據(jù)集)
如果選擇選項7,將使用關(guān)鍵字進行搜索,得到名稱與搜索字符串匹配的所有數(shù)據(jù)集(甚至部分)的簡短摘要。你還可以獲得每個結(jié)果的網(wǎng)頁鏈接,以便根據(jù)需要進一步探索數(shù)據(jù)。 下面的屏幕截圖是使用關(guān)鍵詞Cancer進行搜索的結(jié)果。

如果你想另辟蹊徑
如果你想避開這個簡單的用戶API,而使用基礎(chǔ)函數(shù),也是可行的。大致流程如下,首先導(dǎo)入必要的包。
fromUCI_ML_Functions import*importpandas aspd
read_dataset_table():從url讀取數(shù)據(jù)集并進一步處理以便后續(xù)的數(shù)據(jù)清洗和分類。
url:
https://archive.ics.uci.edu/ml/datasets.html
clean_dataset_table():清洗原始數(shù)據(jù)集(數(shù)據(jù)框?qū)ο螅―ataFrame))并返回數(shù)據(jù)。處理后的數(shù)據(jù)刪除了包含空缺值的觀測。并且刪除了“默認任務(wù)”列,該列用來顯示與數(shù)據(jù)集關(guān)聯(lián)的主機學習任務(wù)。
build_local_table(filename=None, msg_flag=True):讀取UCI ML網(wǎng)站并使用名稱,大小,ML任務(wù),數(shù)據(jù)類型等信息構(gòu)建本地表。
filename:用戶可以選擇的文件名。如果未選擇,則選擇默認名稱('UCI table.csv')
msg_flag:控制信息復(fù)雜度(verbosity)
build_dataset_list():抓取UCI ML數(shù)據(jù)集頁面的信息,并構(gòu)建包含所有數(shù)據(jù)集信息的列表。
build_dataset_dictionary():抓取UCI ML數(shù)據(jù)集頁面的信息,并構(gòu)建包含所有數(shù)據(jù)集名稱和描述的字典(dictionary)。此外,還對應(yīng)數(shù)據(jù)集生成了唯一標識符,下載器需要這個標識符字符串來下載數(shù)據(jù)文件。這種情況下,通用名稱不起作用。
build_full_dataframe():構(gòu)建一個包含所有信息的數(shù)據(jù)框(DataFrame),包括用于下載數(shù)據(jù)的URL鏈接。
build_local_database(filename=None, msg_flag=True):讀取UCI ML網(wǎng)站并使用以下信息構(gòu)建本地數(shù)據(jù)庫:name,abstract,data page URL。
filename:可由用戶選擇的文件名。如果未選擇,程序?qū)⑦x擇默認名稱('UCI database.csv')
msg_flag:控制信息復(fù)雜度(verbosity)
return_abstract(name,local_database=None,msg_flag=False):通過搜索給定的名稱,返回特定數(shù)據(jù)集的單行描述(以及更多信息的網(wǎng)頁鏈接)。
local_database:本地存儲的數(shù)據(jù)庫名稱(CSV文件),即在同一目錄中,其中包含有關(guān)UCI ML repo上所有數(shù)據(jù)集的信息
msg_flag:控制信息復(fù)雜度(verbosity)
describe_all_dataset(msg_flag=False):調(diào)用build_dataset_dictionary函數(shù)并顯示所有數(shù)據(jù)集的描述。
print_all_datasets_names(msg_flag=False):調(diào)用build_dataset_dictionary函數(shù)并顯示所有數(shù)據(jù)集的名稱。
extract_url_dataset(dataset,msg_flag=False):給定數(shù)據(jù)集標識符,此函數(shù)提取實際原始數(shù)據(jù)所在頁面的URL。
download_dataset_url(url,directory,msg_flag=False,download_flag=True):從給定url中的鏈接下載所有文件。
msg_flag:控制信息復(fù)雜度(verbosity)
download_flag:默認為True。如果設(shè)置為False,則僅創(chuàng)建目錄但不下載(用于測試目的)
download_datasets(num=10,local_database=None,msg_flag=True,download_flag=True):下載數(shù)據(jù)集并將它們放在以數(shù)據(jù)集命名的本地目錄中。默認情況下,僅下載前10個數(shù)據(jù)集。用戶可以選擇要下載的數(shù)據(jù)集數(shù)量。
msg_flag:控制信息復(fù)雜度(verbosity)
download_flag:默認為True。如果設(shè)置為False,則僅創(chuàng)建目錄但不啟動下載(用于測試目的)
download_dataset_name(name,local_database=None,msg_flag=True,download_flag=True):根據(jù)下載指定名稱的數(shù)據(jù)集。
local_database:本地存儲的數(shù)據(jù)庫名稱(CSV文件),即在同一目錄中包含有關(guān)UCI ML存儲庫中所有數(shù)據(jù)集的名稱和URL信息
msg_flag:控制信息復(fù)雜度(verbosity)
download_flag:默認為True。如果設(shè)置為False,則僅創(chuàng)建目錄但不啟動下載(用于測試目的)
download_datasets_size(size='Small',local_database=None,local_table=None,msg_flag=False,download_flag=True):下載滿足'size'標準的所有數(shù)據(jù)集。
size:用戶想要下載的數(shù)據(jù)集的大小。取值可以是以下任何一種:‘Small’, ‘Medium’, ‘Large’, ’Extra Large’。
local_database:本地存儲的數(shù)據(jù)庫名稱(CSV文件),即在同一目錄中包含有關(guān)UCI ML存儲庫中所有數(shù)據(jù)集的名稱和URL信息。
local_table:本地存儲的數(shù)據(jù)庫名稱(CSV文件),即在同一目錄中包含關(guān)于UCI ML repo上所有數(shù)據(jù)集的特征信息,即樣本數(shù)量以及數(shù)據(jù)集執(zhí)行的機器學習任務(wù)類型。
msg_flag:控制信息復(fù)雜度(verbosity)。
download_flag:默認值為True。如果設(shè)置為False,則僅創(chuàng)建目錄而不下載(用于測試目的)。
download_datasets_task(task='Classification',local_database=None,local_table=None,msg_flag=False,download_flag=True):下載用戶想要的所有符合ML任務(wù)標準的數(shù)據(jù)集。
task:用戶想要下載數(shù)據(jù)集的機器學習任務(wù)。task取值可以是以下任何一種:'Classification', 'Recommender Systems', 'Regression', 'Other/Unknown', 'Clustering', 'Causal Discovery'
local_database:本地存儲的數(shù)據(jù)庫名稱(CSV文件),即在同一目錄中包含有關(guān)UCI ML存儲庫中所有數(shù)據(jù)集的名稱和URL信息
local_table:本地存儲的數(shù)據(jù)庫名稱(CSV文件),即在同一目錄中包含關(guān)于UCI ML repo上所有數(shù)據(jù)集的特征信息,即樣本數(shù)量以及數(shù)據(jù)集執(zhí)行的機器學習任務(wù)類型
msg_flag:控制信息復(fù)雜度(verbosity)
download_flag:默認值為True。如果設(shè)置為False,則僅創(chuàng)建目錄而不下載(用于測試目的)
-
機器學習
+關(guān)注
關(guān)注
66文章
8556瀏覽量
137044 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1236瀏覽量
26215
原文標題:UCI 機器學習數(shù)據(jù)庫的 Python API 介紹
文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Python機器學習常用庫
使用 Python 開始機器學習
50個機器學習實用API干貨
了解基于FastCV視覺庫的SVM機器學習算法
Spark機器學習庫的各種機器學習算法
最全面的52個機器學習API盤點,一文讓你全get
50個機器學習實用API
《機器學習訓(xùn)練秘籍》中的六個概念
DeepMind又放福利:開源了一個內(nèi)部的分布式機器學習庫TF-Replicator
一個基于PyTorch的幾何深度學習擴展庫,為GNN的研究和應(yīng)用再添利器
Danfo.js提供高性能、直觀易用的數(shù)據(jù)結(jié)構(gòu),支持結(jié)構(gòu)化數(shù)據(jù)的操作和處理
談?wù)勅绾螌?b class='flag-5'>機器學習引入自動化
MindSpore量子機器學習庫MindQuantum
如何為UCI機器學習庫引入一個簡單直觀的API
評論