scikit-learn 數(shù)據(jù)集加載工具

2023-02-20 14:45 更新

sklearn.datasets模塊嵌入了“ 入門“部分介紹的一些小型玩具數(shù)據(jù)集。

該模塊還具有幫助用戶獲取大型數(shù)據(jù)集的功能,這些數(shù)據(jù)集通常由機器學習社區(qū)用來模擬“現(xiàn)實世界”的數(shù)據(jù)來進行算法測試。

為了控制數(shù)據(jù)統(tǒng)計特性(通常是特征的相關性和信息性)的同時評估數(shù)據(jù)集規(guī)模(n_samplesn_features)的影響,還可以生成綜合數(shù)據(jù)集。

7.1 通用數(shù)據(jù)集

根據(jù)所需的數(shù)據(jù)集類型,可以使用三個主要的數(shù)據(jù)集接口來獲取數(shù)據(jù)集。

The dataset loaders(數(shù)據(jù)集加載器)。它們可用于加載小的標準數(shù)據(jù)集,如“ 玩具數(shù)據(jù)集”部分所述。

The dataset fetchers(數(shù)據(jù)集提取程序)。它們可用于下載和加載更大的數(shù)據(jù)集,如“ 現(xiàn)實世界數(shù)據(jù)集”部分所述。

loaders和fetchers的函數(shù)返回一個sklearn.utils.Bunch 對象,這個對象至少包含兩個部分:一部分是n_samples* n_features的數(shù)據(jù)框,與鍵data(除了20個新聞組的數(shù)據(jù)集)對應;另一個是包含有目標值的長度等于n_samples的數(shù)組,與鍵target對應。

Bunch對象是一個字典,它的鍵是屬性。有關Bunch對象的更多信息,請參見sklearn.utils.Bunch。

通過將return_X_y參數(shù)設置為True,幾乎所有這些函數(shù)還可以將輸出約束為僅包含特征數(shù)據(jù)和目標的元組。

數(shù)據(jù)集的DESCR屬性中還包含完整的說明,其中一些包含feature_namestarget_names。有關詳細信息,請參見下面的數(shù)據(jù)集描述。

The dataset generation functions(數(shù)據(jù)集生成函數(shù))。它們可用于生成受控的合成數(shù)據(jù)集,如“ 生成的數(shù)據(jù)集”部分所述。

這些函數(shù)返回一個元組(X, y),該元組由一個n_samples*n_features的 numpy數(shù)組X和一個 包含目標的長度為n_samples的數(shù)組y組成。

此外,還有其他工具可用于加載其他格式或從其他位置加載數(shù)據(jù)集,如“ 加載其他數(shù)據(jù)集” 部分所述。

7.2 玩具數(shù)據(jù)集

scikit-learn帶有一些小的標準數(shù)據(jù)集,不需要從某些外部網(wǎng)站下載任何文件。

可以使用以下功能加載它們:

函數(shù) 返回
load_boston(*[, return_X_y]) 加載并返回波士頓房價數(shù)據(jù)集(回歸)。
load_iris(*[, return_X_y, as_frame]) 加載并返回鳶尾花數(shù)據(jù)集(分類)。
load_diabetes(*[, return_X_y, as_frame]) 加載并返回糖尿病數(shù)據(jù)集(回歸)。
load_digits(*[, n_class, return_X_y, as_frame]) 加載并返回數(shù)字數(shù)據(jù)集(分類)。
load_linnerud(*[, return_X_y, as_frame]) 加載并返回linnerud物理鍛煉數(shù)據(jù)集。
load_wine(*[, return_X_y, as_frame]) 加載并返回葡萄酒數(shù)據(jù)集(分類)。
load_breast_cancer(*[, return_X_y, as_frame]) 加載并返回威斯康星州乳腺癌數(shù)據(jù)集(分類)。

這些數(shù)據(jù)集可用于快速說明scikit-learn中實現(xiàn)的各種算法的行為。但是,

7.2.1 波士頓房價數(shù)據(jù)集

數(shù)據(jù)集特征:

實例數(shù) 506
屬性數(shù)量 13個數(shù)值/分類特征,房價中位數(shù)(特征14)是標簽。
屬性信息(按順序) - CRIM 按城鎮(zhèn)劃分的人均犯罪率
- ZN 比例超過25,000平方英尺的住宅用地比例。
- INDUS 每個城鎮(zhèn)非零售業(yè)務英畝的比例
- CHAS 查爾斯河虛擬變量(如果邊界是河流,則為1;否則為0)
- NOX 一氧化氮濃度(百萬分之幾)
- RM 每個住宅的平均房間數(shù)
- AGE 1940年之前建造的自有住房的年齡比例
- DIS 與五個波士頓就業(yè)中心的加權(quán)距離
- RAD 高速公路通行能力指數(shù)
- TAX 每10,000美元的稅全額財產(chǎn)稅稅率
- PTRATIO 按鎮(zhèn)劃分的師生比率
- B 1000(Bk-0.63)^ 2 其中Bk是按城鎮(zhèn)劃分的黑人比例
- LSTAT 人口地位降低百分比
- MEDV 自有住房的價值中位數(shù)(以1000美元計)
缺失值
創(chuàng)作者 Harrison, D. and Rubinfeld, D.L.

這是UCI ML住房數(shù)據(jù)集的副本。 https://archive.ics.uci.edu/ml/machine-learning-databases/housing/

該數(shù)據(jù)集取自卡內(nèi)基梅隆大學維護的StatLib庫。

波士頓房價數(shù)據(jù)出現(xiàn)在哈里森(Harrison)和魯賓菲爾德(Rubinfeld)的“Hedonic prices and the demand for clean air”,1978年 J. Environ. Economics & Management,第5卷,第81-102頁 。后被Belsley,Kuh和Welsch用在“ Regression diagnostics … ”, Wiley, 1980. N.B. Various 。注意后者的244-261頁上的表格中的數(shù)據(jù)是經(jīng)過轉(zhuǎn)換的。

