獨家 | UCI機器學習數據庫的Python API介紹

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

獨家 | UCI機器學習數據庫的Python API介紹 科技 第1張

作者:Tirthajyoti Sarkar

翻譯:王雨桐

校對:丁楠雅

本文約2600字,建議閱讀9分鐘

本文將帶你了解UCI數據庫的Python API,通過實際案例拆解並講解代碼。

本文將介紹如何為UCI機器學習庫引入一個簡單直觀的API。用戶可以借此查看數據集描述,搜尋感興趣的數據集,甚至可以根據數據集大小或機器學習任務分類下載。

介紹

UCI機器學習庫是機器學習領域的一個神器。對於初學者和進階學習者來說,它就像一家商店。它將數據庫、業務知識以及用於機器學習算法實證分析的數據生成器集中在一起。1987年,加州大學歐文分校的David Aha和他的學生以ftp檔案的形式創建了該網站。從那時開始,全世界的學生、教育工作者和研究人員將其作為機器學習數據集的主要來源。作為文檔影響的一個標誌,它已被引用超過1000次,使其成為計算機科學中引用率最高的100篇「論文」之一。

附UCI鏈接:

http://archive.ics.uci.edu/ml/index.php

獨家 | UCI機器學習數據庫的Python API介紹 科技 第2張

相比之下,用戶要操縱門戶網站費時費力,因為感興趣的數據集沒有簡單直觀的API或下載鏈接,必須跳轉多個頁面才能轉到目標數據所在的原始頁面。此外,如果你對特定類型的機器學習任務(例如回歸或分類)感興趣並且想要下載與該任務相對應的所有數據集,很難通過簡單的命令做到。

我很高興能為UCI ML網站引入一個簡單直觀的API,用戶可以輕鬆查找數據集描述,搜尋他們感興趣的特定數據集,甚至可以按大小或機器學習任務分類下載數據集。

從此處下載

這是一個由MIT授權的Python 3.6開源代碼庫,它提供了函數和方法,以便用戶通過交互方式使用UCI ML數據集。以下Github頁面可以下載/復制/分離代碼庫。

附Github:

https://github.com/tirthajyoti/UCI-ML-API

所需要的包

運行此代碼只需要以下三個廣泛使用的Python包。為了便於安裝這些支持包,setup.bash和setup.bat文件包含在我的repo中。只需在Linux / Windows shell中運行即可!

  • Pandas

  • Beautifulsoup 4

  • Requests

如何運行?

首先,確保你已連接到網路!然後,只需下載/克隆Github中的repo,確保安裝了以上包。

git clone https://github.com/tirthajyoti/UCI-ML-API.git

{your_local_directory}

然後轉到已克隆Git的your_local_directory並在終端上運行以下命令。

python Main.py

隨後將打開一個菜單,允許你執行各種任務。菜單的螢幕截圖如下:

獨家 | UCI機器學習數據庫的Python API介紹 科技 第3張

目前支持的特徵和函數

以下是目前應用的特徵(即上圖中1-9)

1. 抓取整個網站以構建本地數據庫,其中包括數據集名稱,描述和URL。

2. 抓取整個網站以構建本地數據庫,其中包括數據集名稱,大小和機器學習任務。

3. 搜尋並下載特定數據集。

4. 下載前幾個數據集。

5. 顯示所有數據集的名稱。

6. 顯示所有數據集的簡要描述。

7. 搜尋數據集的單行描述和網頁鏈接(了解更多信息)。

8. 根據數據集大小下載數據集。

9. 根據與之關聯的機器學習任務下載數據集。

案例(搜尋並下載某個數據集)

例如,如果要下載著名的Iris數據集,只需從菜單中選擇選項3,輸入存儲的本地數據庫的名稱(以便搜尋更迅速)。 就可以下載Iris數據集並將其存儲在名為「Iris」的文件夾中!

獨家 | UCI機器學習數據庫的Python API介紹 科技 第4張

案例(搜尋包含關鍵詞的數據集)

如果選擇選項7,將使用關鍵字進行搜尋,得到名稱與搜尋字符串匹配的所有數據集(甚至部分)的簡短摘要。你還可以獲得每個結果的網頁鏈接,以便根據需要進一步探索數據。 下面的螢幕截圖是使用關鍵詞Cancer進行搜尋的結果。

獨家 | UCI機器學習數據庫的Python API介紹 科技 第5張

如果你想另辟蹊徑

如果你想避開這個簡單的用戶API,而使用基礎函數,也是可行的。大致流程如下,首先導入必要的包。

fromUCI_ML_Functions import*importpandas aspd

read_dataset_table():從url讀取數據集並進一步處理以便後續的數據清洗和分類。

url:

https://archive.ics.uci.edu/ml/datasets.html

clean_dataset_table():清洗原始數據集(數據框對象(DataFrame))並返回數據。處理後的數據刪除了包含空缺值的觀測。並且刪除了「默認任務」列,該列用來顯示與數據集關聯的主機學習任務。

build_local_table(filename=None, msg_flag=True):讀取UCI ML網站並使用名稱,大小,ML任務,數據類型等信息構建本地表。

  • filename:用戶可以選擇的文件名。如果未選擇,則選擇默認名稱(’UCI table.csv’)

  • msg_flag:控制信息複雜度(verbosity)

