Analisis Data Eksplorasi Dataset Catur Saya Menggunakan Plotly Python – Menuju AI

Analisis Data Eksplorasi Dataset Catur Saya Menggunakan Plotly Python – Menuju AI

Author(s): Muttineni Sai Rohith

Awalnya diterbitkan di Menuju AI.

Pikiran Kita, Sebagai gantinya, adalah Neraka dari Surga Atau Surga dari Neraka

Anda mungkin bertanya-tanya, mengapa saya memulai dengan baris di atas untuk sebuah Artikel berdasarkan EDA. Inilah Alasannya — Saat itu sekitar jam 3 pagi di sini di India, saya tidak bisa tidur dan saya baru saja menyelesaikan permainan catur. Terlepas dari hasilnya, Otak Saya sekarang ingin saya Menganalisis statistik catur saya saat ini dan memperoleh beberapa jenis informasi yang dapat digunakan untuk meningkatkan Permainan saya dengan lebih baik. Satu pertanyaan yang saya miliki untuk Otak saya adalah Mengapa? Mengapa Anda ingin melakukannya? Dan jawabannya— karena Anda bisa melakukannya menggunakan Python Plotly. Dan saya hanyalah budak Otak Saya dan itulah yang membawakan artikel hari ini.

Foto oleh GR Stocks di Unsplash

Catur adalah salah satu permainan yang selalu saya kagumi, dan dalam 3–4 bulan terakhir, saya mulai memainkannya setiap hari. Untungnya, saya memilih chess.com untuk bermain catur online, dan hari ini ketika saya ingin melakukan analisis, saya menemukan arsip kumpulan data saya di situs web. Bersamaan dengan Kumpulan Data permainan kami sendiri, situs yang indah ini memberi kami Arsip dari banyak pemain catur terkenal. Tapi tidak ada yang datang tanpa usaha. Saya harus mengumpulkan dan mengonversi Data saya menjadi file mentah untuk menyiapkan Kumpulan Data akhir. Berikut adalah contoh snapshot dari Data mentah

Cuplikan Data Mentah

Saya tidak akan menggali jauh ke dalam persiapan Data dari data mentah tetapi saya telah mengunggah semua file mentah dan Notebook untuk mengonversi file mentah ini menjadi Kumpulan Data Akhir di tautan GitHub yang disebutkan di sini. Situs ini juga berisi Final Dataset dan Script yang digunakan untuk melakukan Analisis.

Inilah beberapa hal yang ingin saya lakukan saat mengatakan Analisis Permainan Catur saya —

Seberapa Baik Saya Sebagai Pemain Putih dan Pemain Hitam? Apakah Menjadi pemain Putih benar-benar Keuntungan? Apakah Game saya sebagian besar bergantung pada Mood saya? Bagaimana Gerakan pertama memengaruhi Game? Bagaimana peringkat mempengaruhi hasil? Apakah Waktu diambil dan Jumlah Gerakan memberikan beberapa Wawasan? Akhirnya, inilah Beberapa Statistik yang dapat saya peroleh dari Data.

Memuat Data

Anda dapat menemukan Kumpulan Data yang digunakan dalam artikel ini di sini. Kami akan menggunakan Panda dalam artikel ini untuk memuat Data dan Melakukan Operasi.

impor panda sebagai pd
data = pd.read_csv(“/konten/chess_stats.csv”)
data.head(5)
Cuplikan Data

Statistik Permainan

Apa gunanya melakukan Analisis ketika kita tidak memulai dengan Hitungan Menang/Kalah? Mari kita lihat dulu —

impor plotly.graph_objects sebagai pergi

GameResult = dict(data[“GameResult”].value_counts().items())

fig = go.Gambar(data=[go.Pie(labels=list(GameResult.keys()), values=list(GameResult.values()), pull=[0., 0., 0.4])])
ara.update_layout(
ukuran otomatis=Salah,
lebar=400,
tinggi = 400,
paper_bgcolor=”abu-abu muda”,
)
fig.show()

Bagan Plot

Oke, Seperti yang Anda lihat, Persentase Kemenangan saya sedikit lebih besar dari persentase kekalahan saya.