波士頓房價數(shù)據(jù)已用于許多解決回歸問題的機器學習論文中。

參考文獻

  • 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.

7.2.2 鳶尾花植物數(shù)據(jù)集

數(shù)據(jù)集特征:

實例數(shù) 150(三類各50個)
屬性數(shù)量 4個數(shù)值,預測屬性和類別
屬性信息 - 萼片長度(厘米)
- 萼片寬度(厘米)
- 花瓣長度(厘米)
- 花瓣寬度(厘米)
- 類:
鳶尾花
鳶尾花
鳶尾花
統(tǒng)計摘要
缺失值
類別分布 3個類別中的每類別占33.3%。
創(chuàng)作者 R.A. Fisher
捐贈者 Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
日期 1988年7月

著名的鳶尾花數(shù)據(jù),最早由 R.A. Fisher 爵士使用。該數(shù)據(jù)集摘自Fisher的論文。請注意,它與R中的相同,但與UCI機器學習存儲庫中的不同,后者具有兩個錯誤的數(shù)據(jù)點。

這也許是模式識別文獻中最著名的數(shù)據(jù)庫。Fisher的論文是該領域的經(jīng)典著作,至今仍被頻繁引用(請參見Duda&Hart)。數(shù)據(jù)集包含3類,每類50個實例,其中每個類都屬于一種鳶尾花。一類與其他兩類可線性分離;后者與其他的類別不能線性分離。

參考文獻

  • 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 …

7.2.3 糖尿病數(shù)據(jù)集

從442名糖尿病患者中獲取每位的年齡,性別,體重指數(shù),平均血壓和六次血清測量值,共十個基線變量,以及一年后疾病進展的定量測量指標。

數(shù)據(jù)集特征:

實例數(shù) 442
特征數(shù)量 前10列是數(shù)字測量值
標簽 第11列是基線后一年疾病進展的定量測量
特征信息 年齡(歲)
性別
體重指數(shù)
bp平均血壓
s1 tc,T細胞(一種白細胞)
s2 ldl,低密度脂蛋白
s3 hdl,高密度脂蛋白
s4 tch,甲狀腺刺激激素
S5 LTG,拉莫三嗪
s6 glu,血糖水平

注意:這10個特征變量中的每一個都以平均值為中心,并按標準偏差乘以 n_samples (即每列總和的平方和1)進行縮放。

源URL:https : //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. (https://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf)

7.2.4 手寫數(shù)字數(shù)據(jù)集的光學識別

數(shù)據(jù)集特征:

實例數(shù) 5620
屬性數(shù)量 64
屬性信息 范圍為0..16的整數(shù)像素的8x8圖像。
缺失值
創(chuàng)作者 Alpaydin (alpaydin ‘@’ boun.edu.tr)
日期 1998年7月

這是UCI ML手寫數(shù)字數(shù)據(jù)集測試集的副本 https://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handheld+Digits

數(shù)據(jù)集包含手寫數(shù)字的圖像:10個類別,每個類別均指一個數(shù)字。

NIST提供的預處理程序用于從預印表格中提取手寫數(shù)字的標準化位圖。在總共43個人中,有30個人參與了培訓,而有13個人參與了測試。將32x32位圖劃分為4x4的非重疊塊,并在每個塊中統(tǒng)計像素點的數(shù)量。這將生成8x8的輸入矩陣,其中每個元素都是0..16范圍內(nèi)的整數(shù)。這降低了尺寸并且產(chǎn)生了小的變形。

有關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.

參考文獻

  • 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.

7.2.5 Linnerrud(林納魯?shù)拢?shù)據(jù)集

數(shù)據(jù)集特征:

實例數(shù) 20
屬性數(shù)量 3
缺失值

Linnerrud數(shù)據(jù)集是一個多輸出回歸數(shù)據(jù)集。它包括從健身俱樂部的二十名中年男子中收集的三個運動(data)和三個生理(target)變量:

  • 生理-CSV包含對3個生理變量的20個觀察值

? 體重,腰圍和脈搏。

  • 運動-CSV包含對3個運動變量的20個觀察值

? 下巴,仰臥起坐和跳躍。

參考文獻

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

7.2.6 葡萄酒數(shù)據(jù)集

數(shù)據(jù)集特征:

實例數(shù) 178(3類各50個)
屬性數(shù)量 13個數(shù)值,預測屬性和類別
屬性信息 - 醇
- 蘋果酸
- 灰
- 灰的堿度
- 鎂
- 總酚
- 類黃酮
- 非類黃酮酚
- 原花青素
- 色彩強度
- 色調(diào)
- 稀釋酒的OD280 / OD315
- 脯氨酸
- 類別:
class_0
class_1
class_2
統(tǒng)計摘要
缺失值
類別分布 class_0(59),class_1(71),class_2(48)
創(chuàng)作者 R.A. Fisher
捐贈者 Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
日期 1988年7月

這是UCI ML Wine識別數(shù)據(jù)集的副本。 https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data

數(shù)據(jù)是由三個不同的種植者對意大利同一地區(qū)種植的葡萄酒進行化學分析的結(jié)果。對于這三種葡萄酒中的不同成分,進行了十三項不同的測量。

原始所有者:

Forina, M. et al, PARVUS - An Extendible Package for Data Exploration, Classification and Correlation. Institute of Pharmaceutical and Food Analysis and Technologies, Via Brigata Salerno, 16147 Genoa, Italy.

引文:

