044_教師なし学習を行ってデータをみてみよう

前回までの学習で、いまいちデータを理解できていない人も少なくないとおもいます。下のしましまの棒を学習するときのそれぞれの違いを可視化してみましょう!

目次

次元を減らして3Dグラフで確認!

今回の学習データの説明変数は64個、つまり、64次元でした。
なので「64個の説明変数を持つ学習データ」を3個の説明変数に減らして3D散布図で表示してみましょう!

コード

#1 0〜9の色名を用意
#2 yの値を色名に変更&colorsリストを作成
#3 主成分分析で64個の特徴量を3個へと次元を削減
#4 3個へ減らしたデータでデータフレームを作る
#5 3D散布図の準備
#6 3個の特徴量をX,Y,Zにして、各点の数字に対応する色で散布図を表示
#7 数字がどの色かの見本を表示


from sklearn.datasets import load_digits
from sklearn import decomposition
from mpl_toolkits.mplot3d import Axes3D

digits = load_digits()
X = digits.data
y = digits.target

numbercolor = ["RED","BLUE","YELLOW","GREEN","PURPLE",   #1
               "SKYBLUE","ORANGE","BLACK","GRAY","PINK"]
colors = []   #2
for i in y:
	colors.append(numbercolor[i])

pca = decomposition.PCA(n_components=3)   #3
features3 = pca.fit_transform(X)

df = pd.DataFrame(features3)    #4

fig = plt.figure(figsize=(12, 12))    #5
ax = fig.add_subplot(projection='3d')
ax.scatter(df[0], df[1], df[2], color=colors)   #6

ty = 0    #7
for col in numbercolor:
    ax.text(50, 30, 30-ty*5, str(ty), size=20, color=col)
    ty+=1
plt.show()

参考資料:Python3年生機械学習のしくみ

実行結果

色別で表示することで、数字ごとに集まりができていることがわかりますね!
しかし、このままだと混ざり合っていて区別することが難しいです。なので視点を変更して表示してみましょう!

コード

#1 視点を変えて描画
#2 各点の数字に対応する色で散布図を描画
#3 数字がどの色かの見本を描画


fig = plt.figure(figsize=(12, 12))    #1
ax = fig.add_subplot(projection='3d')
ax.scatter(df[0], df[1], df[2], color=colors)   #2

ty = 0    #3
for col in numbercolor:
    ax.text(-30+ty*5, 40, 30, str(ty), size=20, color=col)
    ty+=1
ax.view_init(90,0)
plt.show()

参考資料:Python3年生機械学習のしくみ

実行結果

こうして視点を変えるとまた区別化ができましたね!

今回で機械学習は終わりです!もっと深く理解したい方はディープラーニングなどを学んでみて下さい!

目次