fig = px.bar(x=daftar(GameResult.nilai()), y=daftar(GameResult.keys()), warna = daftar(GameResult.keys()), text_auto=True)
ara.update_layout(
ukuran otomatis=Salah,
lebar=400,
tinggi = 400
)
fig.show()
Statistik Hasil

Seperti yang Anda lihat saya telah memenangkan 159 Game, kalah 151 dan 12 Game seri. Sekarang mari kita periksa statistik berdasarkan Warna —

Sebagai Pemain Putih

data_putih = data[data[“White”] == “chandurohitheee”]
GameResult_white = dict(data_white[“GameResult”].value_counts().items())

fig = go.Gambar(data=[go.Pie(labels=list(GameResult_white.keys()), values=list(GameResult_white.values()), pull=[0., 0., 0.4])])
ara.update_layout(
ukuran otomatis=Salah,
lebar=400,
tinggi = 400,
paper_bgcolor=”abu-abu muda”,
)
fig.show()

Sebagai Statistik Pemain Putih

Sebagai Pemain Hitam

data_hitam = data[data[“Black”] == “chandurohitheee”]
GameResult_black = dict(data_black[“GameResult”].value_counts().items())

fig = go.Gambar(data=[go.Pie(labels=list(GameResult_black.keys()), values=list(GameResult_black.values()), pull=[0., 0., 0.4])])
ara.update_layout(
ukuran otomatis=Salah,
lebar=400,
tinggi = 400,
paper_bgcolor=”abu-abu muda”,
)
fig.show()

Sebagai Statistik Pemain Hitam

Jangan biarkan warna membodohi Anda ketika saya bermain sebagai Pemain Putih, Persentase Kemenangan Saya adalah 52%, sementara saya bermain sebagai Pemain Hitam, Persentase Kemenangan Saya adalah 46,6% yang jauh lebih sedikit.
Jadi dari waktu berikutnya, saya harus memainkan lebih banyak Hitam terlebih dahulu untuk meningkatkan Game saya. Sekarang mari, Lakukan beberapa analisis berdasarkan gerakan pertama —

Berdasarkan Gerakan Pertama

Mari kita periksa rasio Gerakan Pertama yang terlibat dalam Game saya —

fig = go.Gambar(data=[go.Pie(labels=list(data[“first_move”].value_counts().keys()), nilai=daftar(data[“first_move”].value_counts().nilai), tarik=[0., 0.1, 0.1])])
ara.update_layout(
ukuran otomatis=Benar,
lebar=400,
tinggi = 400,
paper_bgcolor=”abu-abu muda”,
)
fig.show()
Gerakan Pertama

Seperti yang bisa kita lihat, “e4-e5” adalah gerakan yang paling banyak dimainkan, dan sangat jarang — “e4-d5” dan “e4-c5” dimainkan, dan sisanya hanyalah kejadian langka. Sekarang Mari kita periksa Hasil Game menggunakan Gerakan Pertama —

impor plotly.express sebagai px

fig = px.histogram(data, x=”first_move”, y=”GameResult”, color=’GameResult’, barmode=’group’, histfunc=’count’,
color_discrete_map={‘menang’:’hijau’,
‘kalah’: ‘merah’,
‘draw’:’yellow’}, text_auto = True)
fig.show()

Seperti yang bisa kita lihat, saya telah bermain agak baik ketika “e4-e5” adalah langkah pertama, dan istirahat saya perlu bekerja dan meningkatkan.

Sekarang Mari lebih spesifik dan periksa langkah pertama saya sebagai Putih dan respons yang saya dapatkan —

impor plotly.express sebagai px

data_putih = data[data[“White”] == “chandurohitheee”]

fig = px.histogram(data_white, x=”first_move”, y=”GameResult”, color=’GameResult’, barmode=’group’, histfunc=’count’, color_discrete_map={‘won’:’green’,
‘kalah’: ‘merah’,
‘draw’:’yellow’}, text_auto = True)
fig.show()

Sebagai Putih — Statistik Gerakan Pertama