Lichman, M. (2013). UCI Machine Learning Repository [https://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.

參考文獻

(1) S. Aeberhard, D. Coomans and O. de Vel, Comparison of Classifiers in High Dimensional Settings, Tech. Rep. no. 92-02, (1992), Dept. of Computer Science and Dept. of Mathematics and Statistics, James Cook University of North Queensland. (Also submitted to Technometrics).

The data was used with many others for comparing various classifiers. The classes are separable, though only RDA has achieved 100% correct classification. (RDA : 100%, QDA 99.4%, LDA 98.9%, 1NN 96.1% (z-transformed data)) (All results using the leave-one-out technique)

(2) S. Aeberhard, D. Coomans and O. de Vel, “THE CLASSIFICATION PERFORMANCE OF RDA” Tech. Rep. no. 92-01, (1992), Dept. of Computer Science and Dept. of Mathematics and Statistics, James Cook University of North Queensland. (Also submitted to Journal of Chemometrics).

7.2.7 威斯康星州乳腺癌(診斷)數(shù)據(jù)集

數(shù)據(jù)集特征:

實例數(shù) 569
屬性數(shù)量 30個數(shù)值型預測屬性和1個類別標簽
屬性信息 - 半徑(從中心到周長上的點的距離的平均值)
- 紋理(灰度值的標準差)
- 周長
- 面積
- 平滑度(半徑長度的局部變化)
- 緊密度(周長*周長 /面積-1.0)
- 凹度(輪廓凹陷的嚴重程度)
- 凹點(輪廓的凹入部分的數(shù)量)
- 對稱
- 分形維數(shù)(“海岸線近似”-1)
為每個圖像計算這些特征的平均值,標準和“最差”(最大值),從而得到30個特征。
例如,字段0是平均半徑,字段10是半徑標準差,字段20是最差半徑。
標簽分類:
-- WDBC-惡性
-- WDBC-良性
統(tǒng)計摘要
缺失值
類別分布 212-惡性,357-良性
創(chuàng)作者 Dr. William H. Wolberg, W. Nick Street, Olvi L. Mangasarian
捐贈者 Nick Street
日期 1995年11月

這是UCI ML威斯康星州(診斷)乳腺癌數(shù)據(jù)集的副本。 https://goo.gl/U2Uwz2

從乳腺腫塊的細針抽吸(FNA)的數(shù)字化圖像計算特征。它們描述了圖像中存在的細胞核的特征。

上述分離平面是使用多表面方法樹(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] ,一種使用線性規(guī)劃構(gòu)建決策樹的分類方法。在1-4個特征和1-3個分離平面的空間中使用詳盡搜索選擇相關特征。

用于獲得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].

該數(shù)據(jù)庫也可以通過UW CS ftp服務器獲得:

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

參考文獻

  • 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.

7.3 現(xiàn)實世界的數(shù)據(jù)集

scikit-learn提供了加載較大數(shù)據(jù)集的工具,必要時可以下載它們。

可以使用以下函數(shù)加載它們:

函數(shù) 說明
fetch_olivetti_faces(*[, data_home, …]) 從AT&T(分類)中加載Olivetti人臉數(shù)據(jù)集。
fetch_20newsgroups(*[, data_home, subset, …]) 從20個新聞組數(shù)據(jù)集中加載文件名和數(shù)據(jù)(分類)。
fetch_20newsgroups_vectorized(*[, subset, …]) 加載20個新聞組數(shù)據(jù)集并將其矢量化為令牌計數(shù)(分類)。
fetch_lfw_people(*[, data_home, funneled, …]) 將標簽的面孔加載到Wild(LFW)人數(shù)據(jù)集中(分類)。
fetch_lfw_pairs(*[, subset, data_home, …]) 在“Wild(LFW)”對數(shù)據(jù)集中加載標簽的面部(分類)。
fetch_covtype(*[, data_home, …]) 加載covertype(植被型數(shù)據(jù)集)數(shù)據(jù)集(分類)。
fetch_rcv1(*[, data_home, subset, …]) 加載RCV1多標簽數(shù)據(jù)集(分類)。
fetch_kddcup99(*[, subset, data_home, …]) 加載kddcup99(網(wǎng)絡入侵檢測)數(shù)據(jù)集(分類)。
fetch_california_housing(*[, data_home, …]) 加載加利福尼亞住房數(shù)據(jù)集(回歸)。

7.3.1 Olivetti人臉數(shù)據(jù)集

該數(shù)據(jù)集包含 1992年4月至1994年4月之間在AT&T劍橋?qū)嶒炇遗臄z的一組面部圖像。sklearn.datasets.fetch_olivetti_faces函數(shù)是數(shù)據(jù)獲取/緩存功能,可從AT&T下載數(shù)據(jù)存檔。

如原始網(wǎng)站所述:

40個不同主題,每一個主題都有十張不同的圖像。對于某些對象,圖像是在不同的時間拍攝的,光線,面部表情(睜開/閉合的眼睛,微笑/不微笑)和面部細節(jié)(眼鏡/不戴眼鏡)均不同。所有圖像都是在深色均勻背景下拍攝的,對象處于直立的,正面的位置(允許某些側(cè)向移動)。

數(shù)據(jù)集特征:

類別 40
樣品總數(shù) 400
維數(shù) 4096
特征 實數(shù),介于0和1之間

圖像被量化為256灰度級并存儲為無符號的8位整數(shù)。加載程序會將這些值轉(zhuǎn)換為[0,1]區(qū)間內(nèi)的浮點值,對于許多算法而言,它們更易于使用。

該數(shù)據(jù)庫的“類別標簽”是從0到39的整數(shù),表示被攝人物的身份。但是,每個類只有10個示例,從無監(jiān)督或半監(jiān)督的角度來看,這個相對較小的數(shù)據(jù)集更加有趣。

原始數(shù)據(jù)集包含92 x 112,而這里的版本是64x64的圖像。

能使用這些圖像,請歸功于AT&T劍橋?qū)嶒炇摇?/p>

7.3.2 20個新聞組文本數(shù)據(jù)集

