【Scikit-Learn 中文文檔】數據集加載工具 - 用戶指南 | ApacheCN

中文文檔: http://sklearn.apachecn.org/cn/stable/datasets/index.html

英文文檔: http://sklearn.apachecn.org/en/stable/datasets/index.html

官方文檔: http://scikit-learn.org/stable/

GitHub: https://github.com/apachecn/scikit-learn-doc-zh(覺得不錯麻煩給個 Star,我們一直在努力)

貢獻者: https://github.com/apachecn/scikit-learn-doc-zh#貢獻者

關於我們: http://www.apachecn.org/organization/209.html




5. 數據集加載工具

該 sklearn.datasets 包裝在 Getting Started 部分中嵌入了介紹一些小型玩具的數據集。

爲了在控制數據的統計特性(通常是特徵的 correlation (相關性)和 informativeness (信息性))的同時評估數據集 (n_samples 和 n_features) 的規模的影響,也可以生成綜合數據。

這個軟件包還具有幫助用戶獲取更大的數據集的功能,這些數據集通常由機器學習社區使用,用於對來自 ‘real world’ 的數據進行檢測算法。

5.1. 通用數據集 API

對於不同類型的數據集,有三種不同類型的數據集接口。最簡單的是樣品圖像的界面,下面在 樣本圖片 部分中進行了描述。

數據集生成函數和 svmlight 加載器分享了一個較爲簡化的接口,返回一個由 n_samples * n_features 組成的 tuple (X, y) 其中的 X 是 numpy 數組 y 是包含目標值的長度爲 n_samples 的數組

玩具數據集以及 ‘real world’ 數據集和從 mldata.org 獲取的數據集具有更復雜的結構。這些函數返回一個類似於字典的對象包含至少兩項:一個具有 data 鍵(key)的 n_samples * n_features 形狀的數組(除了20個新組之外except for 20newsgroups)和一個具有 target 鍵(key)的包含 target values (目標值)的 n_samples 長度的 numpy 數組。

數據集還包含一些對``DESCR`` 描述,同時一部分也包含 feature_names 和 ``target_names``的特徵。有關詳細信息,請參閱下面的數據集說明

5.2. 玩具數據集

scikit-learn 內置有一些小型標準數據集,不需要從某個外部網站下載任何文件。

load_boston([return_X_y]) Load and return the boston house-prices dataset (regression).
load_iris([return_X_y]) Load and return the iris dataset (classification).
load_diabetes([return_X_y]) Load and return the diabetes dataset (regression).
load_digits([n_class, return_X_y]) Load and return the digits dataset (classification).
load_linnerud([return_X_y]) Load and return the linnerud dataset (multivariate regression).
load_wine([return_X_y]) Load and return the wine dataset (classification).
load_breast_cancer([return_X_y]) Load and return the breast cancer wisconsin dataset (classification).

這些數據集有助於快速說明在 scikit 中實現的各種算法的行爲。然而,它們數據規模往往太小,無法代表真實世界的機器學習任務。

5.3. 樣本圖片

scikit 在通過圖片的作者共同授權下嵌入了幾個樣本 JPEG 圖片。這些圖像爲了方便用戶對 test algorithms (測試算法)和 pipeline on 2D data (二維數據管道)進行測試。

load_sample_images() Load sample images for image manipulation.
load_sample_image(image_name) Load the numpy array of a single sample image
../_images/sphx_glr_plot_color_quantization_0011.png

默認編碼的圖像是基於 uint8 dtype 到空閒內存。通常,如果把輸入轉換爲浮點數表示,機器學習算法的效果最好。另外,如果你計劃使用 matplotlib.pyplpt.imshow 別忘了尺度範圍 0 - 1,如下面的示例所做的。

5.4. 樣本生成器

此外,scikit-learn 包括各種隨機樣本的生成器,可以用來建立可控制的大小和複雜性人工數據集。

5.4.1. 分類和聚類生成器

這些生成器將產生一個相應特徵的離散矩陣。

5.4.1.1. 單標籤

make_blobs 和 make_classification 通過分配每個類的一個或多個正態分佈的點的羣集創建的多類數據集。 make_blobs 對於中心和各簇的標準偏差提供了更好的控制,可用於演示聚類。 make_classification 專門通過引入相關的,冗餘的和未知的噪音特徵;將高斯集羣的每類複雜化;在特徵空間上進行線性變換。

make_gaussian_quantiles 將single Gaussian cluster (單高斯簇)分成近乎相等大小的同心超球面分離。 make_hastie_10_2 產生類似的二進制、10維問題。

../_images/sphx_glr_plot_random_dataset_0011.png

make_circles and :func:`make_moons`生成二維分類數據集時可以幫助確定算法(如質心聚類或線性分類),包括可以選擇性加入高斯噪聲。它們有利於可視化。用球面決策邊界對高斯數據生成二值分類。

5.4.1.2. 多標籤

make_multilabel_classification 生成多個標籤的隨機樣本,反映從a mixture of topics(一個混合的主題)中引用a bag of words (一個詞袋)。每個文檔的主題數是基於泊松分佈隨機提取的,同時主題本身也是從固定的隨機分佈中提取的。同樣地,單詞的數目是基於泊松分佈提取的,單詞通過多項式被抽取,其中每個主題定義了單詞的概率分佈。在以下方面真正簡化了 bag-of-words mixtures (單詞混合包):

  • 獨立繪製的每個主題詞分佈,在現實中,所有這些都會受到稀疏基分佈的影響,並將相互關聯。
  • 對於從文檔中生成多個主題,所有主題在生成單詞包時都是同等權重的。
  • 隨機產生沒有標籤的文件,而不是基於分佈(base distribution)來產生文檔
