こんにちはECナビ システム本部の大竹(@tokosa)です。
Pokemonの続きです。その後ポケットモンスターホワイトを購入し、先日クリアしました。
前回の記事Pokemon Naive Bayesのテスト結果にて『アーケオス』が出ていましたが、がんばって『アーケオス』育てた結果
最後のポケモンリーグでは大活躍してくれました!
とはいえ新しいポケモンが150程増え、まだ全ての新ポケモンを理解していません。
クリア後の楽しみとして、新ポケモンのみを使用し、バトルサブウェイで21連勝できるポケモンを育てたいと思います。
しかし、バトルサブウェイの縛りとして伝説・幻系のポケモンが使用できません・・・
そこで、今回は育成するポケモンを選ぶ為にRを使用し混合分布モデルによるクラスタリングを行います。
今回使用するデータは下記のデータ(抜粋)
>pokemon.test=read.csv("pokemon-test.csv") #CSVの読み込み
> head(pokemon.test) #データ表示
No 名前 HP こうげき ぼうぎょ とくこう とくぼう すばやさ TYPE1 TYPE2 伝説
1 0 ビクティニ 100 100 100 100 100 100 エスパー ほのお 幻
2 1 ツタージャ 45 45 55 45 55 63 くさ
3 2 ジャノビー 60 60 75 60 75 83 くさ
4 3 ジャローダ 75 75 95 75 95 113 くさ
5 4 ポカブ 65 63 45 45 45 45 ほのお
6 5 チャオブー 90 93 55 70 55 55 ほのお かくとう
> nrow(pokemon.test) #ポケモン数
[1] 151
ポケモンBWの151ポケモンデータにてクラスタリングを行います。
■モデルの選択Rのパッケージmclustを使用します。mclustにはいくつか関数が用意されています。
まず、関数EMclustを使用し、クラスター数を推測します。
install.packages("mclust")
library(mclust)
#ベイズ情報量基準BIC値を折れ線グラフで表現
pokemon.emc <- EMclust(pokemon.test[,3:8])
plot(pokemon.emc) 
グラフで見ると, VEIモデルのクラスター数4とVIIモデルのクラスター数7の時が値が大きいです。
■クラスタリング
関数hcを使用し、クラスタリングをします。
しかし関数hcにはモデルのVEIがないのでVIIモデルを使用します。
そして関数hclassを使用し、クラスター数7で分類します。
pokemon.mhc<-hc(modelName = "VII", data = pokemon.test[,3:8])
pokemon.cl<-hclass(pokemon.mhc,7)
> pokemon.cl
7
[1,] 1
[2,] 2
[3,] 3
[4,] 1
[5,] 4
[6,] 3
[7,] 1
[8,] 4
[9,] 3
■結果の表示
pokemon.result<-cbind(pokemon.test,cl=pokemon.cl[,1]) #clはクラス
subset(pokemon.result,cl==1) #クラス1を選択
> subset(pokemon.result,cl==1)
No 名前 HP こうげき ぼうぎょ とくこう とくぼう すばやさ TYPE1 TYPE2 伝説 cl
1 0 ビクティニ 100 100 100 100 100 100 エスパー ほのお 幻 1
4 3 ジャローダ 75 75 95 75 95 113 くさ 1
7 6 エンブオー 110 123 65 100 65 65 ほのお かくとう 1
10 9 ダイケンキ 95 100 85 108 70 70 みず 1
25 24 ムシャーナ 116 55 85 107 95 29 エスパー 1
35 34 ココロモリ 67 57 55 77 55 114 エスパー ひこう 1
38 37 タブンネ 103 60 86 60 86 50 ノーマル 1
44 43 ガマゲロゲ 105 85 75 85 75 74 みず じめん 1
54 53 エルフーン 60 67 85 77 75 116 くさ 1
56 55 ドレディア 70 60 75 110 75 90 くさ 1
63 62 マラカッチ 75 86 67 106 67 60 くさ 1
68 67 シンボラー 72 58 80 103 80 97 エスパー ひこう 1
74 73 アーケオス 75 140 65 112 65 110 いわ ひこう 1
78 77 ゾロアーク 60 105 60 120 60 105 あく 幻 1
83 82 ゴチルゼル 70 55 95 95 110 65 エスパー 1
86 85 ランクルス 110 65 75 125 85 30 エスパー 1
91 90 バイバニラ 71 95 85 110 95 79 こおり 1
94 93 エモンガ 55 75 60 75 60 103 でんき ひこう 1
98 97 モロバレル 114 85 70 85 80 30 くさ どく 1
100 99 ブルンゲル 100 60 70 85 105 60 みず ゴースト 1
101 100 ママンボウ 165 75 80 40 45 65 みず 1
111 110 シビルドン 85 115 80 105 80 50 でんき 1
113 112 オーベム 75 75 75 125 95 40 エスパー 1
116 115 シャンデラ 60 55 90 145 90 80 ゴースト ほのお 1
122 121 フリージオ 70 50 30 95 135 105 こおり 1
124 123 アギルダー 80 70 40 100 60 145 むし 1
125 124 マッギョ 109 66 84 81 99 32 じめん でんき 1
127 126 コジョンド 65 125 60 95 60 105 かくとう 1
137 136 バルジーナ 110 65 105 55 95 80 あく ひこう 1
138 137 クイタラン 85 97 66 105 66 65 ほのお 1
142 141 サザンドラ 92 105 90 125 90 98 あく ドラゴン 1
144 143 ウルガモス 85 60 65 135 105 100 むし ほのお 伝説 1
145 144 コバルオン 91 90 129 90 72 108 はがね かくとう 伝説 1
147 146 ビリジオン 91 90 72 90 129 108 くさ かくとう 伝説 1
148 147 トルネロス 79 115 70 125 80 111 ひこう 伝説 1
149 148 ボルトロス 79 115 70 125 80 111 でんき ひこう 伝説 1
150 149 レシラム 100 120 100 150 120 90 ドラゴン ほのお 伝説 1
151 150 ゼクロム 100 150 120 120 100 90 ドラゴン でんき 伝説 1
他の分類では・・
subset(pokemon.result,cl==6)#クラス6を選択
> subset(pokemon.result,cl==6)
No 名前 HP こうげき ぼうぎょ とくこう とくぼう すばやさ TYPE1 TYPE2 伝説 cl
17 16 レパルダス 64 88 50 88 50 106 あく 6
19 18 ヤナッキー 75 98 63 98 63 101 くさ 6
21 20 バオッキー 75 98 63 98 63 101 ほのお 6
23 22 ヒヤッキー 75 98 63 98 63 101 みず 6
30 29 ゼブライカ 75 100 63 80 63 116 でんき 6
57 56 バスラオ 70 92 65 80 55 98 みず 6
80 79 チラチーノ 75 95 60 65 60 115 ノーマル 6
88 87 スワンナ 75 87 63 87 63 98 みず ひこう 6
103 102 デンチュラ 70 77 60 97 60 108 むし でんき 6
■まとめ
結果は、クラス1に伝説のポケモン全9のうち7が同分類されています。
クラス6は同分類のポケモン(ヤ・バ・ヒヤッキー)が入ります。
クラス1のポケモンはなかなか良さそうなポケモンが揃ったのではないでしょうか?
この中から(伝説・幻以外で)育てるポケモンを選ぼうと思います。