20個新聞組數(shù)據(jù)集,包括關于20個主題的大約18000個新聞帖子,分為兩個子集:一個用于訓練(或開發(fā)),另一個用于測試(或性能評估)。訓練集和測試集之間的劃分基于特定日期之前和之后發(fā)布的消息。

該模塊包含兩個加載程序。第一個 sklearn.datasets.fetch_20newsgroups返回原始文本列表,這些原始文本可以饋送到文本特征提取器(例如sklearn.feature_extraction.text.CountVectorizer 使用自定義參數(shù)),以提取特征向量。第二個是sklearn.datasets.fetch_20newsgroups_vectorized返回可用的特征,而不必使用特征提取器。

數(shù)據(jù)集特征:

類別 20
樣本總數(shù) 18846
維數(shù) 1個
特征 文本

7.3.2.1 用法

sklearn.datasets.fetch_20newsgroups函數(shù)是一種數(shù)據(jù)獲取/緩存函數(shù),可從原始的20個新聞組網(wǎng)站下載數(shù)據(jù)存檔,提取~/scikit_learn_data/20news_home文件夾中的存檔內(nèi)容,然后調(diào)用sklearn.datasets.load_files訓練或測試集文件夾,或同時調(diào)用兩者:

>>> 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']

實際數(shù)據(jù)位于filenamestarget屬性中。目標標簽是代表類別的整數(shù):

>>> newsgroups_train.filenames.shape
(11314,)
>>> newsgroups_train.target.shape
(11314,)
>>> newsgroups_train.target[:10]
array([ 7,  4,  4,  1, 14, 16, 13,  3,  2,  4])

通過將要加載的類別列表傳遞給sklearn.datasets.fetch_20newsgroups函數(shù),可以僅加載類別的某個子集 :

>>> 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([0, 1, 1, 1, 0, 1, 1, 0, 0, 0])

7.3.2.2 將文本轉(zhuǎn)換為向量

為了將文本數(shù)據(jù)用于預測或聚類模型,首先需要將文本轉(zhuǎn)換為適合統(tǒng)計分析的數(shù)值向量。如以下示例所示,可以使用sklearn.feature_extraction.text模塊來實現(xiàn)此目的,該模塊從20個新聞組數(shù)據(jù)的訓練集中提取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維的空間(不到0.5%的非零特征)中,平均每個樣本有159個非零分量:

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

sklearn.datasets.fetch_20newsgroups_vectorized 是一個返回即用型令牌計數(shù)特征而不是文件名的函數(shù)。

7.3.2.3 過濾文本以進行更實際的訓練

對于分類器來說,很容易在20個新聞組數(shù)據(jù)中出現(xiàn)的特定內(nèi)容(如新聞組標題)上過度匹配。許多分類器得到的F分數(shù)都很高,但對于不在此時間范圍內(nèi)的其他文檔上表現(xiàn)的很糟糕。

例如,讓我們看看多項式樸素貝葉斯分類器的結(jié)果,該分類器可以快速訓練并獲得不錯的F分數(shù):

>>> 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)
MultinomialNB(alpha=0.01, class_prior=None, fit_prior=True)

>>> pred = clf.predict(vectors_test)
>>> metrics.f1_score(newsgroups_test.target, pred, average='macro')
0.88213...

使用稀疏特征的文本文檔分類示例打亂了訓練集和測試集,而不是按時間分段,在這種情況下,多項式樸素貝葉斯的F分數(shù)更高,為0.88。你是否對該分類器內(nèi)部發(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: edu it and in you that is of to the
comp.graphics: edu in graphics it is for and of to the
sci.space: edu it that is in and space to of the
talk.religion.misc: not it you in is that and to of the

現(xiàn)在,您可以看到許多特征引起過擬合的情況:

  • 幾乎每個組都通過諸如NNTP-Posting-Host:和的標頭Distribution:或多或少地出現(xiàn)來區(qū)分 。
  • 另一個重要特征涉及發(fā)件人是否隸屬于大學,這可以從他們的標題或簽名中看出 。
  • “article”一詞是一個重要的特征,它基于人們引用以前文章的頻率,如:“在文章[文章ID]中,[名稱] <[電子郵件地址]>寫道:”
  • 其他特征與當時正在發(fā)布的特定人員的姓名和電子郵件地址匹配。

憑借如此豐富的區(qū)分新聞組的線索,分類器根本無需從文本中識別主題,而且它們都表現(xiàn)出相同的高水平。

因此,加載20個新聞組數(shù)據(jù)的函數(shù)提供了一個稱為remove的參數(shù),限定要從每個文件中刪除哪些信息。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.77310...

這個分類器失去了很多F分數(shù),只是因為我們刪除了與主題分類無關的元數(shù)據(jù)。如果我們還從訓練數(shù)據(jù)中刪除此元數(shù)據(jù),則損失會更大:

>>> 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)
MultinomialNB(alpha=0.01, class_prior=None, fit_prior=True)
>>> vectors_test = vectorizer.transform(newsgroups_test.data)
>>> pred = clf.predict(vectors_test)
>>> metrics.f1_score(newsgroups_test.target, pred, average='macro')
0.76995...

其他一些分類器可以更好地應對此較難的任務。可以嘗試運行用于文本特征提取和評估的示例,選擇使用和不使用--filter選項來比較結(jié)果。

建議
當評估20個新聞組數(shù)據(jù)上的文本分類器時,應刪除與新聞組相關的元數(shù)據(jù)。在scikit-learn中,您可以通過設置remove=('headers', 'footers', 'quotes')來做到這一點。F分數(shù)將較低,但是它更符合實際。
例子
用于文本特征提取和評估的示例
使用稀疏特征對文本文檔進行分類

7.3.3 Wild人臉識別數(shù)據(jù)集中的標簽人臉

該數(shù)據(jù)集是通過互聯(lián)網(wǎng)收集的名人的 JPEG 圖片的集合,所有詳細信息都可以在官方網(wǎng)站上找到:http://vis-www.cs.umass.edu/lfw/

