"
],
"text/plain": [
" id rated created_at last_move_at turns \\\n",
"count 20058 20058 2.005800e+04 2.005800e+04 20058.000000 \n",
"unique 19113 2 NaN NaN NaN \n",
"top XRuQPSzH True NaN NaN NaN \n",
"freq 5 16155 NaN NaN NaN \n",
"mean NaN NaN 1.483617e+12 1.483618e+12 60.465999 \n",
"std NaN NaN 2.850151e+10 2.850140e+10 33.570585 \n",
"min NaN NaN 1.376772e+12 1.376772e+12 1.000000 \n",
"25% NaN NaN 1.477548e+12 1.477548e+12 37.000000 \n",
"50% NaN NaN 1.496010e+12 1.496010e+12 55.000000 \n",
"75% NaN NaN 1.503170e+12 1.503170e+12 79.000000 \n",
"max NaN NaN 1.504493e+12 1.504494e+12 349.000000 \n",
"\n",
" victory_status winner increment_code white_id white_rating black_id \\\n",
"count 20058 20058 20058 20058 20058.000000 20058 \n",
"unique 4 3 400 9438 NaN 9331 \n",
"top resign white 10+0 taranga NaN taranga \n",
"freq 11147 10001 7721 72 NaN 82 \n",
"mean NaN NaN NaN NaN 1596.631868 NaN \n",
"std NaN NaN NaN NaN 291.253376 NaN \n",
"min NaN NaN NaN NaN 784.000000 NaN \n",
"25% NaN NaN NaN NaN 1398.000000 NaN \n",
"50% NaN NaN NaN NaN 1567.000000 NaN \n",
"75% NaN NaN NaN NaN 1793.000000 NaN \n",
"max NaN NaN NaN NaN 2700.000000 NaN \n",
"\n",
" black_rating moves opening_eco opening_name opening_ply \n",
"count 20058.000000 20058 20058 20058 20058.000000 \n",
"unique NaN 18920 365 1477 NaN \n",
"top NaN e4 e5 A00 Van't Kruijs Opening NaN \n",
"freq NaN 27 1007 368 NaN \n",
"mean 1588.831987 NaN NaN NaN 4.816981 \n",
"std 291.036126 NaN NaN NaN 2.797152 \n",
"min 789.000000 NaN NaN NaN 1.000000 \n",
"25% 1391.000000 NaN NaN NaN 3.000000 \n",
"50% 1562.000000 NaN NaN NaN 4.000000 \n",
"75% 1784.000000 NaN NaN NaN 6.000000 \n",
"max 2723.000000 NaN NaN NaN 28.000000 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"chess.describe(include='all')"
]
},
{
"cell_type": "raw",
"id": "equal-resort",
"metadata": {},
"source": [
"Usunięcie id, czasu rozpoczęcia i zakończenia partii oraz id białych i czarnych oraz listy ruchów"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "representative-lodge",
"metadata": {},
"outputs": [],
"source": [
"cols=['rated','turns','victory_status','winner','increment_code','white_rating','black_rating','opening_eco','opening_name','opening_ply']\n",
"chess=chess[cols]\n",
"chess.to_csv(\"chess.csv\", index=False)"
]
},
{
"cell_type": "raw",
"id": "fitting-investigator",
"metadata": {},
"source": [
"Średnia, minimum, maksimum, odchylenia standardowe, medianę wartości poszczególnych parametrów"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "fiscal-vacation",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
rated
\n",
"
turns
\n",
"
victory_status
\n",
"
winner
\n",
"
increment_code
\n",
"
white_rating
\n",
"
black_rating
\n",
"
opening_eco
\n",
"
opening_name
\n",
"
opening_ply
\n",
"
\n",
" \n",
" \n",
"
\n",
"
count
\n",
"
20058
\n",
"
20058.000000
\n",
"
20058
\n",
"
20058
\n",
"
20058
\n",
"
20058.000000
\n",
"
20058.000000
\n",
"
20058
\n",
"
20058
\n",
"
20058.000000
\n",
"
\n",
"
\n",
"
unique
\n",
"
2
\n",
"
NaN
\n",
"
4
\n",
"
3
\n",
"
400
\n",
"
NaN
\n",
"
NaN
\n",
"
365
\n",
"
1477
\n",
"
NaN
\n",
"
\n",
"
\n",
"
top
\n",
"
True
\n",
"
NaN
\n",
"
resign
\n",
"
white
\n",
"
10+0
\n",
"
NaN
\n",
"
NaN
\n",
"
A00
\n",
"
Van't Kruijs Opening
\n",
"
NaN
\n",
"
\n",
"
\n",
"
freq
\n",
"
16155
\n",
"
NaN
\n",
"
11147
\n",
"
10001
\n",
"
7721
\n",
"
NaN
\n",
"
NaN
\n",
"
1007
\n",
"
368
\n",
"
NaN
\n",
"
\n",
"
\n",
"
mean
\n",
"
NaN
\n",
"
60.465999
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
1596.631868
\n",
"
1588.831987
\n",
"
NaN
\n",
"
NaN
\n",
"
4.816981
\n",
"
\n",
"
\n",
"
std
\n",
"
NaN
\n",
"
33.570585
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
291.253376
\n",
"
291.036126
\n",
"
NaN
\n",
"
NaN
\n",
"
2.797152
\n",
"
\n",
"
\n",
"
min
\n",
"
NaN
\n",
"
1.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
784.000000
\n",
"
789.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
1.000000
\n",
"
\n",
"
\n",
"
25%
\n",
"
NaN
\n",
"
37.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
1398.000000
\n",
"
1391.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
3.000000
\n",
"
\n",
"
\n",
"
50%
\n",
"
NaN
\n",
"
55.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
1567.000000
\n",
"
1562.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
4.000000
\n",
"
\n",
"
\n",
"
75%
\n",
"
NaN
\n",
"
79.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
1793.000000
\n",
"
1784.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
6.000000
\n",
"
\n",
"
\n",
"
max
\n",
"
NaN
\n",
"
349.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
2700.000000
\n",
"
2723.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
28.000000
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" rated turns victory_status winner increment_code \\\n",
"count 20058 20058.000000 20058 20058 20058 \n",
"unique 2 NaN 4 3 400 \n",
"top True NaN resign white 10+0 \n",
"freq 16155 NaN 11147 10001 7721 \n",
"mean NaN 60.465999 NaN NaN NaN \n",
"std NaN 33.570585 NaN NaN NaN \n",
"min NaN 1.000000 NaN NaN NaN \n",
"25% NaN 37.000000 NaN NaN NaN \n",
"50% NaN 55.000000 NaN NaN NaN \n",
"75% NaN 79.000000 NaN NaN NaN \n",
"max NaN 349.000000 NaN NaN NaN \n",
"\n",
" white_rating black_rating opening_eco opening_name \\\n",
"count 20058.000000 20058.000000 20058 20058 \n",
"unique NaN NaN 365 1477 \n",
"top NaN NaN A00 Van't Kruijs Opening \n",
"freq NaN NaN 1007 368 \n",
"mean 1596.631868 1588.831987 NaN NaN \n",
"std 291.253376 291.036126 NaN NaN \n",
"min 784.000000 789.000000 NaN NaN \n",
"25% 1398.000000 1391.000000 NaN NaN \n",
"50% 1567.000000 1562.000000 NaN NaN \n",
"75% 1793.000000 1784.000000 NaN NaN \n",
"max 2700.000000 2723.000000 NaN NaN \n",
"\n",
" opening_ply \n",
"count 20058.000000 \n",
"unique NaN \n",
"top NaN \n",
"freq NaN \n",
"mean 4.816981 \n",
"std 2.797152 \n",
"min 1.000000 \n",
"25% 3.000000 \n",
"50% 4.000000 \n",
"75% 6.000000 \n",
"max 28.000000 "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"chess.describe(include='all')"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "painted-shift",
"metadata": {},
"outputs": [],
"source": [
"!head -n -1 games.csv | shuf > chess.csv.shuf"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "thick-circular",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"20059 chess.csv\r\n"
]
}
],
"source": [
"!wc -l chess.csv"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "adverse-scope",
"metadata": {},
"outputs": [],
"source": [
"!head -n 2006 chess.csv.shuf > test.csv"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "fiscal-contemporary",
"metadata": {},
"outputs": [],
"source": [
"!head -n 4012 chess.csv.shuf | tail -n 2006 > dev.csv"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "possible-witness",
"metadata": {},
"outputs": [],
"source": [
"!tail -n +4013 chess.csv.shuf > train.csv"
]
},
{
"cell_type": "raw",
"id": "reflected-alias",
"metadata": {},
"source": [
"Wielkość zbiorów"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "entire-mathematics",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 20059 chess.csv\r\n",
" 2006 dev.csv\r\n",
" 20059 games.csv\r\n",
" 2006 test.csv\r\n",
" 16046 train.csv\r\n",
" 60176 total\r\n"
]
}
],
"source": [
"!wc -l *.csv"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "genetic-moscow",
"metadata": {},
"outputs": [],
"source": [
"chess_test=pd.read_csv('test.csv')\n",
"chess_train=pd.read_csv('train.csv')\n",
"chess_dev=pd.read_csv('dev.csv')"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "classified-rings",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"