科学の箱

科学・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

irisデータを読み込んでseabornでいろいろ表示をしてみる。

data可視化ライブラリのseabornではすぐに機械学習を始められるように質が良いデータが用意されている。その中でも最も有名であるirisについてpairplotを使って可視化してみる。 ここでは以 …

no image

多変量解析

多変量解析の分類 回帰分析 ロジスティック分析 判別分析 主成分分析 因子分析 共分散 クラスタリング 共分散 Sxy = Σ(Xi – X~)(Yi – Y~) / n 共分 …

no image

Core Concept in Data Analysis – Week 4

Contingency Table : 分割表 Nominal : 名目 (カテゴリカル) Taxon : 分類 Marginal : 周辺 Conditional Probability : 条件付 …

no image

条件付きでレコードを取得する

データフレームでは条件付きでレコードを取得できる。 以下のようなフォーマットのデータフレームを考える id name height vector1 <- c(1, 2, 3, 4, 5) vec …

no image

Core Concept in Data Analysis – Week 5

予測の分析 関連性を分析する モデルを明らかにする。 パラメータを推測する。 テストする。 予測が将来になると難しい→環境が変わってしまうため。 correlation structure (質的尺度 …

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

side bar top



アーカイブ

カテゴリー