0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

七対子と国士無双の打牌の特徴を主成分分析した

Last updated at Posted at 2023-06-05

※この記事は2020年に作成しました

#概要
七対子エージェントと国士無双エージェントの手牌から打牌を予測するニューラルネットワークの中間層の出力の100次元のデータを集め、それを主成分分析した。
データ数は両方とも5000個ずつである。

#結果
##第一主成分と第二主成分の散布図
それぞれ色分けしてラベルを表示している。
意外と違いが出てることがわかる。
chitoi_kokushi.png

##累積寄与率
2つのデータがあるからか、データの8割を説明するのに約第30主成分まで必要。
chikoku_ruiseki2.png

##第一主成分と第二主成分における観測変数の寄与度をプロットする
100次元もあるからさすがにごちゃごちゃしてるし、学習させるごとに形や値は全然変わってくる。
chikoku_kiyodo.png

#作成したプログラム

# coding: UTF-8
import numpy as np
import matplotlib.pyplot as plt
import sklearn #機械学習のライブラリ
from sklearn.decomposition import PCA #主成分分析器
from pandas import plotting 
import matplotlib.ticker as ticker
import pandas as pd
from sklearn.preprocessing import StandardScaler


data = 5000

chitoi = np.loadtxt("C:/Users/p-user/Desktop/chitoi_pca.csv")
chitoi = np.delete(chitoi,slice(data,None),0)
kokushi = np.loadtxt("C:/Users/p-user/Desktop/kokushi_pca.csv")
kokushi = np.delete(kokushi,slice(data,None),0)

df = np.vstack((chitoi,kokushi))
#print(df.shape)

lavel = np.zeros((data*2))
for i in range(data,len(lavel)):
    lavel[i] = 1

pca = PCA()
feature = pca.fit(df)
# データを主成分空間に写像
feature = pca.transform(df)
#主成分得点
pd.DataFrame(feature, columns=["PC{}".format(x + 1) for x in range(100)]).head()

"""
#累積寄与率をプロット
plt.gca().get_xaxis().set_major_locator(ticker.MaxNLocator(integer=True))
plt.plot([0] + list( np.cumsum(pca.explained_variance_ratio_)), "-o")
plt.xlabel("Number of principal components")
plt.ylabel("Cumulative contribution rate")
plt.grid()
plt.show()
"""

"""# 第一主成分と第二主成分における観測変数の寄与度をプロットする
plt.figure(figsize=(6, 6))
for x, y, name in zip(pca.components_[0], pca.components_[1], range(100)):
    plt.text(x, y, name)
    #print(x,y,name)

plt.scatter(pca.components_[0], pca.components_[1], alpha=0.8)
plt.grid()
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.show()
"""

"""
plt.figure(figsize=(6, 6))
#plt.scatter(feature[:, 0], feature[:, 1], alpha=0.8, c=list(lavel), label=legend)
plt.scatter(feature[:4999, 0], feature[:4999, 1], alpha=0.8, c='red', label='Chitoitsu')
plt.scatter(feature[data:, 0], feature[data:, 1], alpha=0.8, c='blue', label='Kokushimuso')
plt.grid(True)
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.legend(loc='upper left')
plt.show()
"""
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?