build_dataset_list():抓取UCI ML數據集頁面的信息,並構建包含所有數據集信息的列表。

build_dataset_dictionary():抓取UCI ML數據集頁面的信息,並構建包含所有數據集名稱和描述的字典(dictionary)。此外,還對應數據集生成了唯一標識符,下載器需要這個標識符字符串來下載數據文件。這種情況下,通用名稱不起作用。

build_full_dataframe():構建一個包含所有信息的數據框(DataFrame),包括用於下載數據的URL鏈接。

build_local_database(filename=None, msg_flag=True):讀取UCI ML網站並使用以下信息構建本地數據庫:name,abstract,data page URL。

  • filename:可由用戶選擇的文件名。如果未選擇,程序將選擇默認名稱(’UCI database.csv’)

  • msg_flag:控制信息複雜度(verbosity)

return_abstract(name,local_database=None,msg_flag=False):通過搜尋給定的名稱,返回特定數據集的單行描述(以及更多信息的網頁鏈接)。

  • local_database:本地存儲的數據庫名稱(CSV文件),即在同一目錄中,其中包含有關UCI ML repo上所有數據集的信息

  • msg_flag:控制信息複雜度(verbosity)

describe_all_dataset(msg_flag=False):調用build_dataset_dictionary函數並顯示所有數據集的描述。

print_all_datasets_names(msg_flag=False):調用build_dataset_dictionary函數並顯示所有數據集的名稱。

extract_url_dataset(dataset,msg_flag=False):給定數據集標識符,此函數提取實際原始數據所在頁面的URL。

download_dataset_url(url,directory,msg_flag=False,download_flag=True):從給定url中的鏈接下載所有文件。

  • msg_flag:控制信息複雜度(verbosity)

  • download_flag:默認為True。如果設置為False,則僅創建目錄但不下載(用於測試目的)

download_datasets(num=10,local_database=None,msg_flag=True,download_flag=True):下載數據集並將它們放在以數據集命名的本地目錄中。默認情況下,僅下載前10個數據集。用戶可以選擇要下載的數據集數量。

  • msg_flag:控制信息複雜度(verbosity)

  • download_flag:默認為True。如果設置為False,則僅創建目錄但不啟動下載(用於測試目的)

download_dataset_name(name,local_database=None,msg_flag=True,download_flag=True):根據下載指定名稱的數據集。

  • local_database:本地存儲的數據庫名稱(CSV文件),即在同一目錄中包含有關UCI ML存儲庫中所有數據集的名稱和URL信息

  • msg_flag:控制信息複雜度(verbosity)

  • download_flag:默認為True。如果設置為False,則僅創建目錄但不啟動下載(用於測試目的)

download_datasets_size(size=’Small’,local_database=None,local_table=None,msg_flag=False,download_flag=True):下載滿足’size’標準的所有數據集。

  • size:用戶想要下載的數據集的大小。取值可以是以下任何一種:‘Small’, ‘Medium’, ‘Large’, ’Extra Large’。

  • local_database:本地存儲的數據庫名稱(CSV文件),即在同一目錄中包含有關UCI ML存儲庫中所有數據集的名稱和URL信息。

  • local_table:本地存儲的數據庫名稱(CSV文件),即在同一目錄中包含關於UCI ML repo上所有數據集的特徵信息,即樣本數量以及數據集執行的機器學習任務類型。

  • msg_flag:控制信息複雜度(verbosity)。

  • download_flag:默認值為True。如果設置為False,則僅創建目錄而不下載(用於測試目的)。

download_datasets_task(task=’Classification’,local_database=None,local_table=None,msg_flag=False,download_flag=True):下載用戶想要的所有符合ML任務標準的數據集。

  • task:用戶想要下載數據集的機器學習任務。task取值可以是以下任何一種:’Classification’, ‘Recommender Systems’, ‘Regression’, ‘Other/Unknown’, ‘Clustering’, ‘Causal Discovery’

  • local_database:本地存儲的數據庫名稱(CSV文件),即在同一目錄中包含有關UCI ML存儲庫中所有數據集的名稱和URL信息

  • local_table:本地存儲的數據庫名稱(CSV文件),即在同一目錄中包含關於UCI ML repo上所有數據集的特徵信息,即樣本數量以及數據集執行的機器學習任務類型

  • msg_flag:控制信息複雜度(verbosity)

  • download_flag:默認值為True。如果設置為False,則僅創建目錄而不下載(用於測試目的)

原文標題:

Introducing a simple and intuitive Python API for UCI machine learning repository

原文鏈接:

https://www.codementor.io/tirthajyotisarkar/introducing-a-simple-and-intuitive-python-api-for-uci-machine-learning-repository-p8dfargnt

譯者簡介

獨家 | UCI機器學習數據庫的Python API介紹 科技 第6張

王雨桐,UIUC統計學在讀碩士,本科統計專業,目前專注於Coding技能的提升。理論到應用的轉換中,敬畏數據,持續進化。

翻譯組招募信息

工作內容:需要一顆細致的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。

點擊文末「閱讀原文」加入數據派團隊~

獨家 | UCI機器學習數據庫的Python API介紹 科技 第7張

獨家 | UCI機器學習數據庫的Python API介紹 科技 第8張

點擊「閱讀原文」擁抱組織

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!