每張圖片均以一張臉為中心。典型的任務稱為人臉驗證:給定一對兩張圖片,二進制分類器必須預測這兩個圖片是否來自同一個人。

另一種任務是“人臉驗證”或“人臉識別”:給定未知人物的面部圖片,通過參考先前看到的已識別人物圖片庫來識別人物姓名。

人臉驗證和人臉識別都是典型的任務,都是在一個經(jīng)過訓練的模型的輸出上執(zhí)行的。最流行的人臉檢測模型稱為Viola-Jones,在OpenCV庫中實現(xiàn)。 該人臉檢測器從各種網(wǎng)絡中提取LFW人臉圖片。

數(shù)據(jù)集特征:

類別 5749
樣本總數(shù) 13233
維數(shù) 5828
特征 實數(shù),介于0和255之間

7.3.3.1 用法

scikit-learn提供了兩個加載程序,這些加載程序?qū)⒆詣酉螺d,緩存,解析元數(shù)據(jù)文件,解碼jpeg并將感興趣的部分轉(zhuǎn)換為映射的numpy數(shù)組。該數(shù)據(jù)集的大小大于200 MB。第一次加載通常需要花費幾分鐘以上的時間才能將JPEG文件的相關部分完全解碼為numpy數(shù)組。如果數(shù)據(jù)集已被加載一次,則通過使用joblib緩存~/scikit_learn_data/lfw_home/文件夾中的映射版本,以下兩次的加載時間少于200ms 。

第一個加載程序用于人臉識別任務:多類分類任務(因此有監(jiān)督學習):

>>> 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

默認切片是臉部周圍的矩形,會刪除大部分背景:

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

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

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

1140個面孔都唯一的對應到target 數(shù)組中的一個人的ID :

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

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

第二個加載器通常用于面部驗證任務:每個樣本都是一對屬于或不屬于同一個人的兩張圖片:

>>> 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,)

對于sklearn.datasets.fetch_lfw_peoplesklearn.datasets.fetch_lfw_pairs函數(shù),都可以通過傳遞color=True來獲得RGB顏色通道的附加維度,在這種情況下,數(shù)據(jù)形狀將為 (2200, 2, 62, 47, 3)

sklearn.datasets.fetch_lfw_pairs的數(shù)據(jù)集被細分成3個子集:train訓練集,test測試集和10_folds評估集,這意味著使用10倍交叉驗證方案來計算性能指標。

參考文獻:

Labeled Faces in the Wild: A Database for Studying Face Recognition in Unconstrained Environments. Gary B. Huang, Manu Ramesh, Tamara Berg, and Erik Learned-Miller. University of Massachusetts, Amherst, Technical Report 07-49, October, 2007.

7.3.3.2 例子

使用人臉特征和SVM的臉部識別示例

7.3.4 森林覆蓋類型數(shù)據(jù)集

該數(shù)據(jù)集中的每個樣本對應于美國30m×30m的森林斑塊,是為了預測每個斑塊的覆蓋類型(即樹木的主要樹種)而收集的。有七個覆蓋類型,這使其成為多類分類問題。每個樣本都有54個特征,在數(shù)據(jù)集的首頁上進行了介紹 。其中一些特征是布爾類型,而其他特征則是離散或連續(xù)的測量值。

數(shù)據(jù)集特征:

類別 7
樣本總數(shù) 581012
維數(shù) 54
特征 整型

sklearn.datasets.fetch_covtype將加載森林覆蓋類型數(shù)據(jù)集,它返回一個類似于字典的對象,其data參數(shù)對應特征矩陣,目標值位于target。如有必要,將從網(wǎng)絡上下載數(shù)據(jù)集。

7.3.5 RCV1數(shù)據(jù)集

路透社語料庫第一卷(RCV1)是一個由路透社有限公司為研究目的提供的超過80萬個手動分類的新聞報道的檔案。該數(shù)據(jù)集在[1]中進行了詳細描述。

數(shù)據(jù)集特征:

類別 103
樣本總數(shù) 804414
維數(shù) 47236
特征 實數(shù),介于0和1之間

sklearn.datasets.fetch_rcv1 將加載以下版本:RCV1-v2,向量,完整集,主題多標簽:

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

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

data:特征矩陣是Scipy CSR稀疏矩陣,具有804414個樣本和47236個特征。非零值包含余弦標準化的對數(shù)TF-IDF向量。在[1]中提出了一個按時間順序的劃分:前面23149個樣本是訓練集。最后的781265個樣本是測試集。這是按照LYRL2004官方時間順序進行的。該數(shù)組具有0.16%的非零值:

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

target:目標值存儲在Scipy CSR稀疏矩陣中,具有804414個樣本和103個類別。每個樣本在其類別中的值為1,在其他類別中的值為0。該數(shù)組具有3.15%的非零值:

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

sample_id:每個樣本都可以通過其ID進行識別,范圍從2286到810596(帶間隙):

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

target_names:每個樣本的主題目標值。每個樣本至少屬于一個主題,最多屬于17個主題。有103個主題,每個主題都由一個字符串表示。他們的語料庫頻率跨越五個數(shù)量級,從“ GMIL”的5個出現(xiàn)到“ CCAT”的381327:

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

如有必要,將從rcv1主頁下載數(shù)據(jù)集。壓縮后的大小約為656 MB。

參考文獻

1(1,2)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.

7.3.6 Kddcup 99(網(wǎng)絡入侵檢測)數(shù)據(jù)集

