學會機器學習的第一步,你知道嗎?

初學者學習機器學習的時候,經常會找不到練習的數據,實際上scikit-learn內置了很多可以用於機器學習的數據,用兩行代碼就可以使用這些數據。

一、自帶數據集

自帶的小的數據集為:sklearn.datasets.load_<name>
/<name>

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 體能訓練 多分類 20

怎麼用:

數據集的信息關鍵字:

  • DESCR:

    數據集的描述信息

  • data:

    內部數據(即:X)

  • feature_names:

    數據字段名

  • target:

    數據標籤(即:y)

  • target_names:

    標籤字段名(迴歸數據集無此項)

使用方法(以load_iris為例)

數據介紹:

  • 一般用於做分類測試

  • 有150個數據集,共分為3類,每類50個樣本。每個樣本有4個特徵。

  • 每條記錄都有 4 項特徵:包含4個特徵(Sepal.Length(花萼長度)、Sepal.Width(花萼寬度)、Petal.Length(花瓣長度)、Petal.Width(花瓣寬度)),特徵值都為正浮點數,單位為釐米。

  • 可以通過這4個特徵預測鳶尾花卉屬於(iris-setosa(山鳶尾), iris-versicolour(雜色鳶尾), iris-virginica(維吉尼亞鳶尾))中的哪一品種。

第一步:

導入數據

from sklearn.datasets import load_iris
iris = load_iris()

第二步:

定義X和y

X, y = iris.data, iris.target

此外,可以看下數據的維度:

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

劃分訓練集和測試集:

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)

這樣就把訓練集和測試集按照3比1劃分了,接下來就可以用機器學習算法進行訓練和測試了。

小技巧:將數據轉換為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()

輸出結果一致:

學會機器學習的第一步,你知道嗎?

二、可在線下載的數據集(需要下載)

下載的數據集為:sklearn.datasets.fetch_<name>

這類數據需要在線下載,有點慢

fetch_20newsgroups

用於文本分類、文本挖據和信息檢索研究的國際標準數據集之一。數據集收集了大約20,000左右的新聞組文檔,均勻分為20個不同主題的新聞組集合。返回一個可以被文本特徵提取器

fetch_20newsgroups_vectorized

這是上面這個文本數據的向量化後的數據,返回一個已提取特徵的文本序列,即不需要使用特徵提取器

fetch_california_housing

加利福尼亞的房價數據,總計20640個樣本,每個樣本8個屬性表示,以及房價作為target,所有屬性值均為number,詳情可調用fetch_california_housing()['DESCR']瞭解每個屬性的具體含義;

fetch_covtype

森林植被類型,總計581012個樣本,每個樣本由54個維度表示(12個屬性,其中2個分別是onehot4維和onehot40維),以及target表示植被類型1-7,所有屬性值均為number,詳情可調用fetch_covtype()['DESCR']瞭解每個屬性的具體含義

fetch_kddcup99

KDD競賽在1999年舉行時採用的數據集,KDD99數據集仍然是網絡入侵檢測領域的事實Benckmark,為基於計算智能的網絡入侵檢測研究奠定基礎,包含41項特徵

fetch_lfw_pairs

該任務稱為人臉驗證:給定一對兩張圖片,二分類器必須預測這兩個圖片是否來自同一個人。

fetch_lfw_people

打好標籤的人臉數據集

fetch_mldata

從 mldata.org 中下載數據集

fetch_olivetti_faces

Olivetti 臉部圖片數據集

fetch_rcv1

路透社新聞語聊數據集

fetch_species_distributions

物種分佈數據集

使用方法與自帶數據集一致,只是多了下載過程(示例:fetch_20newsgroups)

from sklearn.datasets import fetch_20newsgroups
news = fetch_20newsgroups(subset='all') #本次使用的數據需要到互聯網上下載


from sklearn.model_selection import train_test_split
#對數據訓練集和測試件進行劃分
X_train, X_test, y_train, y_test = train_test_split(
news.data, news.target, test_size=0.25, random_state=33)

三、生成數據集

可以用來分類任務,可以用來回歸任務,可以用來聚類任務,用於流形學習的,用於因子分解任務的,用於分類任務和聚類任務的:這些函數產生樣本特徵向量矩陣以及對應的類別標籤集合

  • make_blobs:多類單標籤數據集,為每個類分配一個或多個正態分佈的點集

  • make_classification:多類單標籤數據集,為每個類分配一個或多個正態分佈的點集,提供了為數據添加噪聲的方式,包括維度相關性,無效特徵以及冗餘特徵等

  • make_gaussian-quantiles:將一個單高斯分佈的點集劃分為兩個數量均等的點集,作為兩類

  • make_hastie-10-2:產生一個相似的二元分類數據集,有10個維度

  • make_circle和make_moons:產生二維二元分類數據集來測試某些算法的性能,可以為數據集添加噪聲,可以為二元分類器產生一些球形判決界面的數據

舉例:

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


學會機器學習的第一步,你知道嗎?

四、其它數據集

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

總結

本文為機器學習初學者提供了使用scikit-learn內置數據的方法,用兩行代碼就可以使用這些數據,可以進行大部分的機器學習實驗了。

參考

https://scikit-learn.org/stable/datasets/index.html

想要更多更專業有趣的AI知識請關注【七月在線實驗室】


分享到:


相關文章: