Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

UCI Machine Learning Repository の Chess (King-Rook vs. King-Pawn) のデータの分析1 - データの読み込みと前処理

今回からしばらくは、UCI Machine Learning Repository の Chess () のデータを使って分類問題を練習してみたいと思います。

Chess (King-Rook vs. King-Pawn) - UCI Machine Learning Repository

Shapiro, A. (1983). Chess (King-Rook vs. King-Pawn) [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5DK5C.

"King-Rook vs. King-Pawn on A7", KEKPA7と省略されるそうです。私はチェスは詳しくないので、よくわかりません。

Copilotに聞いてみました。

####ここからCopilotの回答####

KRKPA7(King–Rook vs. King–Pawn on A7)とは、
チェスの特定のエンドゲーム局面を指す専門用語で、白がキング+ルーク、黒がキング+a7のポーンという構成の終盤を意味します。


📝 KRKPA7 のポイント

● どんな局面?

  • 黒のポーンが a7 にあり、あと1手で昇格(クイーン化) できる非常に危険な状況。
  • 白は キング+ルーク でこのポーンの昇格を阻止しつつ、勝ち切れるかどうかがテーマ。

● なぜ有名なのか?

  • このエンドゲームは、機械学習の研究データセットとして非常に有名で、UCI Machine Learning Repository に「KRKPA7」として登録されています。
  • 3196局面が収録され、各局面が
    • White-can-win(白が勝てる)
    • White-cannot-win(白が勝てない)
      の2クラスに分類されています。

● 研究での利用

  • 1980年代から、知識表現・機械学習・概念学習の研究で頻繁に使われてきた古典的データセットです。

🎯 まとめ

KRKPA7 は、
「白:キング+ルーク vs 黒:キング+a7ポーン」
という特定のチェス終盤を扱った、歴史的にも重要な研究用データセットの略称です。

チェスの実戦でも理論的にも興味深いテーマで、
「ポーンが昇格寸前のとき、ルーク側は勝てるのか?」
という問題を体系的に分析するために作られました。


####ここまでCopilotの回答####

ということだそうです。

Rで分析してみようと思います。tidyverseとtidymodelsパッケージを読み込んでおきます。

データを読み込みます。

データはこういうテキストファイルでした。

glimpse()関数でデータを確認します。

X37が目的変数です。TRUE/FALSEのロジカル型の変数が多いですね。

X37をtargetと名前を変えて、ファクター型にしました。頻度を確認します。

勝ったゲームが1669で、負けたゲームが1527でした。勝率は52.2%です。

TRUE/FALSEのロジカル型の変数は、1/0の数値型に、文字列型の変数はファクター型なおします。

summary()関数でデータの確認をしてみましょう。

すべての変数が0/1の数値型、またはファクター型に変わっています。

今回は以上です。

次回は、

www.crosshyou.info

です。

 

今回のコードは以下になります。

#
# tidyverseの読み込み
library(tidyverse)
#
# tidymodelsの読み込み
library(tidymodels)
tidymodels_prefer()
#
# データの読み込み
df <- read_delim("kr-vs-kp.txt", col_names = FALSE, delim = ",")
#
# データの確認
glimpse(df)
#
# X37をtargetに名称を変更し、ファクター型にする
df <- df |> 
  rename(target = X37) |> 
  mutate(target = as.factor(target))
#
#
# targetの頻度
df |> 
  count(target) |> 
  mutate(prop = n / sum(n))
#
# logicalはnumericに、characterはfactorに
df <- df |> 
  mutate(across(where(is.logical), as.numeric)) |> 
  mutate(across(where(is.character), as.factor))
#
# データの確認
summary(df)
#

 

(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは、Landscape of natural green grass field, there are a few small ponds, close up of blue Begonia flowers and yellow Begonia flowers, photo. です。)