KDD Cup '99數(shù)據(jù)集是通過處理MIT Lincoln Lab [1]創(chuàng)建的1998 DARPA入侵檢測系統(tǒng)(IDS)評估數(shù)據(jù)集的tcpdump部分而創(chuàng)建的。人工數(shù)據(jù)(在數(shù)據(jù)集首頁上進行了描述)是使用封閉網(wǎng)絡和人工注入的攻擊生成的,以在后臺正常活動的情況下產(chǎn)生大量不同類型的攻擊。由于最初的目標是為監(jiān)督學習算法生成大型訓練集,所以有很大一部分(80.1%)的異常數(shù)據(jù)在現(xiàn)實世界中是不現(xiàn)實的,因此不適合用于旨在檢測“異?!睌?shù)據(jù)的無監(jiān)督異常檢測,即:

  1. 與正常數(shù)據(jù)在質(zhì)量上有所不同
  2. 在觀察中占少數(shù)。

因此,我們將KDD數(shù)據(jù)集轉(zhuǎn)換為兩個不同的數(shù)據(jù)集:SA和SF。

  • SA是通過簡單選擇所有正常數(shù)據(jù)和少量異常數(shù)據(jù)得出的,異常比例為1%。

  • SF就像在[2]中一樣,簡單地獲取屬性logged_in為正的數(shù)據(jù),從而集中在入侵攻擊上,其攻擊率為0.3%。

  • http和smtp是SF的兩個子集,對應于第三個特征等于'http'( 或者 ‘smtp’ )

一般KDD結(jié)構(gòu):

樣本總數(shù) 4898431
維數(shù) 41
特征 離散(整數(shù))或連續(xù)(浮點)
目標標簽 str,“正?!??;虍惓n愋偷拿Q

SA結(jié)構(gòu):

樣本總數(shù) 976158
維數(shù) 41
特征 離散(整數(shù))或連續(xù)(浮點)
目標標簽 str,“正?!??;虍惓n愋偷拿Q

SF結(jié)構(gòu):

樣本總數(shù) 699691
維數(shù) 4
特征 離散(整數(shù))或連續(xù)(浮點)
目標標簽 str,“正?!薄;虍惓n愋偷拿Q

http結(jié)構(gòu):

樣本總數(shù) 619052
維數(shù) 3
特征 離散(整數(shù))或連續(xù)(浮點)
目標標簽 str,“正?!??;虍惓n愋偷拿Q

smtp結(jié)構(gòu):

樣本總數(shù) 95373
維數(shù) 3
特征 離散(整數(shù))或連續(xù)(浮點)
目標標簽 str,“正?!?。或異常類型的名稱

sklearn.datasets.fetch_kddcup99將加載kddcup99數(shù)據(jù)集;它返回一個類似于字典的對象,其中data對應特征矩陣,目標值位于中target。如有必要,將從網(wǎng)絡上下載數(shù)據(jù)集。

7.3.7 加州房屋數(shù)據(jù)集

數(shù)據(jù)集特征:

實例數(shù) 20640
屬性數(shù)量 8個數(shù)字預測屬性和1個目標變量
屬性信息 - MedInc 中位數(shù)收入
- HouseAge 房屋平均年齡
- AveRooms 平均房間數(shù)
- AveBedrms 平均臥室數(shù)
- Population 人口
- AveOccup 平均房屋出租率
- Latitude 房子街區(qū)緯度
- Longitude 房子街區(qū)經(jīng)度
缺失值

該數(shù)據(jù)集是從StatLib存儲庫獲得的。 http://lib.stat.cmu.edu/datasets/

目標變量是加利福尼亞地區(qū)的房屋中位價。

該數(shù)據(jù)集來自1990年美國人口普查,每個人口普查區(qū)塊組使用一行。街區(qū)小組是美國人口普查局發(fā)布樣本數(shù)據(jù)的最小地理單位(街區(qū)小組通常人口為600至3,000人)。

可以使用該sklearn.datasets.fetch_california_housing函數(shù)下載/加載 。

參考文獻

Pace, R. Kelley and Ronald Barry, Sparse Spatial Autoregressions, Statistics and Probability Letters, 33 (1997) 291-297

7.4 生成的數(shù)據(jù)集

此外,scikit-learn包括各種隨機樣本生成器,可用于構(gòu)建大小和復雜度受控的人工數(shù)據(jù)集。

7.4.1 分類和聚類的生成器

這些生成器生成特征矩陣和相應的離散目標。

7.4.1.1 單標簽

make_blobs和make_classification通過。

make_blobsmake_classification都通過為每個類分配一個或多個正態(tài)分布的點集群來創(chuàng)建多類數(shù)據(jù)集集。 make_blobs提供有關每個聚類的中心和標準偏差的更好控制,并用于演示聚類。 make_classification專門通過相關,冗余和非信息性特征,類別的高斯聚類以及特征空間的線性變換等方式引入噪聲

make_gaussian_quantiles將單個高斯聚類劃分為由同心超球體分隔的近似相等大小的類。 make_hastie_10_2產(chǎn)生類似的10維二分類問題。


make_circlesmake_moons生成對某些算法(例如基于質(zhì)心的聚類或線性分類)具有挑戰(zhàn)性的二維二分類數(shù)據(jù)集(包括可選的高斯噪聲)。它們對于可視化很有用。make_circles產(chǎn)生具有球形決策邊界的高斯數(shù)據(jù)以進行二元分類,同時 make_moons產(chǎn)生兩個交織的半圓。

7.4.1.2 多標簽

make_multilabel_classification生成帶有多個標簽的隨機樣本,以反映出從多個主題混合而來的一堆單詞。每個文檔的主題數(shù)是從泊松分布中得出的,主題本身是從固定的隨機分布中得出的。同樣,單詞的數(shù)量是從泊松分布中抽取的,單詞是從多項式分布抽取的,其中每個主題都定義了單詞的概率分布。 在以下方面簡化了 bag-of-words mixtures (單詞混合包) :

  • 每個主題的單詞分布都是獨立繪制的,實際上,所有單詞分布都會受到稀疏的基本分布的影響,并且會相互關聯(lián)。
  • 對于從多個主題生成的文檔,所有主題在生成其詞袋時均具有同等的權(quán)重。
  • 沒有標簽的文檔單詞是隨機的,而不是來自基礎分布。


