回帰用データや画像データなど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/