# 5. 數據集加載工具
校驗者:
[@不吃曲奇的趣多多](https://github.com/apachecn/scikit-learn-doc-zh)
[@A](https://github.com/apachecn/scikit-learn-doc-zh)
[@火星](https://github.com/apachecn/scikit-learn-doc-zh)
[@Trembleguy](https://github.com/apachecn/scikit-learn-doc-zh)
翻譯者:
[@cowboy](https://github.com/apachecn/scikit-learn-doc-zh)
[@peels](https://github.com/apachecn/scikit-learn-doc-zh)
[@t9UhoI](https://github.com/apachecn/scikit-learn-doc-zh)
[@Sun](https://github.com/apachecn/scikit-learn-doc-zh)
該 `sklearn.datasets` 包裝在 [Getting Started](../tutorial/basic/tutorial.html#loading-example-dataset) 部分中嵌入了介紹一些小型玩具的數據集。
為了在控制數據的統計特性(通常是特征的 correlation (相關性)和 informativeness (信息性))的同時評估數據集 (`n_samples` 和 `n_features`) 的規模的影響,也可以生成綜合數據。
這個軟件包還具有幫助用戶獲取更大的數據集的功能,這些數據集通常由機器學習社區使用,用于對來自 ‘real world’ 的數據進行檢測算法。
## 5.1. 通用數據集 API
對于不同類型的數據集,有三種不同類型的數據集接口。最簡單的是樣品圖像的界面,下面在 [樣本圖片](#sample-images) 部分中進行了描述。
數據集生成函數和 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` 和 [``](#id2)target\_names``的特征。有關詳細信息,請參閱下面的數據集說明
## 5.2. 玩具數據集
scikit-learn 內置有一些小型標準數據集,不需要從某個外部網站下載任何文件。
[`load_boston`](../modules/generated/sklearn.datasets.load_boston.html#sklearn.datasets.load_boston "sklearn.datasets.load_boston")(\[return\_X\_y\])Load and return the boston house-prices dataset (regression).[`load_iris`](../modules/generated/sklearn.datasets.load_iris.html#sklearn.datasets.load_iris "sklearn.datasets.load_iris")(\[return\_X\_y\])Load and return the iris dataset (classification).[`load_diabetes`](../modules/generated/sklearn.datasets.load_diabetes.html#sklearn.datasets.load_diabetes "sklearn.datasets.load_diabetes")(\[return\_X\_y\])Load and return the diabetes dataset (regression).[`load_digits`](../modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits "sklearn.datasets.load_digits")(\[n\_class, return\_X\_y\])Load and return the digits dataset (classification).[`load_linnerud`](../modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud "sklearn.datasets.load_linnerud")(\[return\_X\_y\])Load and return the linnerud dataset (multivariate regression).[`load_wine`](../modules/generated/sklearn.datasets.load_wine.html#sklearn.datasets.load_wine "sklearn.datasets.load_wine")(\[return\_X\_y\])Load and return the wine dataset (classification).[`load_breast_cancer`](../modules/generated/sklearn.datasets.load_breast_cancer.html#sklearn.datasets.load_breast_cancer "sklearn.datasets.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`](../modules/generated/sklearn.datasets.load_sample_images.html#sklearn.datasets.load_sample_images "sklearn.datasets.load_sample_images")()Load sample images for image manipulation.[`load_sample_image`](../modules/generated/sklearn.datasets.load_sample_image.html#sklearn.datasets.load_sample_image "sklearn.datasets.load_sample_image")(image\_name)Load the numpy array of a single sample image[](../auto_examples/cluster/plot_color_quantization.html)默認編碼的圖像是基于 `uint8` dtype 到空閑內存。通常,如果把輸入轉換為浮點數表示,機器學習算法的效果最好。另外,如果你計劃使用 `matplotlib.pyplpt.imshow` 別忘了尺度范圍 0 - 1,如下面的示例所做的。
示例:
- [Color Quantization using K-Means](../auto_examples/cluster/plot_color_quantization.html#sphx-glr-auto-examples-cluster-plot-color-quantization-py)
## 5.4. 樣本生成器
此外,scikit-learn 包括各種隨機樣本的生成器,可以用來建立可控制的大小和復雜性人工數據集。
### 5.4.1. 分類和聚類生成器
這些生成器將產生一個相應特征的離散矩陣。
#### 5.4.1.1. 單標簽
[`make_blobs`](../modules/generated/sklearn.datasets.make_blobs.html#sklearn.datasets.make_blobs "sklearn.datasets.make_blobs") 和 [`make_classification`](../modules/generated/sklearn.datasets.make_classification.html#sklearn.datasets.make_classification "sklearn.datasets.make_classification") 通過分配每個類的一個或多個正態分布的點的群集創建的多類數據集。 [`make_blobs`](../modules/generated/sklearn.datasets.make_blobs.html#sklearn.datasets.make_blobs "sklearn.datasets.make_blobs") 對于中心和各簇的標準偏差提供了更好的控制,可用于演示聚類。 [`make_classification`](../modules/generated/sklearn.datasets.make_classification.html#sklearn.datasets.make_classification "sklearn.datasets.make_classification") 專門通過引入相關的,冗余的和未知的噪音特征;將高斯集群的每類復雜化;在特征空間上進行線性變換。
[`make_gaussian_quantiles`](../modules/generated/sklearn.datasets.make_gaussian_quantiles.html#sklearn.datasets.make_gaussian_quantiles "sklearn.datasets.make_gaussian_quantiles") 將single Gaussian cluster (單高斯簇)分成近乎相等大小的同心超球面分離。 [`make_hastie_10_2`](../modules/generated/sklearn.datasets.make_hastie_10_2.html#sklearn.datasets.make_hastie_10_2 "sklearn.datasets.make_hastie_10_2") 產生類似的二進制、10維問題。
[](../auto_examples/datasets/plot_random_dataset.html)[`make_circles`](../modules/generated/sklearn.datasets.make_circles.html#sklearn.datasets.make_circles "sklearn.datasets.make_circles") and :func:[`](#id9)make\_moons`生成二維分類數據集時可以幫助確定算法(如質心聚類或線性分類),包括可以選擇性加入高斯噪聲。它們有利于可視化。用球面決策邊界對高斯數據生成二值分類。
#### 5.4.1.2. 多標簽
[`make_multilabel_classification`](../modules/generated/sklearn.datasets.make_multilabel_classification.html#sklearn.datasets.make_multilabel_classification "sklearn.datasets.make_multilabel_classification") 生成多個標簽的隨機樣本,反映從a mixture of topics(一個混合的主題)中引用a bag of words (一個詞袋)。每個文檔的主題數是基于泊松分布隨機提取的,同時主題本身也是從固定的隨機分布中提取的。同樣地,單詞的數目是基于泊松分布提取的,單詞通過多項式被抽取,其中每個主題定義了單詞的概率分布。在以下方面真正簡化了 bag-of-words mixtures (單詞混合包):
- 獨立繪制的每個主題詞分布,在現實中,所有這些都會受到稀疏基分布的影響,并將相互關聯。
- 對于從文檔中生成多個主題,所有主題在生成單詞包時都是同等權重的。
- 隨機產生沒有標簽的文件,而不是基于分布(base distribution)來產生文檔
[](../auto_examples/datasets/plot_random_multilabel_dataset.html)
#### 5.4.1.3. 二分聚類
[`make_biclusters`](../modules/generated/sklearn.datasets.make_biclusters.html#sklearn.datasets.make_biclusters "sklearn.datasets.make_biclusters")(shape, n\_clusters\[, noise, …\])Generate an array with constant block diagonal structure for biclustering.[`make_checkerboard`](../modules/generated/sklearn.datasets.make_checkerboard.html#sklearn.datasets.make_checkerboard "sklearn.datasets.make_checkerboard")(shape, n\_clusters\[, …\])Generate an array with block checkerboard structure for biclustering.
### 5.4.2. 回歸生成器
[`make_regression`](../modules/generated/sklearn.datasets.make_regression.html#sklearn.datasets.make_regression "sklearn.datasets.make_regression") 產生的回歸目標作為一個可選擇的稀疏線性組合的具有噪聲的隨機的特征。它的信息特征可能是不相關的或低秩(少數特征占大多數的方差)。
其他回歸生成器產生確定性的隨機特征函數。 [`make_sparse_uncorrelated`](../modules/generated/sklearn.datasets.make_sparse_uncorrelated.html#sklearn.datasets.make_sparse_uncorrelated "sklearn.datasets.make_sparse_uncorrelated") 產生目標為一個有四個固定系數的線性組合。其他編碼明確的非線性關系:[`make_friedman1`](../modules/generated/sklearn.datasets.make_friedman1.html#sklearn.datasets.make_friedman1 "sklearn.datasets.make_friedman1") 與多項式和正弦相關變換相聯系; [`make_friedman2`](../modules/generated/sklearn.datasets.make_friedman2.html#sklearn.datasets.make_friedman2 "sklearn.datasets.make_friedman2") 包括特征相乘與交互; [`make_friedman3`](../modules/generated/sklearn.datasets.make_friedman3.html#sklearn.datasets.make_friedman3 "sklearn.datasets.make_friedman3") 類似與對目標的反正切變換。
### 5.4.3. 流形學習生成器
[`make_s_curve`](../modules/generated/sklearn.datasets.make_s_curve.html#sklearn.datasets.make_s_curve "sklearn.datasets.make_s_curve")(\[n\_samples, noise, random\_state\])Generate an S curve dataset.[`make_swiss_roll`](../modules/generated/sklearn.datasets.make_swiss_roll.html#sklearn.datasets.make_swiss_roll "sklearn.datasets.make_swiss_roll")(\[n\_samples, noise, random\_state\])Generate a swiss roll dataset.
### 5.4.4. 生成器分解
[`make_low_rank_matrix`](../modules/generated/sklearn.datasets.make_low_rank_matrix.html#sklearn.datasets.make_low_rank_matrix "sklearn.datasets.make_low_rank_matrix")(\[n\_samples, …\])Generate a mostly low rank matrix with bell-shaped singular values[`make_sparse_coded_signal`](../modules/generated/sklearn.datasets.make_sparse_coded_signal.html#sklearn.datasets.make_sparse_coded_signal "sklearn.datasets.make_sparse_coded_signal")(n\_samples, …\[, …\])Generate a signal as a sparse combination of dictionary elements.[`make_spd_matrix`](../modules/generated/sklearn.datasets.make_spd_matrix.html#sklearn.datasets.make_spd_matrix "sklearn.datasets.make_spd_matrix")(n\_dim\[, random\_state\])Generate a random symmetric, positive-definite matrix.[`make_sparse_spd_matrix`](../modules/generated/sklearn.datasets.make_sparse_spd_matrix.html#sklearn.datasets.make_sparse_spd_matrix "sklearn.datasets.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](https://pandas.pydata.org/pandas-docs/stable/io.html)提供了從常見格式(包括CSV,Excel,JSON,SQL等)中讀取數據的工具.DateFrame 也可以從由 元組或者字典組成的列表構建而成.Pandas能順利的處理異構的數據,并且提供了處理和轉換 成方便scikit-learn使用的數值數據的工具。
- [scipy.io](https://docs.scipy.org/doc/scipy/reference/io.html)專門處理科學計算領域經常使用的二進制格式,例如.mat和.arff格式的內容。
- [numpy/routines.io](https://docs.scipy.org/doc/numpy/reference/routines.io.html)將縱列形式的數據標準的加載為numpy數組
- scikit-learn的 :func:[`](#id18)datasets.load\_svmlight\_file`處理svmlight或者libSVM稀疏矩陣
- scikit-learn的 `datasets.load_files` 處理文本文件組成的目錄,每個目錄名是每個 類別的名稱,每個目錄內的每個文件對應該類別的一個樣本
對于一些雜項數據,例如圖像,視屏,音頻。您可以參考:
- [skimage.io](http://scikit-image.org/docs/dev/api/skimage.io.html) 或 [Imageio](https://imageio.readthedocs.io/en/latest/userapi.html)將圖像或者視屏加載為numpy數組
- [scipy.misc.imread](https://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.imread.html#scipy.misc.imread) (requires the [Pillow](https://pypi.python.org/pypi/Pillow) package)將各種圖像文件格式加載為 像素灰度數據
- [scipy.io.wavfile.read](https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.io.wavfile.read.html)將WAV文件讀入一個numpy數組
存儲為字符串的無序(或者名字)特征(在pandas的DataFrame中很常見)需要轉換為整數,當整數類別變量 被編碼成獨熱變量([`sklearn.preprocessing.OneHotEncoder`](../modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder "sklearn.preprocessing.OneHotEncoder"))或類似數據時,它或許可以被最好的利用。 參見 [預處理數據](../modules/preprocessing.html#preprocessing).
注意:如果你要管理你的數值數據,建議使用優化后的文件格式來減少數據加載時間,例如HDF5。像 H5Py, PyTables和pandas等的各種庫提供了一個Python接口,來讀寫該格式的數據。
## 5.7. Olivetti 臉部數據集
該數據集包含 1992年4月至1994年4月在AT&T實驗室劍橋采集的一組面部圖像。 該 [`sklearn.datasets.fetch_olivetti_faces`](../modules/generated/sklearn.datasets.fetch_olivetti_faces.html#sklearn.datasets.fetch_olivetti_faces "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`](../modules/generated/sklearn.datasets.fetch_20newsgroups.html#sklearn.datasets.fetch_20newsgroups "sklearn.datasets.fetch_20newsgroups"), 返回一個能夠被文本特征提取器接受的原始文本列表,例如 [`sklearn.feature_extraction.text.CountVectorizer`](../modules/generated/sklearn.feature_extraction.text.CountVectorizer.html#sklearn.feature_extraction.text.CountVectorizer "sklearn.feature_extraction.text.CountVectorizer")使用自定義的參數來提取特征向量。第二個是 [`sklearn.datasets.fetch_20newsgroups_vectorized`](../modules/generated/sklearn.datasets.fetch_20newsgroups_vectorized.html#sklearn.datasets.fetch_20newsgroups_vectorized "sklearn.datasets.fetch_20newsgroups_vectorized"), 返回即用特征,換句話說就是,這樣就沒必要使用特征提取器了。
### 5.8.1. 用法
> [`sklearn.datasets.fetch_20newsgroups`](../modules/generated/sklearn.datasets.fetch_20newsgroups.html#sklearn.datasets.fetch_20newsgroups "sklearn.datasets.fetch_20newsgroups") 是一個用于從原始的20個新聞組網址( [20 newsgroups website](http://people.csail.mit.edu/jrennie/20Newsgroups/))
下載數據歸檔的數據獲取/緩存函數,提取 `~/scikit_learn_data/20news_home` 文件夾中的 歸檔內容。并且在訓練集或測試集文件夾,或者兩者上調用函數 [`sklearn.datasets.load_files`](../modules/generated/sklearn.datasets.load_files.html#sklearn.datasets.load_files "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`](../modules/generated/sklearn.datasets.fetch_20newsgroups.html#sklearn.datasets.fetch_20newsgroups "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](https://en.wikipedia.org/wiki/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`](../modules/generated/sklearn.datasets.fetch_20newsgroups_vectorized.html#sklearn.datasets.fetch_20newsgroups_vectorized "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](../auto_examples/text/document_classification_20newsgroups.html#sphx-glr-auto-examples-text-document-classification-20newsgroups-py) 的例子將訓練和測試數據混合, 而不是按時間劃分,這種情況下,多項式貝葉斯能得到更高的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](../auto_examples/model_selection/grid_search_text_feature_extraction.html#sphx-glr-auto-examples-model-selection-grid-search-text-feature-extraction-py) 來比較結果間的差異。推薦
當使用20個新聞組數據中評估文本分類器時,你應該移除與新聞組相關的元數據。你可以通過設置`remove=('headers', 'footers', 'quotes')` 來實現。F分數將更加低因為這更符合實際
例子
- [Sample pipeline for text feature extraction and evaluation](../auto_examples/model_selection/grid_search_text_feature_extraction.html#sphx-glr-auto-examples-model-selection-grid-search-text-feature-extraction-py)
- [Classification of text documents using sparse features](../auto_examples/text/document_classification_20newsgroups.html#sphx-glr-auto-examples-text-document-classification-20newsgroups-py)
## 5.9. 從 mldata.org 上下載數據集
[mldata.org](http://mldata.org) 是一個公開的機器學習數據 repository ,由 [PASCAL network](http://www.pascal-network.org) 負責支持。
`sklearn.datasets` 包可以使用函數 [`sklearn.datasets.fetch_mldata`](../modules/generated/sklearn.datasets.fetch_mldata.html#sklearn.datasets.fetch_mldata "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](http://mldata.org) 里的數據集在命名規則和數據格式上不遵循嚴格的約定。 [`sklearn.datasets.fetch_mldata`](../modules/generated/sklearn.datasets.fetch_mldata.html#sklearn.datasets.fetch_mldata "sklearn.datasets.fetch_mldata") 可以應對大多數的常見情況,并且允許個人對數據集的默認設置進行調整:
- [mldata.org](http://mldata.org) 中的數據大多都是以 `(n_features, n_samples)` 這樣的組織形式存在。 這與 `scikit-learn` 中的習慣約定是不一致的,所以 [`sklearn.datasets.fetch_mldata`](../modules/generated/sklearn.datasets.fetch_mldata.html#sklearn.datasets.fetch_mldata "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`](../modules/generated/sklearn.datasets.fetch_mldata.html#sklearn.datasets.fetch_mldata "sklearn.datasets.fetch_mldata") 這個函數會識別目標列和數據列, 并將它們重命名為 `target(目標)` 和 `data(數據)` 。 這是通過在數據集中尋找名為 `label(標簽)` 和 `data(數據)` 的數組來完成的, 如果選擇第一個數組是 `target(目標)`,而第二個數組是 `data(數據)` ,則前邊的設置會失效。 這個行為可以通過對關鍵字 `target_name` 和 `data_name` 進行設置來改變,設置的值可以是具體的名字也可以是索引數字, 數據集中列的名字和索引序號都可以在 [mldata.org](http://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(目標)` 數組中,[``](#id31)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`](../modules/generated/sklearn.datasets.fetch_lfw_pairs.html#sklearn.datasets.fetch_lfw_pairs "sklearn.datasets.fetch_lfw_pairs") 數據集細分為 3 類: `train` set(訓練集)、`test` set(測試集)和一個 `10_folds` 評估集, `10_folds` 評估集意味著性能的計算指標使用 10 折交叉驗證( 10-folds cross validation )方案。
參考文獻:
- [Labeled Faces in the Wild: A Database for Studying Face Recognition in Unconstrained Environments.](http://vis-www.cs.umass.edu/lfw/lfw.pdf)Gary B. Huang, Manu Ramesh, Tamara Berg, and Erik Learned-Miller. University of Massachusetts, Amherst, Technical Report 07-49, October, 2007.
### 5.10.2. 示例
[Faces recognition example using eigenfaces and SVMs](../auto_examples/applications/plot_face_recognition.html#sphx-glr-auto-examples-applications-plot-face-recognition-py)
## 5.11. 森林覆蓋類型
這個數據集中的樣本對應美國的 30×30m 的 patches of forest(森林區域), 收集這些數據用于預測每個 patch 的植被 cover type (覆蓋類型),即優勢樹種。 總共有七個植被類型,使得這是一個多分類問題。 每個樣本有 54 個特征,在 [dataset’s 的主頁](http://archive.ics.uci.edu/ml/datasets/Covertype) 中有具體的描述。 有些特征是布爾指標,其他的是離散或者連續的量。
[`sklearn.datasets.fetch_covtype`](../modules/generated/sklearn.datasets.fetch_covtype.html#sklearn.datasets.fetch_covtype "sklearn.datasets.fetch_covtype") 將加載 covertype 數據集; 它返回一個類似字典的對象,并在數據成員中使用特征矩陣以及 `target` 中的目標值。 如果需要,數據集可以從網上下載。
## 5.12. RCV1 數據集
路透社語料庫第一卷( RCV1 )是路透社為了研究目的提供的一個擁有超過 800,000 份手動分類的新聞報導的文檔庫。該數據集在 [\[1\]](#id38) 中有詳細描述。
[`sklearn.datasets.fetch_rcv1`](../modules/generated/sklearn.datasets.fetch_rcv1.html#sklearn.datasets.fetch_rcv1 "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\]](#id38) 提出: 前 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](http://jmlr.csail.mit.edu/papers/volume5/lewis04a/) 上下載該數據集。 數據集壓縮后的大小大約是 656 MB。
參考文獻
\[1\]*([1](#id36), [2](#id37))* 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.98128.11texture (mean):9.7139.28perimeter (mean):43.79188.5area (mean):143.52501.0smoothness (mean):0.0530.163compactness (mean):0.0190.345concavity (mean):0.00.427concave points (mean):0.00.201symmetry (mean):0.1060.304fractal dimension (mean):0.050.097radius (standard error):0.1122.873texture (standard error):0.364.885perimeter (standard error):0.75721.98area (standard error):6.802542.2smoothness (standard error):0.0020.031compactness (standard error):0.0020.135concavity (standard error):0.00.396concave points (standard error):0.00.053symmetry (standard error):0.0080.079fractal dimension (standard error):0.0010.03radius (worst):7.9336.04texture (worst):12.0249.54perimeter (worst):50.41251.2area (worst):185.24254.0smoothness (worst):0.0710.223compactness (worst):0.0271.058concavity (worst):0.01.252concave points (worst):0.00.291symmetry (worst):0.1560.664fractal dimension (worst):0.0550.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](http://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf))
## 5.16. 光學識別手寫數字數據集
### 5.16.1. 注釋
數據集特征:實例數量:5620
屬性數量:64
屬性信息:8x8 范圍在(0-16)的整型像素值圖片
缺失屬性值:無
創建者:1. Alpaydin ([alpaydin@boun.edu.tr](mailto:alpaydin%40boun.edu.tr))
日期: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.37.95.840.830.7826sepal width:2.04.43.050.43-0.4194petal length:1.06.93.761.760.9490 (high!)petal width:0.12.51.200.760.9565 (high!)缺失屬性值:無類別分布:3個類別各占33.3%創建者:R.A. Fisher捐助者:Michael Marshall ([MARSHALL%PLU@io.arc.nasa.gov](mailto:MARSHALL%PLU%40io.arc.nasa.gov))日期: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.
- scikit-learn 0.19 中文文檔
- 用戶指南
- 1. 監督學習
- 1.1. 廣義線性模型
- 1.2. 線性和二次判別分析
- 1.3. 內核嶺回歸
- 1.4. 支持向量機
- 1.5. 隨機梯度下降
- 1.6. 最近鄰
- 1.7. 高斯過程
- 1.8. 交叉分解
- 1.9. 樸素貝葉斯
- 1.10. 決策樹
- 1.11. 集成方法
- 1.12. 多類和多標簽算法
- 1.13. 特征選擇
- 1.14. 半監督學習
- 1.15. 等式回歸
- 1.16. 概率校準
- 1.17. 神經網絡模型(有監督)
- 2. 無監督學習
- 2.1. 高斯混合模型
- 2.2. 流形學習
- 2.3. 聚類
- 2.4. 雙聚類
- 2.5. 分解成分中的信號(矩陣分解問題)
- 2.6. 協方差估計
- 2.7. 經驗協方差
- 2.8. 收斂協方差
- 2.9. 稀疏逆協方差
- 2.10. Robust 協方差估計
- 2.11. 新奇和異常值檢測
- 2.12. 密度估計
- 2.13. 神經網絡模型(無監督)
- 3. 模型選擇和評估
- 3.1. 交叉驗證:評估估算器的表現
- 3.2. 調整估計器的超參數
- 3.3. 模型評估: 量化預測的質量
- 3.4. 模型持久化
- 3.5. 驗證曲線: 繪制分數以評估模型
- 4. 數據集轉換
- 4.1. Pipeline(管道)和 FeatureUnion(特征聯合): 合并的評估器
- 4.2. 特征提取
- 4.3. 預處理數據
- 4.4. 無監督降維
- 4.5. 隨機投影
- 4.6. 內核近似
- 4.7. 成對的矩陣, 類別和核函數
- 4.8. 預測目標 (y) 的轉換
- 5. 數據集加載工具
- 6. 大規模計算的策略: 更大量的數據
- 7. 計算性能
- 教程
- 使用 scikit-learn 介紹機器學習
- 關于科學數據處理的統計學習教程
- 機器學習: scikit-learn 中的設置以及預估對象
- 監督學習:從高維觀察預測輸出變量
- 模型選擇:選擇估計量及其參數
- 無監督學習: 尋求數據表示
- 把它們放在一起
- 尋求幫助
- 處理文本數據
- 選擇正確的評估器(estimator)
- 外部資源,視頻和談話