../_images/sphx_glr_plot_random_multilabel_dataset_0011.png

5.4.1.3. 二分聚類

make_biclusters(shape, n_clusters[, noise, …]) Generate an array with constant block diagonal structure for biclustering.
make_checkerboard(shape, n_clusters[, …]) Generate an array with block checkerboard structure for biclustering.

5.4.2. 迴歸生成器

make_regression 產生的迴歸目標作爲一個可選擇的稀疏線性組合的具有噪聲的隨機的特徵。它的信息特徵可能是不相關的或低秩(少數特徵佔大多數的方差)。

其他迴歸生成器產生確定性的隨機特徵函數。 make_sparse_uncorrelated 產生目標爲一個有四個固定係數的線性組合。其他編碼明確的非線性關係:make_friedman1 與多項式和正弦相關變換相聯繫; make_friedman2 包括特徵相乘與交互; make_friedman3 類似與對目標的反正切變換。

5.4.3. 流形學習生成器

make_s_curve([n_samples, noise, random_state]) Generate an S curve dataset.
make_swiss_roll([n_samples, noise, random_state]) Generate a swiss roll dataset.

5.4.4. 生成器分解

make_low_rank_matrix([n_samples, …]) Generate a mostly low rank matrix with bell-shaped singular values
make_sparse_coded_signal(n_samples, …[, …]) Generate a signal as a sparse combination of dictionary elements.
make_spd_matrix(n_dim[, random_state]) Generate a random symmetric, positive-definite matrix.
make_sparse_spd_matrix([dim, alpha, …]) Generate a sparse symmetric definite positive matrix.

5.5. Datasets in svmlight / libsvm format

scikit-learn 中有加載svmlight / libsvm格式的數據集的功能函數。此種格式中,每行 採用如 <label> <feature-id>:<feature-value><feature-id>:<feature-value> ... 的形式。這種格式尤其適合稀疏數據集,在該模塊中,數據集 X 使用的是scipy稀疏CSR矩陣, 特徵集 y 使用的是numpy數組。

你可以通過如下步驟加載數據集:

>>>
>>> from sklearn.datasets import load_svmlight_file
>>> X_train, y_train = load_svmlight_file("/path/to/train_dataset.txt")
...                                                         

你也可以一次加載兩個或多個的數據集:

>>>
>>> X_train, y_train, X_test, y_test = load_svmlight_files(
...     ("/path/to/train_dataset.txt", "/path/to/test_dataset.txt"))
...                                                         

這種情況下,保證了 X_train 和 X_test 具有相同的特徵數量。 固定特徵的數量也可以得到同樣的結果:

>>>
>>> X_test, y_test = load_svmlight_file(
...     "/path/to/test_dataset.txt", n_features=X_train.shape[1])
...                                                         

相關鏈接:

svmlight / libsvm 格式的公共數據集https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets

更快的API兼容的實現https://github.com/mblondel/svmlight-loader

5.6. 從外部數據集加載

scikit-learn使用任何存儲爲numpy數組或者scipy稀疏數組的數值數據。 其他可以轉化成數值數組的類型也可以接受,如pandas中的DataFrame。

以下推薦一些將標準縱列形式的數據轉換爲scikit-learn可以使用的格式的方法:

  • pandas.io 提供了從常見格式(包括CSV,Excel,JSON,SQL等)中讀取數據的工具.DateFrame 也可以從由 元組或者字典組成的列表構建而成.Pandas能順利的處理異構的數據,並且提供了處理和轉換 成方便scikit-learn使用的數值數據的工具。
  • scipy.io 專門處理科學計算領域經常使用的二進制格式,例如.mat和.arff格式的內容。
  • numpy/routines.io 將縱列形式的數據標準的加載爲numpy數組
  • scikit-learn的 :func:`datasets.load_svmlight_file`處理svmlight或者libSVM稀疏矩陣
  • scikit-learn的 datasets.load_files 處理文本文件組成的目錄,每個目錄名是每個 類別的名稱,每個目錄內的每個文件對應該類別的一個樣本

對於一些雜項數據,例如圖像,視屏,音頻。您可以參考:

存儲爲字符串的無序(或者名字)特徵(在pandas的DataFrame中很常見)需要轉換爲整數,當整數類別變量 被編碼成獨熱變量(sklearn.preprocessing.OneHotEncoder)或類似數據時,它或許可以被最好的利用。 參見 預處理數據.

注意:如果你要管理你的數值數據,建議使用優化後的文件格式來減少數據加載時間,例如HDF5。像 H5Py, PyTables和pandas等的各種庫提供了一個Python接口,來讀寫該格式的數據。

5.7. Olivetti 臉部數據集

該數據集包含 1992年4月至1994年4月在AT&T實驗室劍橋採集的一組面部圖像。 該 sklearn.datasets.fetch_olivetti_faces 函數是從AT&T下載 數據存檔的數據獲取/緩存函數。

