科学の箱

科学・IT・登山の話題

機械学習

手書き数字データについて次元縮約および教師ありモデルの構築

投稿日:

前回手書き数字データについてイメージで確認した結果、人の目で確認する分には区別ができる。では機械学習ではどのように実施していくのか。

今回は以下の内容について説明する。

  • 多様体学習による次元縮約
  • ナイーブベイズによる分類

多様体学習による次元縮約

さてこのイメージデータは64次元であり、取り扱うには不便である。そこで次元縮約により2次元に落とす。次元縮約といえばPCAであるが、残念ながらPCAの前提はデータが線形であること。イメージのデータ、つまりバイナリであることから、線形を仮定するには無理がある。非線形の次元縮約に利用できるのが多様体の学習(Manifold Learning)である。

2.2. Manifold learning — scikit-learn 0.21.3 documentation

多様体学習のアルゴリズムとしてはいくつかあるが今回はIsomapを利用する。

 

from sklearn.datasets import load_digits
digits = load_digits()

from sklearn.manifold import Isomap
iso = Isomap(n_components=2)
# 次元縮約 n_components=2を指定にする。
iso.fit(digits.data)
# 次元縮約
data_projected = iso.transform(digits.data)
# 縮約されたデータ
data_projected.shape
# (1797,2)

Isomapの結果、各イメージデータは2次元に縮約されていることがわかる。

次のこのデータを2次元でプロットし、データが区別されているかを確認する。Isomapの結果から取得した2次元データをそれぞれX, Y軸でプロットする。数字データにより色分けをする。

import matplotlib.pyplot as plt
import matplotlib.cm as cm
%matplotlib inline
plt.style.use('seaborn-darkgrid')
plt.scatter(data_projected[:, 0], data_projected[:, 1], c=digits.target,alpha=1, cmap = cm.Accent)
plt.colorbar(ticks=range(10))

 

数字の分類

手書き数字を分類する。正解データが存在しているので教師ありモデルのナイーブベイズを利用する。

データを訓練用および検証用に分割する。

from sklearn.model_selection import train_test_split
X = digits.data
y = digits.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

 

次に、ナイーブベイズモデルを構築する

from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X_train, y_train)
y_model = model.predict(X_test)

 

最後にモデルを検証する。

from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_model)
# 0.8333333333333334

結果として最も単純な分類アルゴリズムでありナイーブベイズであっても83%という高い制度であることが分かった。

メタ情報

inarticle



メタ情報

inarticle



-機械学習
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

仕事で始める機械学習 – 2.機械学習で何ができるか – 分類 – SVM

SVMの決定境界 SVMの決定境界はSVMで利用するカーネルにより異なる。 線形カーネル→線形 RBFカーネル→非線形 損失関数 損失関数としてはヒンジ関数を利用するが、パーセプトロンとは異なり、横軸 …

no image

ジニ係数(再掲)

ジニ係数について修正した。とりあえずコード。 revenue<-read.csv(file=”data.csv”, head=TRUE) revenue$TotalRevenues_n < …

no image

仕事で始める機械学習 – 2.機械学習で何ができるか – 分類 – ロジスティック回帰

ロジスティック回帰 確率を得るために パーセプトロンの判別式により確率をとることはできない。パーセプトロンのヒンジ損失は正負のみを判断し、間違っている場合だけパラメータの更新をする。つまりぎりぎりで正 …

no image

ラテン方格

ラテン方格は1~nまでの数字についてn x nの正方行列に一回だけ現れるように並べたものである。ラテン方格を利用して実験の割り付けを行う実験計画法がラテン方格法である。 ラテン方格法と似た実験計画法に …

no image

Mahout in Action/chap2

2.1 レコメンドには2種類ある。 collaborative filtering contents based filtering collaborative filteringではコンテンツの内容 …

2019年10月
« 9月   11月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

side bar top



アーカイブ

カテゴリー