機械学習で使うデータセット
機械学習のトレーニング、CVセット、テストセットで利用できそうなデータセットをまとめる。
※随時更新すると思う。
Bostonデータセット/Housingデータセット
機械学習ライブラリ『scikit-learn』は、線形回帰などで使用するデータセット『Bostonデータセット』を持っている。
ボストンの物件の価格にその物件の人口統計に関する情報(以下)が付随したもの。
- CRIM・・・犯罪発生率(人口単位)
- ZN・・・25,000平方フィート以上の住宅区画の割合
- INDUS・・・非小売業の土地面積の割合(人口単位)
- CHAS・・・チャールズ川沿いかどうか(1:Yes、0:No)
- NOX・・・窒素酸化物の濃度(pphm単位)
- RM・・・1戸あたりの平均部屋数
- AGE・・・1940年よりも前に建てられた家屋の割合
- DIS・・・ボストンの主な5つの雇用圏までの重み付きの郷里
- RAD・・・幹線道路へのアクセス指数
- TAX・・・10,000ドルあたりの所得税率
- PTRATIO・・・教師あたりの生徒の数(人口単位)
- B・・・アフリカ系アメリカ人居住者の割合(人口単位)
- LSTAT・・・低所得者の割合
データ間で相関があることが期待できるので、線形回帰などで使用できそう。
ロードと簡単なデータの表示方法は以下。
import numpy as np import pandas as pd from sklearn import datasets from matplotlib import pyplot as plt import seaborn as sns boston = datasets.load_boston() type(boston) # sklearn.datasets.base.Bunch type(boston.DESCR) # データセットの説明 # str type(boston.data) # 物件に関する様々なデータ # numpy.ndarray type(boston.feature_names) # 物件データのカラム名 # numpy.ndarray type(boston.target) # 物件の値段 # numpy.ndarray data = np.c_[boston.data, boston.target] col = np.append(boston.feature_names, 'MEDV') df = pd.DataFrame(data, columns = col) df.head()
NumPyのN次元配列(N-d array)型でデータを持っている。
上記では、boston.targetをMEDV(住宅価格の中央地(単位 1,000ドル))としてDataFrameに追加して表示している。
seabornでの表示は以下。
(seabornはmatplotlibを拡張した統計グラフ描画ライブラリ)
sns.set(style='whitegrid', context='notebook') cols = ['LSTAT', 'INDUS', 'NOX', 'RM', 'MEDV'] sns.pairplot(df[cols], size=2.5) plt.show() # 対角成分には各変数のヒストグラムが # 非対角成分には縦軸と横軸にそれぞれの変数を取った散布図がプロットされる
部屋数と値段の散布図表示は以下。
rooms = df['RM'] house_prices = df['MEDV'] plt.scatter(rooms, house_prices, color='b') plt.xlabel('RM') plt.ylabel('MEDV') plt.autoscale() plt.grid() plt.show()
Irisデータセット
機械学習ライブラリ『scikit-learn』は、分類などで使用するデータセット『Irisデータセット』を持っている。
Iris(植物のアヤメ)に関するデータセットで、「萼片(がくへん)の長さ」「萼片の幅」「花びらの長さ」「花びらの幅」に関する特長量と、アヤメの種類(0:setosa、1:versicolor、2:virginica)の値を持つ。
データが持つ特長量から花の種類が決定しそうなので、分類などで使用できそう。
ロードの方法等は以下。
import numpy as np from sklearn import datasets from matplotlib import pyplot as plt %pylab inline --no-import-all iris = datasets.load_iris() type(iris) # sklearn.datasets.base.Bunch type(iris.DESCR) # データセットの説明 # str type(iris.data) # アヤメに関する特長量 # numpy.ndarray type(iris.feature_names) # 特長良のカラム名 # list type(iris.target) # アヤメの種類(値) # numpy.ndarray type(iris.target_names) # アヤメの種類(名) # numpy.ndarray
下記のコードで散布図に描画できる。
features = iris.data target = iris.target target_names = iris.target_names labels = target_names[target] setosa_petal_length = features[labels == 'setosa', 2] setosa_petal_width = features[labels == 'setosa', 3] setosa = np.c_[setosa_petal_length, setosa_petal_width] versicolor_petal_length = features[labels == 'versicolor', 2] versicolor_petal_width = features[labels == 'versicolor', 3] versicolor = np.c_[versicolor_petal_length, versicolor_petal_width] virginica_petal_length = features[labels == 'virginica', 2] virginica_petal_width = features[labels == 'virginica', 3] virginica = np.c_[virginica_petal_length, virginica_petal_width] plt.scatter(setosa[:, 0], setosa[:, 1], color='red') plt.scatter(versicolor[:, 0], versicolor[:, 1], color='blue') plt.scatter(virginica[:, 0], virginica[:, 1], color='green') plt.show()
MNIST(エムニスト)
MNISTは、手書きの数字画像セットで、計70,000枚の画像が含まれており、そのうち60,000枚はトレーニングセットで10,000枚はテストセット。サイズはそれぞれ 28 x 28 ピクセル。各ピクセル値は 0 (白) ~ 255 (黒) の値。
AWS のパブリックデータセット
AWSでは無料でパブリックデータセットを提供している。
CSVやExcelフォーマットでの提供が多い。