如原網站所述:
有四十個不同的個體,每個個體有十張不同的圖片。對於某些個體,圖像在不同時間拍攝並且改變 照明和面部表情(睜開/閉上眼睛, 微小/不微笑)和麪部細節(戴眼鏡/不帶眼鏡)。所有的圖像採用 黑色均勻的背景,個體處於直立的正面位置。(容許一定的側移)

圖像被量化爲256個的灰度級並以8位無符號整數的形式存儲;加載器將這些無符號整數轉換爲[0,1]之間 的浮點值,這樣能方面很多算法的使用。

該數據庫的”目標”一個是從0到39的整數,代表着圖中人物的身份。然而,由於每一類只有十個樣例,從 無監督學習或半監督學習的角度來看,這個相對較小的數據集更加有趣。

原始的數據集由92 x 112大小的圖像組成,然而這裏提供的版本由64 x 64大小的圖像組成。

當使用這些圖像時, 請致謝AT&T劍橋實驗室。

5.8. 20個新聞組文本數據集

20個新聞組文本數據集包含有關20個主題的大約18000個新聞組,被分爲兩個子集:一個用於 訓練(或者開發),另一個用於測試(或者用於性能評估)。訓練和測試集的劃分是基於某個特定日期 前後發佈的消息。

這個模塊包含兩個加載器。第一個是 sklearn.datasets.fetch_20newsgroups, 返回一個能夠被文本特徵提取器接受的原始文本列表,例如 sklearn.feature_extraction.text.CountVectorizer 使用自定義的參數來提取特徵向量。第二個是 sklearn.datasets.fetch_20newsgroups_vectorized, 返回即用特徵,換句話說就是,這樣就沒必要使用特徵提取器了。

5.8.1. 用法

sklearn.datasets.fetch_20newsgroups 是一個用於從原始的20個新聞組網址( 20 newsgroups website)

下載數據歸檔的數據獲取/緩存函數,提取 ~/scikit_learn_data/20news_home 文件夾中的 歸檔內容。並且在訓練集或測試集文件夾,或者兩者上調用函數 sklearn.datasets.load_files:

>>>
>>> from sklearn.datasets import fetch_20newsgroups
>>> newsgroups_train = fetch_20newsgroups(subset='train')

>>> from pprint import pprint
>>> pprint(list(newsgroups_train.target_names))
['alt.atheism',
 'comp.graphics',
 'comp.os.ms-windows.misc',
 'comp.sys.ibm.pc.hardware',
 'comp.sys.mac.hardware',
 'comp.windows.x',
 'misc.forsale',
 'rec.autos',
 'rec.motorcycles',
 'rec.sport.baseball',
 'rec.sport.hockey',
 'sci.crypt',
 'sci.electronics',
 'sci.med',
 'sci.space',
 'soc.religion.christian',
 'talk.politics.guns',
 'talk.politics.mideast',
 'talk.politics.misc',
 'talk.religion.misc']

真實數據在屬性 filenames 和 target 中,target屬性就是類別的整數索引:

>>>
>>> newsgroups_train.filenames.shape
(11314,)
>>> newsgroups_train.target.shape
(11314,)
>>> newsgroups_train.target[:10]
array([12,  6,  9,  8,  6,  7,  9,  2, 13, 19])

可以通過將類別列表傳給 sklearn.datasets.fetch_20newsgroups 函數來實現只加載一部分的類別:

>>>
>>> cats = ['alt.atheism', 'sci.space']
>>> newsgroups_train = fetch_20newsgroups(subset='train', categories=cats)
>>> list(newsgroups_train.target_names)
['alt.atheism', 'sci.space']
>>> newsgroups_train.filenames.shape
(1073,)
>>> newsgroups_train.target.shape
(1073,)
>>> newsgroups_train.target[:10]
array([1, 1, 1, 0, 1, 0, 0, 1, 1, 1])

5.8.2. 將文本轉換成向量

爲了用文本數據訓練預測或者聚類模型,首先需要做的是將文本轉換成適合統計分析的數值 向量。這能使用 sklearn.feature_extraction.text 的功能來實現,正如下面展示的 從一個20個新聞的子集中提取單個詞的 TF-IDF 向量的例子

>>>
>>> from sklearn.feature_extraction.text import TfidfVectorizer
>>> categories = ['alt.atheism', 'talk.religion.misc',
...               'comp.graphics', 'sci.space']
>>> newsgroups_train = fetch_20newsgroups(subset='train',
...                                       categories=categories)
>>> vectorizer = TfidfVectorizer()
>>> vectors = vectorizer.fit_transform(newsgroups_train.data)
>>> vectors.shape
(2034, 34118)

提取的TF-IDF向量非常稀疏,在一個超過30000維的空間中採樣, 平均只有159個非零成分(少於.5%的非零成分):

>>>
>>> vectors.nnz / float(vectors.shape[0])
159.01327433628319

sklearn.datasets.fetch_20newsgroups_vectorized 是一個返回即用的tfidf特徵的函數 ,而不是返回文件名。

5.8.3. 過濾文本進行更加逼真的訓練

分類器很容易過擬合一個出現在20個新聞組數據中的特定事物,例如新聞組標頭。許多分類器有 很好的F分數,但是他們的結果不能泛化到不在這個時間窗的其他文檔。

例如,我們來看一下多項式貝葉斯分類器,它訓練速度快並且能獲得很好的F分數。

