from sklearn import datasets
iris = datasets.load_iris()
X = iris.data.astype(np.float32)
Y = iris.target
N = Y.size
Y2 = np.zeros(3 * N).reshape(N,3).astype(np.float32)
for i in range(N):
Y2[i,Y[i]] = 1.0
5.2. Toy datasets
scikit-learn comes with a few small standard datasets that do not require to download any file from some external website.
load_boston
([return_X_y])Load and return the boston house-prices dataset (regression). load_iris
([return_X_y])Load and return the iris dataset (classification). load_diabetes
([return_X_y])Load and return the diabetes dataset (regression). load_digits
([n_class, return_X_y])Load and return the digits dataset (classification). load_linnerud
([return_X_y])Load and return the linnerud dataset (multivariate regression). These datasets are useful to quickly illustrate the behavior of the various algorithms implemented in the scikit. They are however often too small to be representative of real world machine learning tasks.
この中のload_irisが呼び出されていたのだ。
これを他のものに変えて、元のプログラムをちょっとだけ変更して、動くかどうか確かめよう。
上の表のloadメソッドをクリックすると、それぞれの説明が現れる。説明から、iris to digits がclassificationのためのデータらしいので、とりあえず同じタイプのdigitsを使うことにしよう。
とりあえず、load_digitsに載っているサンプルでデータのロード表示をしてみよう
from sklearn.datasets import load_digits
>>> digits = load_digits()
>>> digits.data.shape
(1797, 64)
>>> import matplotlib.pyplot as plt
>>> plt.gray()
>>> plt.matshow(digits.images[0])
<matplotlib.image.axesimage object="" at="" 0x7f5c88085a90>
>>> plt.show()
>>> X = digits.data.astype(np.float32)
>>> X[0].reshape(8,8)
array([[ 0., 0., 5., 13., 9., 1., 0., 0.],
[ 0., 0., 13., 15., 10., 15., 5., 0.],
[ 0., 3., 15., 2., 0., 11., 8., 0.],
[ 0., 4., 12., 0., 0., 8., 8., 0.],
[ 0., 5., 8., 0., 0., 9., 8., 0.],
[ 0., 4., 11., 0., 1., 12., 7., 0.],
[ 0., 2., 14., 5., 10., 12., 0., 0.],
[ 0., 0., 6., 13., 10., 0., 0., 0.]], dtype=float32)
>
これから、digitsのデータは1797個の画像データであることが分かる。