【機器學(xué)習(xí)基礎(chǔ)】獲取機器學(xué)習(xí)和深度學(xué)習(xí)的練習(xí)數(shù)據(jù)
0.導(dǎo)語
初學(xué)者學(xué)習(xí)機器學(xué)習(xí)和深度學(xué)習(xí)的時候,經(jīng)常會找不到練習(xí)的數(shù)據(jù),本文提供了獲取數(shù)據(jù)的一些方法。
一、scikit-learn自帶數(shù)據(jù)集
Scikit-learn內(nèi)置了很多可以用于機器學(xué)習(xí)的數(shù)據(jù),可以用兩行代碼就可以使用這些數(shù)據(jù)。
一、自帶數(shù)據(jù)集
自帶的小的數(shù)據(jù)集為:sklearn.datasets.load_
| load_boston | Boston房屋價格 | 回歸 | 506*13 |
| fetch_california_housing | 加州住房 | 回歸 | 20640*9 |
| load_diabetes | 糖尿病 | 回歸 | 442*10 |
| load_digits | 手寫字 | 分類 | 1797*64 |
| load_breast_cancer | 乳腺癌 | 分類、聚類 | (357+212)*30 |
| load_iris | 鳶尾花 | 分類、聚類 | (50*3)*4 |
| load_wine | 葡萄酒 | 分類 | (59+71+48)*13 |
| load_linnerud | 體能訓(xùn)練 | 多分類 | 20 |
怎么用:
數(shù)據(jù)集的信息關(guān)鍵字:
DESCR:
數(shù)據(jù)集的描述信息
data:
內(nèi)部數(shù)據(jù)(即:X)
feature_names:
數(shù)據(jù)字段名
target:
數(shù)據(jù)標簽(即:y)
target_names:
標簽字段名(回歸數(shù)據(jù)集無此項)?
使用方法(以load_iris為例)
數(shù)據(jù)介紹:
一般用于做分類測試
有150個數(shù)據(jù)集,共分為3類,每類50個樣本。每個樣本有4個特征。
每條記錄都有 4 項特征:包含4個特征(Sepal.Length(花萼長度)、Sepal.Width(花萼寬度)、Petal.Length(花瓣長度)、Petal.Width(花瓣寬度)),特征值都為正浮點數(shù),單位為厘米。
可以通過這4個特征預(yù)測鳶尾花卉屬于(iris-setosa(山鳶尾), iris-versicolour(雜色鳶尾), iris-virginica(維吉尼亞鳶尾))中的哪一品種。
第一步:
導(dǎo)入數(shù)據(jù)
from?sklearn.datasets?import?load_iris
iris = load_iris()
第二步:
定義X和y
X, y = iris.data, iris.target
此外,可以看下數(shù)據(jù)的維度:
X.shape,y.shape輸出為:
((150, 4), (150,))查看特征名:iris.feature_names輸出為:['sepal length (cm)',
'sepal width (cm)',
'petal length (cm)',
'petal width (cm)']查看標簽名:
iris.target_names輸出為:
array(['setosa', 'versicolor', 'virginica'], dtype='
劃分訓(xùn)練集和測試集:
from?sklearn.model_selection?import?train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
這樣就把訓(xùn)練集和測試集按照3比1劃分了,接下來就可以用機器學(xué)習(xí)算法進行訓(xùn)練和測試了。
小技巧:將數(shù)據(jù)轉(zhuǎn)換為Dataframe格式(兩種方法都可以):
import?pandas?as?pd
df_X = pd.DataFrame(iris.data, columns=iris.feature_names)
#這個是X
df_y = pd.DataFrame(iris.target, columns=["target"])
#這個是y
df=pd.concat([df_X,df2],axis=1)#橫向合并
df.head()
或者:
import?numpy?as?np
import?pandas?as?pd
col_names = iris['feature_names'] + ['target']
df = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns=col_names)
df.head()
輸出結(jié)果一致:
二、可在線下載的數(shù)據(jù)集(需要下載)
下載的數(shù)據(jù)集為:sklearn.datasets.fetch_
這類數(shù)據(jù)需要在線下載,有點慢
fetch_20newsgroups
用于文本分類、文本挖據(jù)和信息檢索研究的國際標準數(shù)據(jù)集之一。數(shù)據(jù)集收集了大約20,000左右的新聞組文檔,均勻分為20個不同主題的新聞組集合。返回一個可以被文本特征提取器
fetch_20newsgroups_vectorized
這是上面這個文本數(shù)據(jù)的向量化后的數(shù)據(jù),返回一個已提取特征的文本序列,即不需要使用特征提取器
fetch_california_housing
加利福尼亞的房價數(shù)據(jù),總計20640個樣本,每個樣本8個屬性表示,以及房價作為target,所有屬性值均為number,詳情可調(diào)用fetch_california_housing()['DESCR']了解每個屬性的具體含義;
fetch_covtype
森林植被類型,總計581012個樣本,每個樣本由54個維度表示(12個屬性,其中2個分別是onehot4維和onehot40維),以及target表示植被類型1-7,所有屬性值均為number,詳情可調(diào)用fetch_covtype()['DESCR']了解每個屬性的具體含義
fetch_kddcup99
KDD競賽在1999年舉行時采用的數(shù)據(jù)集,KDD99數(shù)據(jù)集仍然是網(wǎng)絡(luò)入侵檢測領(lǐng)域的事實Benckmark,為基于計算智能的網(wǎng)絡(luò)入侵檢測研究奠定基礎(chǔ),包含41項特征
fetch_lfw_pairs
該任務(wù)稱為人臉驗證:給定一對兩張圖片,二分類器必須預(yù)測這兩個圖片是否來自同一個人。
fetch_lfw_people
打好標簽的人臉數(shù)據(jù)集
fetch_mldata
從?mldata.org?中下載數(shù)據(jù)集
fetch_olivetti_faces
Olivetti?臉部圖片數(shù)據(jù)集
fetch_rcv1
路透社新聞?wù)Z聊數(shù)據(jù)集
fetch_species_distributions
物種分布數(shù)據(jù)集
使用方法與自帶數(shù)據(jù)集一致,只是多了下載過程(示例:fetch_20newsgroups)
from?sklearn.datasets?import?fetch_20newsgroups
news = fetch_20newsgroups(subset='all')?#本次使用的數(shù)據(jù)需要到互聯(lián)網(wǎng)上下載
from?sklearn.model_selection?import?train_test_split
#對數(shù)據(jù)訓(xùn)練集和測試件進行劃分
X_train, X_test, y_train, y_test = train_test_split(
????news.data, news.target, test_size=0.25, random_state=33)
三、生成數(shù)據(jù)集
可以用來分類任務(wù),可以用來回歸任務(wù),可以用來聚類任務(wù),用于流形學(xué)習(xí)的,用于因子分解任務(wù)的,用于分類任務(wù)和聚類任務(wù)的:這些函數(shù)產(chǎn)生樣本特征向量矩陣以及對應(yīng)的類別標簽集合
make_blobs:多類單標簽數(shù)據(jù)集,為每個類分配一個或多個正態(tài)分布的點集
make_classification:多類單標簽數(shù)據(jù)集,為每個類分配一個或多個正態(tài)分布的點集,提供了為數(shù)據(jù)添加噪聲的方式,包括維度相關(guān)性,無效特征以及冗余特征等
make_gaussian-quantiles:將一個單高斯分布的點集劃分為兩個數(shù)量均等的點集,作為兩類
make_hastie-10-2:產(chǎn)生一個相似的二元分類數(shù)據(jù)集,有10個維度
make_circle和make_moons:產(chǎn)生二維二元分類數(shù)據(jù)集來測試某些算法的性能,可以為數(shù)據(jù)集添加噪聲,可以為二元分類器產(chǎn)生一些球形判決界面的數(shù)據(jù)
舉例:
import?matplotlib.pyplot?as?plt
from?sklearn.datasets?import?make_moons
X, y = make_moons(n_samples=100, noise=0.15, random_state=42)
plt.title('make_moons function example')
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()
深度學(xué)習(xí)數(shù)據(jù)集
MS-COCO
COCO是一個可用于object detection, segmentation and caption的大型數(shù)據(jù)集。
http://cocodataset.org/#home
ImageNet
圖像總數(shù)約1,500,000; 每個都有多個邊界框和相應(yīng)的類標簽。
大小:約150GB
http://www.image-net.org
Yelp Reviews
它由數(shù)百萬用戶評論、商業(yè)類型和來自多個大型城市的超過20萬張照片組成。這在全球都是一個非常常用的NLP挑戰(zhàn)級數(shù)據(jù)集。
大小:2.66 GB JSON,2.9 GB SQL and 7.5 GB Photos(全部已壓縮)
數(shù)量:5,200,000條評論,174,000條商業(yè)類型,20萬張圖片和11個大型城市
https://www.yelp.com/dataset
……待補充
其它數(shù)據(jù)集
kaggle:
https://www.kaggle.com
天池:
https://tianchi.aliyun.com/dataset
搜狗實驗室:
http://www.sogou.com/labs/resource/list_pingce.php
DC競賽:
https://www.pkbigdata.com/common/cmptIndex.html
DF競賽:
https://www.datafountain.cn/datasets
Google數(shù)據(jù)集
[需要科學(xué)上網(wǎng)]
https://toolbox.google.com/datasetsearch
科賽網(wǎng)
https://www.kesci.com/home/dataset
微軟數(shù)據(jù)集
https://msropendata.com/
……待補充
總結(jié)
本文為機器學(xué)習(xí)初學(xué)者提供了使用scikit-learn內(nèi)置數(shù)據(jù)的方法,用兩行代碼就可以使用這些數(shù)據(jù),可以進行大部分的機器學(xué)習(xí)實驗了。
參考
https://scikit-learn.org/stable/datasets/index.html
https://blog.csdn.net/fendouaini/article/details/79871922
往期精彩回顧