>>>
>>> from sklearn.naive_bayes import MultinomialNB
>>> from sklearn import metrics
>>> newsgroups_test = fetch_20newsgroups(subset='test',
...                                      categories=categories)
>>> vectors_test = vectorizer.transform(newsgroups_test.data)
>>> clf = MultinomialNB(alpha=.01)
>>> clf.fit(vectors, newsgroups_train.target)
>>> pred = clf.predict(vectors_test)
>>> metrics.f1_score(newsgroups_test.target, pred, average='macro')
0.88213592402729568

(Classification of text documents using sparse features 的例子將訓練和測試數據混合, 而不是按時間劃分,這種情況下,多項式貝葉斯能得到更高的0.88的F分數.你是否還不信任這個分類器的內部實現?)

讓我們看看信息量最大一些特徵是:

>>>
>>> import numpy as np
>>> def show_top10(classifier, vectorizer, categories):
...     feature_names = np.asarray(vectorizer.get_feature_names())
...     for i, category in enumerate(categories):
...         top10 = np.argsort(classifier.coef_[i])[-10:]
...         print("%s: %s" % (category, " ".join(feature_names[top10])))
...
>>> show_top10(clf, vectorizer, newsgroups_train.target_names)
alt.atheism: sgi livesey atheists writes people caltech com god keith edu
comp.graphics: organization thanks files subject com image lines university edu graphics
sci.space: toronto moon gov com alaska access henry nasa edu space
talk.religion.misc: article writes kent people christian jesus sandvik edu com god

你現在可以看到這些特徵過擬合了許多東西:

  • 幾乎所有的組都通過標題是出現更多還是更少來區分,例如 NNTP-Posting-Host: 和 Distribution: 標題
  • 正如他的標頭或者簽名所表示,另外重要的特徵有關發送者是否隸屬於一個大學。
  • “article”這個單詞是一個重要的特徵,它基於人們像 “In article [article ID], [name] <[e-mail address]> wrote:” 的方式引用原先的帖子頻率。
  • 其他特徵和當時發佈的特定的人的名字和e-mail相匹配。

有如此大量的線索來區分新聞組,分類器根本不需要從文本中識別主題,而且他們的性能都一樣好。

由於這個原因,加載20個新聞組數據的函數提供了一個叫做 remove 的參數,來告訴函數需要從文件 中去除什麼類別的信息。 remove 應該是一個來自集合 ('headers', 'footers', 'quotes') 的子集 的元組,來告訴函數分別移除標頭標題,簽名塊還有引用塊。

>>>
>>> newsgroups_test = fetch_20newsgroups(subset='test',
...                                      remove=('headers', 'footers', 'quotes'),
...                                      categories=categories)
>>> vectors_test = vectorizer.transform(newsgroups_test.data)
>>> pred = clf.predict(vectors_test)
>>> metrics.f1_score(pred, newsgroups_test.target, average='macro')
0.77310350681274775

由於我們移除了跟主題分類幾乎沒有關係的元數據,分類器的F分數降低了很多。 如果我們從訓練數據中也移除這個元數據,F分數將會更低:

>>>
>>> newsgroups_train = fetch_20newsgroups(subset='train',
...                                       remove=('headers', 'footers', 'quotes'),
...                                       categories=categories)
>>> vectors = vectorizer.fit_transform(newsgroups_train.data)
>>> clf = MultinomialNB(alpha=.01)
>>> clf.fit(vectors, newsgroups_train.target)
>>> vectors_test = vectorizer.transform(newsgroups_test.data)
>>> pred = clf.predict(vectors_test)
>>> metrics.f1_score(newsgroups_test.target, pred, average='macro')
0.76995175184521725
其他的一些分類器能夠更好的處理這個更難版本的任務。試着帶 --filter 選項和不帶 --filter 選項運行
Sample pipeline for text feature extraction and evaluation 來比較結果間的差異。

推薦

當使用20個新聞組數據中評估文本分類器時,你應該移除與新聞組相關的元數據。你可以通過設置
remove=('headers', 'footers', 'quotes') 來實現。F分數將更加低因爲這更符合實際

5.9. 從 mldata.org 上下載數據集

mldata.org 是一個公開的機器學習數據 repository ,由 PASCAL network 負責支持。

sklearn.datasets 包可以使用函數 sklearn.datasets.fetch_mldata 直接從 repository 下載數據集。

舉個例子,下載 MNIST 手寫數字字符識別數據集:

>>>
>>> from sklearn.datasets import fetch_mldata
>>> mnist = fetch_mldata('MNIST original', data_home=custom_data_home)

MNIST 手寫數字字符數據集包含有 70000 個樣本,每個樣本帶有從 0 到 9 的標籤,並且樣本像素尺寸大小爲 28x28:

>>>
>>> mnist.data.shape
(70000, 784)
>>> mnist.target.shape
(70000,)
>>> np.unique(mnist.target)
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.])

首次下載之後,數據集被緩存在本地的由 data_home 關鍵字指定的路徑中,路徑默認是 ~/scikit_learn_data/

>>>
>>> os.listdir(os.path.join(custom_data_home, 'mldata'))
['mnist-original.mat']