7.4.1.3 集群化

make_biclusters(shape, n_clusters, *[, …]) 生成具有恒定塊對角線結(jié)構(gòu)的數(shù)組以進行雙聚類。
make_checkerboard(shape, n_clusters, *[, …]) 生成具有棋盤格結(jié)構(gòu)的數(shù)組以進行雙聚類。

7.4.2 回歸生成器

make_regression產(chǎn)生的回歸目標是隨機特征的可選稀疏隨機線性組合,帶有噪聲。它的特征可能是不相關的,或者是低秩的(少數(shù)特征占大多數(shù)方差)。。

其他回歸生成器根據(jù)隨機特征確定性地生成函數(shù)。 make_sparse_uncorrelated產(chǎn)生的目標是四個具有固定系數(shù)的特征的線性組合。其他特征顯示非線性關系, make_friedman1是由多項式和正弦變換聯(lián)系起來的,make_friedman2包括特征的乘法和往復; make_friedman3類似于目標上的arctan變換。

7.4.3 用于流形學習的生成器

make_s_curve([n_samples, noise, random_state]) 生成S曲線數(shù)據(jù)集。
make_swiss_roll([n_samples, noise, random_state]) 生成瑞士卷(swiss roll)數(shù)據(jù)集。

7.4.4 分解生成器

make_low_rank_matrix([n_samples, …]) 生成具有鐘形奇異值的低階矩陣
make_sparse_coded_signal(n_samples, *, …) 生成信號作為字典元素的稀疏組合。
make_spd_matrix(n_dim, *[, random_state]) 生成隨機對稱的正定矩陣。
make_sparse_spd_matrix([dim, alpha, …]) 生成一個稀疏對稱定正矩陣。

7.5 加載其他數(shù)據(jù)集

7.5.1 樣本圖像

Scikit-learn還嵌入了一些示例 JPEG 圖像,由它們的作者在知識共享許可下發(fā)布。這些圖像可以用于測試算法和2維數(shù)據(jù)通道。

load_sample_images() 加載樣本圖像以進行圖像處理。
load_sample_image(image_name) 加載單個樣本圖像的numpy數(shù)組
警告
圖像的默認編碼基于uint8類型來存儲。如果將輸入轉(zhuǎn)換為浮點表示,機器學習算法通常最有效。另外,如果你打算使用matplotlib.pyplpt.imshow,不要忘記按以下示例中的步驟縮放到0-1的范圍。
例子:
使用K均值的顏色量化


7.5.2 svmlight / libsvm格式的數(shù)據(jù)集

scikit-learn包括用于以svmlight / libsvm格式加載數(shù)據(jù)集的實用函數(shù)。在這種格式中,每行代碼的形式是 <label> <feature-id>:<feature-value> <feature-id>:<feature-value> ...,這種格式特別適合于稀疏數(shù)據(jù)集。在本模塊中,X使用了scipy稀疏CSR矩陣,y使用了numpy數(shù)組。

你可以按如下方式加載數(shù)據(jù)集:

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

你也可以一次加載兩個(或更多)數(shù)據(jù)集:

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

在這種情況下,X_trainX_test保證具有相同數(shù)量的特征。另一種達到同樣效果的方法是固定特征的數(shù)量:

>>> X_test, y_test = load_svmlight_file(
...     "/path/to/test_dataset.txt", n_features=X_train.shape[1])
...    
相關鏈接:
svmlight / libsvm格式的公共數(shù)據(jù)集:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets
更快的API兼容實現(xiàn):https://github.com/mblondel/svmlight-loader

7.5.3 從openml.org存儲庫下載數(shù)據(jù)集

openml.org是機器學習數(shù)據(jù)和實驗的公共存儲庫,它允許每個人都可以上傳開放的數(shù)據(jù)集。

sklearn.datasets模塊下,可以使用 sklearn.datasets.fetch_openml函數(shù)從存儲庫下載數(shù)據(jù)集。

例如,要下載小鼠大腦中基因表達的數(shù)據(jù)集:

>>> from sklearn.datasets import fetch_openml
>>> mice = fetch_openml(name='miceprotein', version=4)

要完全指定數(shù)據(jù)集,你需要提供名稱和版本,盡管版本是可選的,請參見下面的“ 數(shù)據(jù)集版本”。數(shù)據(jù)集總共包含1080個示例,這些示例屬于8個不同的類別:

>>> mice.data.shape
(1080, 77)
>>> mice.target.shape
(1080,)
>>> np.unique(mice.target)
array(['c-CS-m', 'c-CS-s', 'c-SC-m', 'c-SC-s', 't-CS-m', 't-CS-s', 't-SC-m', 't-SC-s'], dtype=object)

您可以通過查看DESCRdetails屬性獲取有關數(shù)據(jù)集的更多信息:

