1. 程式人生 > >介紹UCI機器學習資料庫的Python API

介紹UCI機器學習資料庫的Python API

本文將帶你瞭解UCI資料庫的Python API,通過實際案例拆解並講解程式碼。

 

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

 

介紹

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

附UCI連結:http://archive.ics.uci.edu/ml/index.php

 

 

介紹UCI機器學習資料庫的Python API

 

 

相比之下,使用者要操縱入口網站費時費力,因為感興趣的資料集沒有簡單直觀的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

 

 

目前支援的特徵和函式

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

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

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

3. 搜尋並下載特定資料集。

4. 下載前幾個資料集。

5. 顯示所有資料集的名稱。

6. 顯示所有資料集的簡要描述。

7. 搜尋資料集的單行描述和網頁連結(瞭解更多資訊)。

8. 根據資料集大小下載資料集。

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

 

案例(搜尋並下載某個資料集)

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

介紹UCI機器學習資料庫的Python API

 

 

 

案例(搜尋包含關鍵詞的資料集)

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

介紹UCI機器學習資料庫的Python API

 

 

如果你想另闢蹊徑

 

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

 

from UCI_ML_Functions import *import pandas as pd

 

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,則僅建立目錄而不下載(用於測試目的)