mldata.org 裏的數據集在命名規則和數據格式上不遵循嚴格的約定。 sklearn.datasets.fetch_mldata 可以應對大多數的常見情況,並且允許個人對數據集的默認設置進行調整:

  • mldata.org 中的數據大多都是以 (n_features, n_samples) 這樣的組織形式存在。 這與 scikit-learn 中的習慣約定是不一致的,所以 sklearn.datasets.fetch_mldata 默認情況下通過 transpose_data 關鍵字控制對這個矩陣進行轉置運算。:

    >>>
    >>> iris = fetch_mldata('iris', data_home=custom_data_home)
    >>> iris.data.shape
    (150, 4)
    >>> iris = fetch_mldata('iris', transpose_data=False,
    ...                     data_home=custom_data_home)
    >>> iris.data.shape
    (4, 150)
    
  • 數據集有多列的時候,sklearn.datasets.fetch_mldata 這個函數會識別目標列和數據列, 並將它們重命名爲 target(目標) 和 data(數據) 。 這是通過在數據集中尋找名爲 label(標籤) 和 data(數據) 的數組來完成的, 如果選擇第一個數組是 target(目標),而第二個數組是 data(數據) ,則前邊的設置會失效。 這個行爲可以通過對關鍵字 target_name 和 data_name 進行設置來改變,設置的值可以是具體的名字也可以是索引數字, 數據集中列的名字和索引序號都可以在 mldata.org 中的 “Data” 選項卡下找到:

    >>>
    >>> iris2 = fetch_mldata('datasets-UCI iris', target_name=1, data_name=0,
    ...                      data_home=custom_data_home)
    >>> iris3 = fetch_mldata('datasets-UCI iris', target_name='class',
    ...                      data_name='double0', data_home=custom_data_home)
    

5.10. 帶標籤的人臉識別數據集

這個數據集是一個在互聯網上收集的名人 JPEG 圖片集,所有詳細信息都可以在官方網站上獲得:

http://vis-www.cs.umass.edu/lfw/

每張圖片的居中部分都是一張臉。典型人物人臉驗證是給定兩幅圖片,二元分類器必須能夠預測這兩幅圖片是否是同一個人。

另一項任務人臉識別或面部識別說的是給定一個未知的面孔,通過參考一系列已經學習經過鑑定的人的照片來識別此人的名字。

人臉驗證和人臉識別都是基於經過訓練用於人臉檢測的模型的輸出所進行的任務。 最流行的人臉檢測模型叫作 Viola Jones是在 OpenCV 庫中實現的。 LFW 人臉數據庫中的人臉是使用該人臉檢測器從各種在線網站上提取的。

5.10.1. 用法

scikit-learn 提供兩個可以自動下載、緩存、解析元數據文件的 loader (加載器),解碼 JPEG 並且將 slices 轉換成內存映射過的 NumPy 數組(numpy.memmap)。 這個數據集大小超過 200 MB。第一個加載器通常需要超過幾分鐘才能完全解碼 JPEG 文件的相關部分爲 NumPy 數組。 如果數據集已經被加載過,通過在磁盤上採用內存映射版( memmaped version )的 memoized, 即 ~/scikit_learn_data/lfw_home/ 文件夾使用 joblib,再次加載時間會小於 200ms。

第一個 loader (加載器)用於人臉識別任務:一個多類分類任務(屬於監督學習):

>>>
>>> from sklearn.datasets import fetch_lfw_people
>>> lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)

>>> for name in lfw_people.target_names:
...     print(name)
...
Ariel Sharon
Colin Powell
Donald Rumsfeld
George W Bush
Gerhard Schroeder
Hugo Chavez
Tony Blair

默認的 slice 是一個刪除掉大部分背景,只剩下圍繞着臉周圍的長方形的形狀:

>>>
>>> lfw_people.data.dtype
dtype('float32')

>>> lfw_people.data.shape
(1288, 1850)

>>> lfw_people.images.shape
(1288, 50, 37)

在 target(目標) 數組中,``1140``個人臉圖片中的每一個圖都分配一個屬於某人的 id:

>>>
>>> lfw_people.target.shape
(1288,)

>>> list(lfw_people.target[:10])
[5, 6, 3, 1, 0, 1, 3, 4, 3, 0]

第二個 loader (加載器)通常用於人臉驗證任務: 每個樣本是屬於或不屬於同一個人的兩張圖片:

 >>> from sklearn.datasets import fetch_lfw_pairs
 >>> lfw_pairs_train = fetch_lfw_pairs(subset='train')

 >>> list(lfw_pairs_train.target_names)
 ['Different persons', 'Same person']

 >>> lfw_pairs_train.pairs.shape
 (2200, 2, 62, 47)

 >>> lfw_pairs_train.data.shape
 (2200, 5828)

 >>> lfw_pairs_train.target.shape
 (2200,)

:func:`sklearn.datasets.fetch_lfw_people` 和 :func:`sklearn.datasets.fetch_lfw_pairs` 函數,都可以通過 ``color=True`` 來獲得 RGB 顏色通道的維度,在這種情況下尺寸將爲 ``(2200, 2, 62, 47, 3)`` 。

sklearn.datasets.fetch_lfw_pairs 數據集細分爲 3 類: train set(訓練集)、test set(測試集)和一個 10_folds 評估集, 10_folds 評估集意味着性能的計算指標使用 10 折交叉驗證( 10-folds cross validation )方案。

參考文獻:

5.11. 森林覆蓋類型

這個數據集中的樣本對應美國的 30×30m 的 patches of forest(森林區域), 收集這些數據用於預測每個 patch 的植被 cover type (覆蓋類型),即優勢樹種。 總共有七個植被類型,使得這是一個多分類問題。 每個樣本有 54 個特徵,在 dataset’s 的主頁 中有具體的描述。 有些特徵是布爾指標,其他的是離散或者連續的量。

sklearn.datasets.fetch_covtype 將加載 covertype 數據集; 它返回一個類似字典的對象,並在數據成員中使用特徵矩陣以及 target 中的目標值。 如果需要,數據集可以從網上下載。

5.12. RCV1 數據集

路透社語料庫第一卷( RCV1 )是路透社爲了研究目的提供的一個擁有超過 800,000 份手動分類的新聞報導的文檔庫。該數據集在 [1] 中有詳細描述。

sklearn.datasets.fetch_rcv1 將加載以下版本: RCV1-v2, vectors, full sets, topics multilabels:

>>>
>>> from sklearn.datasets import fetch_rcv1
>>> rcv1 = fetch_rcv1()

它返回一個類似字典的對象,具有以下屬性:

data: 特徵矩陣是一個 scipy CSR 稀疏矩陣,有 804414 個樣品和 47236 個特徵。 非零值包含 cosine-normalized(餘弦歸一化),log TF-IDF vectors。 按照年代順序近似劃分,在 [1] 提出: 前 23149 個樣本是訓練集。後 781265 個樣本是測試集。 這是官方的 LYRL2004 時間劃分。數組有 0.16% 個非零值:

>>>
>>> rcv1.data.shape
(804414, 47236)

target: 目標值是存儲在 scipy CSR 的稀疏矩陣,有 804414 個樣本和 103 個類別。 每個樣本在其所屬的類別中的值爲 1,在其他類別中值爲 0。數組有 3.15% 個非零值:

>>>
>>> rcv1.target.shape
(804414, 103)

sample_id: 每個樣本都可以通過從 2286 到 810596 不等的 ID 來標識:

>>>
>>> rcv1.sample_id[:3]
array([2286, 2287, 2288], dtype=uint32)

target_names: 目標值是每個樣本的 topic (主題)。每個樣本至少屬於一個 topic (主題)最多 17 個 topic 。 總共有 103 個 topics ,每個 topic 用一個字符串表示。 從 GMIL 出現 5 次到 CCAT 出現 381327 次,該語料庫頻率跨越五個數量級:

>>>
>>> rcv1.target_names[:3].tolist()  
['E11', 'ECAT', 'M11']

如果有需要的話,可以從 rcv1 homepage 上下載該數據集。 數據集壓縮後的大小大約是 656 MB。

參考文獻

[1] (12) Lewis, D. D., Yang, Y., Rose, T. G., & Li, F. (2004). RCV1: A new benchmark collection for text categorization research. The Journal of Machine Learning Research, 5, 361-397.

5.13. 波士頓房價數據集

5.13.1. 註釋

數據集特徵:

實例數量: 506
屬性數量: 13 數值型或類別型,幫助預測的屬性

:中位數(第14個屬性)經常是學習目標

屬性信息 (按順序):
  • CRIM 城鎮人均犯罪率
  • ZN 佔地面積超過2.5萬平方英尺的住宅用地比例
  • INDUS 城鎮非零售業務地區的比例
  • CHAS 查爾斯河虛擬變量 (= 1 如果土地在河邊;否則是0)
  • NOX 一氧化氮濃度(每1000萬份)
  • RM 平均每居民房數
  • AGE 在1940年之前建成的所有者佔用單位的比例
  • DIS 與五個波士頓就業中心的加權距離
  • RAD 輻射狀公路的可達性指數
  • TAX 每10,000美元的全額物業稅率
  • PTRATIO 城鎮師生比例
  • B 1000(Bk - 0.63)^2 其中 Bk 是城鎮的黑人比例
  • LSTAT 人口中地位較低人羣的百分數
  • MEDV 以1000美元計算的自有住房的中位數
缺失屬性值:

創建者:

Harrison, D. and Rubinfeld, D.L.

這是UCI ML(歐文加利福尼亞大學 機器學習庫)房價數據集的副本。 http://archive.ics.uci.edu/ml/datasets/Housing

該數據集是從位於卡內基梅隆大學維護的StatLib圖書館取得的。

Harrison, D. 和 Rubinfeld, D.L. 的波士頓房價數據:’Hedonic prices and the demand for clean air’, J. Environ. Economics & Management, vol.5, 81-102, 1978,也被使用在 Belsley, Kuh & Welsch 的 ‘Regression diagnostics …’, Wiley, 1980。 註釋:許多變化已經被應用在後者第244-261頁的表中。

波士頓房價數據已被用於許多涉及迴歸問題的機器學習論文中。

參考資料

  • Belsley, Kuh & Welsch, ‘Regression diagnostics: Identifying Influential Data and Sources of Collinearity’, Wiley, 1980. 244-261.
  • Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.
  • many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)

5.14. 威斯康辛州乳腺癌(診斷)數據庫

5.14.1. 註釋

數據集特徵:
實例數量:

569

屬性數量:

30 (數值型,幫助預測的屬性和類)

Attribute Information:
 
  • radius 半徑(從中心到邊緣上點的距離的平均值)
  • texture 紋理(灰度值的標準偏差)
  • perimeter 周長
  • area 區域
  • smoothness 平滑度(半徑長度的局部變化)
  • compactness 緊湊度(周長 ^ 2 /面積 - 1.0)
  • concavity 凹面(輪廓的凹部的嚴重性)
  • concave points 凹點(輪廓的凹部的數量)
  • symmetry 對稱性
  • fractal dimension 分形維數(海岸線近似 - 1)
  • 類:
    • WDBC-Malignant 惡性
    • WDBC-Benign 良性

