Pythonから簡単に使用できるデータセットまとめ

まとめられているのがリンク切れだったり微妙に使いにくかったのでまとめ
回帰用データや画像データなど20種類程度+α



https://github.com/ninomae-makoto/python-snippets/blob/master/datasets.ipynb
に簡単なサンプルとともに上げている。


ライブラリ読み込み



事前に必要なライブラリを読み込み。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np


アヤメの品種データ(Iris-plants-dataset)



がく片の長さ、幅、花びらの長さ、幅の4つの特徴量から3種類に分類する。

from sklearn.datasets import load_iris
src = load_iris()
print(src.DESCR)
df = pd.DataFrame(src.data, columns=src.feature_names)
df.describe()


ボストン市の住宅価格データ(Boston-house-prices-dataset)



住宅情報から価格を予想する。

from sklearn.datasets import load_boston
src = load_boston()
print(src.DESCR)
df = pd.DataFrame(src.data, columns=src.feature_names)
df['Price'] = src.target
df.describe()


糖尿病患者の診療データ(Diabetes-dataset)



データ正規化済み。

from sklearn.datasets import load_diabetes
src = load_diabetes()
print(src.DESCR)
df = pd.DataFrame(src.data, columns=src.feature_names)
pd.options.display.float_format='{:.8f}'.format
df.describe()


数字の手書き文字データ



1791枚 8x8 グレースケールの画像。
手書き数字の分類ができる。

from sklearn.datasets import load_digits
src = load_digits(n_class=10)
df = pd.DataFrame(src.data)

print(src.DESCR)
# 1791枚 8x8 グレースケール
print(src.images.shape)

num = 80
plt.figure(figsize=(10,num/2))
plt.subplots_adjust(hspace=1.4)
for i in range(num):
    plt.subplot(num/2, 10, i + 1)
    plt.imshow(src.images[i], cmap=plt.cm.gray_r, interpolation='nearest')
    plt.axis('off')
    plt.title('%i' % src.target[i])
plt.show()


生理学的特徴と運動能力の関係についてのデータ(Linnerrud-dataset)



from sklearn.datasets import load_linnerud
src = load_linnerud()
print(src.DESCR)
df = pd.DataFrame(src.data, columns=src.feature_names)
df2 = pd.DataFrame(src.target, columns=src.target_names)
df = pd.concat([df, df2], axis=1)
df.describe()


ワインの品質データ(Wine-recognition-dataset)



from sklearn.datasets import load_wine
src = load_wine()
print(src.DESCR)
df = pd.DataFrame(src.data, columns=src.feature_names)
df['Class'] = src.target
df.describe()


乳がんデータ(Breast-cancer-wisconsin-[diagnostic]-dataset)



from sklearn.datasets import load_breast_cancer
src = load_breast_cancer()
print(src.DESCR)
df = pd.DataFrame(src.data, columns=src.feature_names)
# 0:悪性 1:良性
df['Target'] = src.target
df.describe()


顔の表情データ



400枚 64x64 グレースケール の顔画像。

from sklearn.datasets import fetch_olivetti_faces
src = fetch_olivetti_faces()

print(src.DESCR)
# 400枚 64x64 グレースケール
print(src.images.shape)

num = 10
plt.figure(figsize=(20,num*2))
plt.subplots_adjust(hspace=0.4)
for i in range(num):
    plt.subplot(num/2, 5, i + 1)
    plt.imshow(src.images[i], cmap=plt.cm.gray, interpolation='nearest')
    plt.axis('off')
    plt.title('%i' % src.target[i])
plt.show()
src.images.shape


トピック別ニュース記事



14MB.

from sklearn.datasets import fetch_20newsgroups
src = fetch_20newsgroups()

print(src.DESCR)
print('-----------------------------------------------------')

for i in range(3):
    print('*** target_name = ' + src.target_names[src.target[i]] + ' ***')
    print(src.data[i])
    print('-----------------------------------------------------')



有名人の顔写真



300MB~
13233枚 62x47 グレースケール画像。

from sklearn.datasets import fetch_lfw_people
src = fetch_lfw_people()

print(src.DESCR)
# 400枚 64x64 グレースケール
print(src.images.shape)