Mengejutkan, saya tidak menyadarinya sebelumnya, Tetapi jika Anda memperbesar gambar, Anda dapat melihat bahwa saya hanya memainkan satu langkah pertama — “Memindahkan pion ke e4”. Sobat, aku perlu belajar beberapa gerakan mulai sekarang. Tapi tunggu, ketika saya mendapat “Pion dipindahkan ke e5” sebagai tanggapan, persentase kemenangan saya sangat bagus. Tapi saya perlu mengeksplorasi pendekatan lain.

Sekarang saatnya untuk memeriksa respons saya terhadap langkah pertama sebagai Pemain Hitam —

impor plotly.express sebagai px

data_hitam = data[data[“Black”] == “chandurohitheee”]

fig = px.histogram(data_black, x=”first_move”, y=”GameResult”, color=’GameResult’, barmode=’group’, histfunc=’count’, color_discrete_map={‘won’:’green’,
‘kalah’: ‘merah’,
‘draw’:’yellow’}, text_auto = True)
fig.show()

Sebagai Hitam — Statistik Gerakan Pertama

Mirip dengan Statistik saya sebagai Pemain Hitam, saya perlu mengerjakan beberapa pendekatan, Tetapi saya mengerti bahwa saya perlu mengeksploitasi Kombinasi (d4-Nc6) dan kombinasi (e4-d5) Lainnya.

Berdasarkan Tanggal

Jelas bahwa Catur adalah permainan pikiran, dan ketika pikiran Anda sudah siap, kita bisa menang lebih banyak dan sebaliknya, Tapi mari kita buktikan sekarang —

impor plotly.express sebagai px

fig = px.histogram(data, x=”Tanggal”, y=”GameResult”, color=’GameResult’, barmode=’group’, histfunc=’count’, color_discrete_map={‘menang’:’hijau’,
‘kalah’: ‘merah’,
‘draw’:’kuning’}, text_auto = “%.2s”)

fig.show()

Hasil vs Tanggal

Seperti yang bisa kita lihat, pada Hari-hari tertentu, persentase kemenangan saya lebih banyak dan sedikit, persentase saya jauh lebih sedikit, Jadi adil untuk mengatakan itu semua tergantung pada keadaan pikiran.

Mari kita periksa bagaimana peringkat saya sepanjang perjalanan —

impor plotly.express sebagai px

peringkat def (catatan):
jika merekam[“Black”] == “chandurohitheee”:
catatan pengembalian[“BlackElo”]
kalau tidak:
catatan pengembalian[“WhiteElo”]

data[“Rating”] = data.terapkan(lambda baris : peringkat(baris), sumbu=1)

fig = px.line(x=data.groupby(“Tanggal”)[“Rating”].mean().keys(), y=data.groupby(“Tanggal”)[“Rating”].mean().nilai, penanda=Benar)
fig.show()

Peringkat vs Tanggal

Seperti yang bisa kita lihat, Rating Saya Berfluktuasi dan terbukti bahwa Game ini sepenuhnya bergantung pada keadaan pikiran. Juga, chess.com adalah situs yang sangat indah, di mana jika peringkat Anda meningkat, Anda akan menghadapi lawan yang lebih tangguh dan sebaliknya. Mari kita buktikan sekarang dengan mempertimbangkan peringkat lawan vs. Hasil Game —

impor plotly.express sebagai px

def Peringkat Lawan(catatan):
jika merekam[“Black”] == “chandurohitheee”:
catatan pengembalian[“WhiteElo”]
kalau tidak:
catatan pengembalian[“BlackElo”]

data[“OpponentRating”] = data.terapkan(lambda baris : Peringkat Lawan(baris), sumbu=1)

fig = px.histogram(data, x=”GameResult”, y=”OpponentRating”, barmode=’group’, histfunc=’avg’, text_auto = “%.2s”)
fig.show()

Rating Lawan vs Hasil

Seperti yang bisa kita lihat, saya kalah lebih banyak saat menghadapi rata-rata pemain dengan peringkat 1230 dan menang lebih banyak saat berhadapan dengan pemain dengan peringkat kurang dari 1200. Jadi keahlian Lawan itu penting.

Berdasarkan Waktu yang Diambil