對每個圖像計算這些特徵的平均值,標準誤差,以及“最差”(因爲是腫瘤)或最大值(最大的前三個值的平均值)

        得到30個特徵。例如,字段 3 是平均半徑,字段 13 是半徑的標準誤差,字段 23 是最差半徑。

統計摘要:



radius (mean): 6.981 28.11
texture (mean): 9.71 39.28
perimeter (mean): 43.79 188.5
area (mean): 143.5 2501.0
smoothness (mean): 0.053 0.163
compactness (mean): 0.019 0.345
concavity (mean): 0.0 0.427
concave points (mean): 0.0 0.201
symmetry (mean): 0.106 0.304
fractal dimension (mean): 0.05 0.097
radius (standard error): 0.112 2.873
texture (standard error): 0.36 4.885
perimeter (standard error): 0.757 21.98
area (standard error): 6.802 542.2
smoothness (standard error): 0.002 0.031
compactness (standard error): 0.002 0.135
concavity (standard error): 0.0 0.396
concave points (standard error): 0.0 0.053
symmetry (standard error): 0.008 0.079
fractal dimension (standard error): 0.001 0.03
radius (worst): 7.93 36.04
texture (worst): 12.02 49.54
perimeter (worst): 50.41 251.2
area (worst): 185.2 4254.0
smoothness (worst): 0.071 0.223
compactness (worst): 0.027 1.058
concavity (worst): 0.0 1.252
concave points (worst): 0.0 0.291
symmetry (worst): 0.156 0.664
fractal dimension (worst): 0.055 0.208
缺失屬性值:
類別分佈: 212 - 惡性, 357 - 良性
創建者: Dr. William H. Wolberg, W. Nick Street, Olvi L. Mangasarian
捐助者: Nick Street
日期: 1995年11月

這是UCI ML(歐文加利福尼亞大學 機器學習庫)威斯康星州乳腺癌(診斷)數據集的副本。 https://goo.gl/U2Uwz2

這些特徵是從乳房腫塊的細針抽吸術(FNA)的數字圖像中計算得到,描述了圖像中存在的細胞核的特徵。

上述的分離平面是由多表面方法樹(MSM-T)[K.P.Bennett, “Decision Tree Construction Via Linear Programming.” Proceedings of the 4th Midwest Artificial Intelligence and Cognitive Science Society, pp.97-101, 1992], a classification method which uses linear programming to construct a decision tree. 相關特徵是在1-4的特徵和1-3的分離平面中使用窮舉法搜索選取出的。

用於分離平面的線性規劃在三維空間中描述如下: [K. P. Bennett and O. L. Mangasarian: “Robust Linear Programming Discrimination of Two Linearly Inseparable Sets”, Optimization Methods and Software 1, 1992, 23-34].

該數據庫也可通過UW CS ftp服務器獲得:

ftp ftp.cs.wisc.edu cd math-prog/cpo-dataset/machine-learn/WDBC/

5.14.2. 參考資料

  • W.N. Street, W.H. Wolberg and O.L. Mangasarian. Nuclear feature extraction for breast tumor diagnosis. IS&T/SPIE 1993 International Symposium on Electronic Imaging: Science and Technology, volume 1905, pages 861-870, San Jose, CA, 1993.
  • O.L. Mangasarian, W.N. Street and W.H. Wolberg. Breast cancer diagnosis and prognosis via linear programming. Operations Research, 43(4), pages 570-577, July-August 1995.
  • W.H. Wolberg, W.N. Street, and O.L. Mangasarian. Machine learning techniques to diagnose breast cancer from fine-needle aspirates. Cancer Letters 77 (1994) 163-171.

5.15. 糖尿病數據集

5.15.1. 註釋

從442例糖尿病患者中獲得了十個基線變量,年齡,性別,體重指數,平均血壓和六個血清測量值,以及一個我們感興趣的,在基線後一年疾病發展的定量測量值。

數據集特徵:

實例數量:

442

屬性數量:

前10列是數值型的幫助預測的值

目標:

第11列是基線後一年疾病進展的定量測量址

屬性:
Age年齡:
Sex性別:  
Body mass index體重指數:
   
Average blood pressure平均血壓:
   
S1血清測量值1:  
S2血清測量值2:  
S3血清測量值3:  
S4血清測量值4:  
S5血清測量值5:  
S6血清測量值6:  

注意: 這10個特徵變量都已經分別以均值爲中心,並按照標準偏差乘以樣本數(n_samples)進行縮放(即每列的平方和爲1)。

源 URL: http://www4.stat.ncsu.edu/~boos/var.select/diabetes.html