num = 10
plt.figure(figsize=(20,num*2))
plt.subplots_adjust(hspace=0.4)
for i in range(num):
    plt.subplot(num/2, 5, i + 1)
    plt.imshow(src.images[i], cmap=plt.cm.gray, interpolation='nearest')
    plt.axis('off')
    plt.title('%i' % src.target[i])
plt.show()
src.images.shape




森林の木の種類



14.3MB.

from sklearn.datasets import fetch_covtype
src = fetch_covtype()
print(src.DESCR)
df = pd.DataFrame(src.data)
df['Target'] = src.target
df.describe()


ネットワークの侵入検知



150MB.

from sklearn.datasets import fetch_kddcup99
src = fetch_kddcup99()
print(src.DESCR)
df = pd.DataFrame(src.data)
df['Target'] = src.target
df.describe()


カリフォルニアの住宅価格



from sklearn.datasets import fetch_california_housing
src = fetch_california_housing()
print(src.DESCR)
df = pd.DataFrame(src.data, columns=src.feature_names)
df['Price'] = src.target
df.describe()



CIFAR10-画像分類



10種類にラベリングされたカラー画像。

from keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

fig = plt.figure(figsize=(9, 15))
fig.subplots_adjust(left=0, right=1, bottom=0, top=0.5, hspace=0.05, wspace=0.05)

seed = np.random.randint(100)
for i in range(9):
    ax = fig.add_subplot(1, 9, i + 1, xticks=[], yticks=[])
    ax.imshow(x_train[i+seed], cmap='gray')


CIFAR100-画像分類



100種類にラベリングされた画像。
161MB.

from keras.datasets import cifar100

(x_train, y_train), (x_test, y_test) = cifar100.load_data(label_mode='fine')

fig = plt.figure(figsize=(9, 15))
fig.subplots_adjust(left=0, right=1, bottom=0, top=0.5, hspace=0.05, wspace=0.05)

seed = np.random.randint(100)
for i in range(9):
    ax = fig.add_subplot(1, 9, i + 1, xticks=[], yticks=[])
    ax.imshow(x_train[i+seed], cmap='gray')


IMDB映画レビュー感情分類



感情 (肯定/否定) のラベル付けをされた,25,000のIMDB映画レビューのデータセット。

from keras.datasets import imdb

(x_train, y_train), (x_test, y_test) = imdb.load_data(path="imdb.npz",
                                                      num_words=None,
                                                      skip_top=0,
                                                      maxlen=None,
                                                      seed=113,
                                                      start_char=1,
                                                      oov_char=2,
                                                      index_from=3)

word_index = imdb.get_word_index()
reverse_word_index = dict([(value, key) for (key, value) in word_index.items()])
review = ' '.join([reverse_word_index.get(i - 3, '?') for i in x_train[0]])

review


MNIST-手書き数字データベース



フォーマットは違うがおそらくsklearnと同じもの。

from keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

fig = plt.figure(figsize=(9, 9))
fig.subplots_adjust(left=0, right=1, bottom=0, top=1.5, hspace=0.05, wspace=0.05)
index = 0 # 100*n
for i in range(0, 100):
    ax = fig.add_subplot(10, 10, i + 1, xticks=[], yticks=[])
    ax.imshow(x_train[i+index], cmap='gray')
    plt.title(str(i+index)+", "+str(y_train[i+index]));


Fashion-MNIST-ファッション記事データベース



from keras.datasets import fashion_mnist

(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()

fig = plt.figure(figsize=(9, 9))
fig.subplots_adjust(left=0, right=1, bottom=0, top=1.5, hspace=0.05, wspace=0.05)
index = 0 # 100*n
for i in range(0, 100):
    ax = fig.add_subplot(10, 10, i + 1, xticks=[], yticks=[])
    ax.imshow(x_train[i+index], cmap='gray')
    plt.title(str(i+index)+", "+str(y_train[i+index]));


ボストンの住宅価格回帰データセット



from keras.datasets import boston_housing

(x_train, y_train), (x_test, y_test) = boston_housing.load_data()

x_train
df = pd.DataFrame(x_train, columns=['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT'])
df['MEDV'] = y_train
df.describe()




その他



kaggleデータセットが良さそう。
https://keras.io/ja/datasets/





参考



https://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets
https://yolo.love/scikit-learn/datasets/


2019年9月23日月曜日