>>> print(mice.DESCR) 
**Author**: Clara Higuera, Katheleen J. Gardiner, Krzysztof J. Cios
**Source**: [UCI](https://archive.ics.uci.edu/ml/datasets/Mice+Protein+Expression) - 2015
**Please cite**: Higuera C, Gardiner KJ, Cios KJ (2015) Self-Organizing
Feature Maps Identify Proteins Critical to Learning in a Mouse Model of Down
Syndrome. PLoS ONE 10(6): e0129126...

>>> mice.details 
{'id': '40966', 'name': 'MiceProtein', 'version': '4', 'format': 'ARFF',
'upload_date': '2017-11-08T16:00:15', 'licence': 'Public',
'url': 'https://www.openml.org/data/v1/download/17928620/MiceProtein.arff',
'file_id': '17928620', 'default_target_attribute': 'class',
'row_id_attribute': 'MouseID',
'ignore_attribute': ['Genotype', 'Treatment', 'Behavior'],
'tag': ['OpenML-CC18', 'study_135', 'study_98', 'study_99'],
'visibility': 'public', 'status': 'active',
'md5_checksum': '3c479a6885bfa0438971388283a1ce32'}

DESCR包含數(shù)據(jù)的任意文本說明,同時details 包含openml字典存儲的元數(shù)據(jù),如數(shù)據(jù)集id。有關更多詳細信息,請參見OpenML文檔。小鼠蛋白質(zhì)數(shù)據(jù)集的data_id是40609,你可以使用此id(或名稱)在openml網(wǎng)站上獲取有關該數(shù)據(jù)集的更多信息:

>>> mice.url
'https://www.openml.org/d/40966'

data_id還唯一識別OpenML數(shù)據(jù)集:

>>> mice.details 
{'id': '4550', 'name': 'MiceProtein', 'version': '1', 'format': 'ARFF',
'creator': ...,
'upload_date': '2016-02-17T14:32:49', 'licence': 'Public', 'url':
'https://www.openml.org/data/v1/download/1804243/MiceProtein.ARFF', 'file_id':
'1804243', 'default_target_attribute': 'class', 'citation': 'Higuera C,
Gardiner KJ, Cios KJ (2015) Self-Organizing Feature Maps Identify Proteins
Critical to Learning in a Mouse Model of Down Syndrome. PLoS ONE 10(6):
e0129126. [Web Link] journal.pone.0129126', 'tag': ['OpenML100', 'study_14',
'study_34'], 'visibility': 'public', 'status': 'active', 'md5_checksum':
'3c479a6885bfa0438971388283a1ce32'}

7.5.3.1 數(shù)據(jù)集版本

數(shù)據(jù)集由唯一指定data_id,但不一定由其名稱指定。具有相同名稱的數(shù)據(jù)集可以存在多個不同的“版本”,這些“版本”可以包含完全不同的數(shù)據(jù)集。如果發(fā)現(xiàn)某個數(shù)據(jù)集的特定版本包含重大問題,則可以將其停用。使用名稱指定數(shù)據(jù)集將返回仍處于可用狀態(tài)的數(shù)據(jù)集的最早版本。這意味著fetch_openml(name="miceprotein")如果較早的版本不可用,則可能在不同的時間返回不同的結(jié)果。你可以看到我們上面獲取的data_id為40966的數(shù)據(jù)集是“ miceprotein ”數(shù)據(jù)集的版本1:

>>> mice.details['version']  
'1'

實際上,該數(shù)據(jù)集只有一個版本。另一方面,鳶尾花數(shù)據(jù)集具有多個版本:

>>> iris = fetch_openml(name="iris")
>>> iris.details['version']  
'1'
>>> iris.details['id']  
'61'

>>> iris_61 = fetch_openml(data_id=61)
>>> iris_61.details['version']
'1'
>>> iris_61.details['id']
'61'

>>> iris_969 = fetch_openml(data_id=969)
>>> iris_969.details['version']
'3'
>>> iris_969.details['id']
'969'

用名稱“ iris”指定數(shù)據(jù)集會產(chǎn)生最早的版本,即版本1,它的data_id是61。為了確保始終獲得此確切的數(shù)據(jù)集,最可靠的方法是通過data_id來指定它。另一個data_id`為969的數(shù)據(jù)集是版本3(版本2已停用),并且包含數(shù)據(jù)的二進制版本:

>>> np.unique(iris_969.target)
array(['N', 'P'], dtype=object)

你還可以指定名稱和版本,這也可以唯一標識數(shù)據(jù)集:

>>> iris_version_3 = fetch_openml(name="iris", version=3)
>>> iris_version_3.details['version']
'3'
>>> iris_version_3.details['id']
'969'

參考文獻:

Vanschoren, van Rijn, Bischl and Torgo “OpenML: networked science in machine learning”, ACM SIGKDD Explorations Newsletter, 15(2), 49-60, 2014.

7.5.4 從外部數(shù)據(jù)集加載

scipy -learn適用于存儲為numpy數(shù)組或scipy稀疏矩陣的任何數(shù)字數(shù)據(jù)。其他可轉(zhuǎn)換為數(shù)字數(shù)組的類型(如panda DataFrame)也可以接受。

以下是將標準列數(shù)據(jù)加載為scikit-learn可用格式的一些推薦方法:

  • pandas.io 提供了從常見格式(包括CSV,Excel,JSON和SQL)讀取數(shù)據(jù)的工具。也可以從元組或字典列表構(gòu)造DataFrame。Pandas可以平穩(wěn)地處理異構(gòu)數(shù)據(jù),并提供了用于將其操縱和轉(zhuǎn)換為適合scikit-learn的數(shù)字數(shù)組的工具。
  • scipy.io 專門研究在科學計算環(huán)境中經(jīng)常使用的二進制格式,如.mat和.arff
  • numpy / routines.io 用于將列式數(shù)據(jù)標準加載到numpy數(shù)組中
  • scikit-learn datasets.load_svmlight_file用于svmlight或libSVM稀疏格式
  • scikit-learn datasets.load_files用于文本文件的目錄,其中每個目錄的名稱是每個類別的名稱,每個目錄內(nèi)的每個文件對應于該類別中的一個樣本

對于一些其他數(shù)據(jù),例如圖像,視頻和音頻,你可以參考:

存儲為字符串(在panda數(shù)據(jù)流中很常見)的分類(或命名)特征需要使用sklearn.preprocessing.OneHotEncodersklearn.preprocessing.OrdinalEncoder轉(zhuǎn)換為數(shù)字特征。請參閱預處理數(shù)據(jù)。

注意:如果您管理自己的數(shù)字數(shù)據(jù),建議使用優(yōu)化的文件格式,例如HDF5,以減少數(shù)據(jù)加載時間。諸如H5Py,PyTables和pandas之類的各種庫都提供了Python接口,用于以該格式的數(shù)據(jù)的讀取和寫入。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號