Baru-baru ini saya bermain catur di kantor, dan saya memenangkan dua dari dua, dengan membawa permainan itu ke posisi terakhir. Jadi itu memberi saya minat untuk menganalisis permainan berdasarkan waktu yang dibutuhkan dan mendapatkan beberapa hasil —

impor plotly.express sebagai px

def TimeTaken(rekam):
jika merekam[“Black”] == “chandurohitheee”:
kembali timedelta(jam = int(record[“black_time_taken”].membelah(“:”)[0]),menit = int(rekor[“black_time_taken”].membelah(“:”)[1]),detik = int(rekaman[“black_time_taken”].membelah(“:”)[2]))
kalau tidak:
jam = int(catatan[“white_time_taken”].membelah(“:”)[0])
menit = int(catatan[“white_time_taken”].membelah(“:”)[1])
jika len(rekam[“white_time_taken”].split(“:”)) == 2:
detik = 0
kalau tidak:
detik = int(rekaman[“white_time_taken”].membelah(“:”)[2])
kembali timedelta (jam = jam, menit = menit, detik = detik)

data[“TimeTaken”] = data.apply(lambda baris : TimeTaken(baris), axis=1)

fig = px.histogram(data, x=”TimeTaken”, y=”GameResult”, color=”GameResult”, barmode=’group’, histfunc=’count’, text_auto = “%d”)

fig.show()

Waktu Diambil vs Hasil

Maaf untuk stempel waktu, ini dalam Format Iso, Tetapi fakta yang menarik adalah bahwa ketika saya mengambil permainan sampai akhir atau agresif di awal terbukti membantu saya, tetapi tahap tengah permainan adalah tempat yang saya butuhkan. lebih hati-hati.

Mari Menggali Beberapa Hasil Game —

impor plotly.express sebagai px

def return_conclusion_type(Penghentian):
jika “pengunduran diri” dalam Pengakhiran:
kembali “Pengunduran diri”
elif “skakmat” di Pemutusan:
kembalikan “CheckMate”
elif “waktu” dalam Pemutusan:
mengembalikan “Waktu habis”
elif “ditinggalkan” dalam Pemutusan:
mengembalikan “Game Ditinggalkan”
kalau tidak:
kembali Pemutusan

data[“Termination_type”] = data[“Termination”].apply(return_conclusion_type)

fig = px.histogram(data, x=”GameResult”, y=”Termination_type”, color=”Termination_type”, barmode=’group’, histfunc=’count’, text_auto = “%d”)

fig.show()

Penghentian vs GameResult

Jadi, saya dapat memperoleh beberapa hal, saya mengatur waktu dengan sangat baik karena hanya ada dua kekalahan karena Timeout dan saya tidak sering meninggalkan permainan Tapi dalam kemenangan saya, seperti yang Anda lihat, Unsur kejutan di skakmat sangat rendah, dan seringkali lawan mengetahui bahwa dia akan kalah, Ini adalah sesuatu yang perlu saya perbaiki. Mengejutkan dan mengalahkan lawan lebih banyak.

Sekarang Mari kita periksa apakah hitungan Gerakan berperan dalam Hasil saya —

impor plotly.express sebagai px

fig = px.bar(x=data.groupby(“Termination_type”)[“number_of_moves”].mean().keys(), y=data.groupby(“Termination_type”)[“number_of_moves”].mean().nilai, text_auto = Benar)

fig.show()

MoveCount vs Penghentian

Kita dapat melihat hasil yang jelas pada grafik di atas, dan tidak banyak yang bisa disimpulkan.

Jadi itulah semua analisis yang saya lakukan sejauh ini pada permainan catur saya, ada banyak hal yang dapat disimpulkan, seperti melacak langkah ratu, menimbang pentingnya bidak tertentu, dan seterusnya, Tapi itu untuk artikel lain.

Dalam artikel ini, saya mengambil beberapa poin penting — Menjadi putih memiliki keuntungan tersendiri. Lebih baik mendalami permainan atau menjadi agresif di awal, dan saya harus mengeksplorasi lebih banyak tentang pembukaan.

Selamat Coding…

Analisis Data Eksplorasi Dataset Catur Saya Menggunakan Python Plotly awalnya diterbitkan di Menuju AI di Medium, di mana orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Jeffrey Hayes