更多信息,請參閱: Bradley Efron, Trevor Hastie, Iain Johnstone and Robert Tibshirani (2004) “Least Angle Regression,” Annals of Statistics (with discussion), 407-499. (http://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf)

5.16. 光學識別手寫數字數據集

5.16.1. 註釋

數據集特徵:
實例數量:

5620

屬性數量:

64

屬性信息:

8x8 範圍在(0-16)的整型像素值圖片

缺失屬性值:

創建者:
  1. Alpaydin ([email protected])
日期:

1998年7月

這是UCI ML(歐文加利福尼亞大學 機器學習庫)手寫數字數據集的測試集的副本。http://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits

數據集包含手寫數字的圖像:10個類別中每個類都是一個數字。

從預印表格中提取手寫數字的標準化的位圖這一過程,應用了NIST提供的預處理程序。 這些數據是從43人中得到,其中30人爲訓練集,13人爲測試集。32x32位圖被劃分爲4x4的非重疊塊, 並且在每個塊中計數像素數。這產生8×8的輸入矩陣,其中每個元素是0-16範圍內的整數。 這個過程降低了維度,並且在小的變形中提供了不變性。

有關NIST處理程序的信息,請參見 M. D. Garris, J. L. Blue, G.T. Candela, D. L. Dimmick, J. Geist, P. J. Grother, S. A. Janet, and C. L. Wilson, NIST Form-Based Handprint Recognition System, NISTIR 5469, 1994.

5.16.2. 參考資料

  • C. Kaynak (1995) Methods of Combining Multiple Classifiers and Their Applications to Handwritten Digit Recognition, MSc Thesis, Institute of Graduate Studies in Science and Engineering, Bogazici University.
    1. Alpaydin, C. Kaynak (1998) Cascading Classifiers, Kybernetika.
  • Ken Tang and Ponnuthurai N. Suganthan and Xi Yao and A. Kai Qin. Linear dimensionalityreduction using relevance weighted LDA. School of Electrical and Electronic Engineering Nanyang Technological University. 2005.
  • Claudio Gentile. A New Approximate Maximal Margin Classification Algorithm. NIPS. 2000.

5.17. 鳶尾花數據集

5.17.1. 註釋

數據集特徵:
實例數量:

150 (三個類各有50個)

屬性數量:

4 (數值型,數值型,幫助預測的屬性和類)

Attribute Information:
 
  • sepal length 萼片長度(釐米)
  • sepal width 萼片寬度(釐米)
  • petal length 花瓣長度(釐米)
  • petal width 花瓣寬度(釐米)
  • class:
    • Iris-Setosa 山鳶尾
    • Iris-Versicolour 變色鳶尾
    • Iris-Virginica 維吉尼亞鳶尾
統計摘要:  
           
sepal length: 4.3 7.9 5.84 0.83 0.7826
sepal width: 2.0 4.4 3.05 0.43 -0.4194
petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)
petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)
缺失屬性值:
類別分佈: 3個類別各佔33.3%
創建者: R.A. Fisher
捐助者: Michael Marshall (MARSHALL%[email protected])
日期: 1988年7月

這是UCI ML(歐文加利福尼亞大學 機器學習庫)鳶尾花數據集的副本。 http://archive.ics.uci.edu/ml/datasets/Iris

著名的鳶尾花數據庫,首先由R. Fisher先生使用。

這可能是在模式識別文獻中最有名的數據庫。Fisher的論文是這個領域的經典之作,到今天也經常被引用。(例如:Duda&Hart) 數據集包含3個類,每類有50個實例,每個類指向一種類型的鳶尾花。一類與另外兩類線性分離,而後者不能彼此線性分離。

5.17.2. 參考資料

  • Fisher,R.A. “The use of multiple measurements in taxonomic problems” Annual Eugenics, 7, Part II, 179-188 (1936); also in “Contributions to Mathematical Statistics” (John Wiley, NY, 1950).
  • Duda,R.O., & Hart,P.E. (1973) Pattern Classification and Scene Analysis. (Q327.D83) John Wiley & Sons. ISBN 0-471-22361-1. See page 218.
  • Dasarathy, B.V. (1980) “Nosing Around the Neighborhood: A New System Structure and Classification Rule for Recognition in Partially Exposed Environments”. IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. PAMI-2, No. 1, 67-71.
  • Gates, G.W. (1972) “The Reduced Nearest Neighbor Rule”. IEEE Transactions on Information Theory, May 1972, 431-433.
  • See also: 1988 MLC Proceedings, 54-64. Cheeseman et al”s AUTOCLASS II conceptual clustering system finds 3 classes in the data.
  • Many, many more …

5.18. Linnerrud 數據集

5.18.1. 註釋

數據集特徵:
實例數量: 20
屬性數量: 3
缺失屬性值:

Linnerud 數據集包含兩個小的數據集:

  • 運動 : 一個包含以下內容的列表:運動數據,關於3個運動相關變量的20個觀測值:體重,腰圍和脈搏。
  • 生理 : 一個包含以下內容的數據表:生理數據,關於三個生理變量的20個觀測值:下巴,仰臥起坐和跳躍。

5.18.2. 參考資料

  • Tenenhaus, M. (1998). La regression PLS: theorie et pratique. Paris: Editions Technic.




中文文檔: http://sklearn.apachecn.org/cn/stable/datasets/index.html

英文文檔: http://sklearn.apachecn.org/en/stable/datasets/index.html

官方文檔: http://scikit-learn.org/stable/

GitHub: https://github.com/apachecn/scikit-learn-doc-zh(覺得不錯麻煩給個 Star,我們一直在努力)

貢獻者: https://github.com/apachecn/scikit-learn-doc-zh#貢獻者

關於我們: http://www.apachecn.org/organization/209.html

有興趣的們也可以和我們一起來維護,持續更新中 。。。

機器學習交流羣: 629470233

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章