一般來說,數(shù)據(jù)準備是機器學習的首要任務(wù),通常包括兩個子步驟:創(chuàng)建數(shù)據(jù)集和轉(zhuǎn)換數(shù)據(jù)。
如果想構(gòu)建一個類似人類的 AI 象棋游戲,首要問題就是創(chuàng)建一個數(shù)據(jù)庫,并且該數(shù)據(jù)庫需要盡可能多的包含象棋大師玩游戲的數(shù)據(jù)。通常情況下,大多數(shù)人使用 Python 構(gòu)建數(shù)據(jù)集,并且在一定程度上認為 Python 是數(shù)據(jù)科學的唯一編程語言。
但是,項目作者 Jordi Bassaganas 打破流行觀點(該觀點認為 Python 是世界上唯一用于數(shù)據(jù)科學的編程語言),不使用 Python,而是在構(gòu)建數(shù)據(jù)中使用了 MySQL、PHP 和 Rubix ML,其中 Rubix ML 是一個高級機器學習庫,可構(gòu)建使用 PHP 語言從數(shù)據(jù)中學習的程序。
項目地址:https://github.com/programarivm/chess-data
項目介紹
該項目是一組命令行界面(Command-Line Interface,CLI)工具,可幫助管理 PGN 游戲中的象棋數(shù)據(jù)庫,此外,該工具還可以進行數(shù)據(jù)準備、可視化數(shù)據(jù)和使用 Rubix ML 訓練監(jiān)督模型。
所謂的 PGN 就是「可移植式棋局記號法」(Portable Game Notation),是一種以 ASCII 文本文件表示國際象棋棋局數(shù)據(jù)的標準設(shè)定。PGN 設(shè)計成使人們很容易進行閱讀和編寫,電腦程序很容易進行解析和產(chǎn)生。定義和傳播 PGN 的目的,是為了促進公開對局數(shù)據(jù)的共享交流,包括來自全世界的棋手 (不管有無組織)、出版人和電腦國際象棋研究的。
接下來真正的問題是:應(yīng)該給計算機提供哪些示例以使機器學習變得更容易?
這個數(shù)據(jù)準備存儲庫主要任務(wù)是將數(shù)百萬個象棋游戲加載到 SQL 數(shù)據(jù)庫中。作者從 PGN Mentor 中下載了 PGN 文件,PGN Mentor 是一個用于國際象棋研究的軟件應(yīng)用程序,同時還提供了一個包含數(shù)百萬個游戲的文件集合,并將這些文件復(fù)制到 programarivm/chess-data/data/players 文件夾中。
其實使用 PHP 為機器學習準備數(shù)據(jù)集并沒有什么簡單方法。但實現(xiàn)過程涉及到不同的技術(shù),這是關(guān)于對處理問題的理解、收集和過濾數(shù)據(jù)的最好實踐過程。
例如,當涉及國際象棋時,首先你需要過濾和驗證游戲,這意味著要刪除那些語法上無效或包含錯誤的游戲。cli/pgn-validate.php 命令查找 PGN 文件中錯誤,這條命令在將信息加載到數(shù)據(jù)庫時會被廣泛使用。
示例展示
下面展示了使用該項目設(shè)置和運行 MySQL 國際象棋數(shù)據(jù)庫,第一步是創(chuàng)建如下所示的象棋數(shù)據(jù)庫:
$ php cli/db-create.php
然后,按照下面的描述,games 表將被植入有效數(shù)據(jù)。
$ time php cli/db-seed.php data/players? 15 games did not pass the validation.? 3234 games out of a total of 3249 are OK.? 1353 games out of a total of 1353 are OK.? 1900 games out of a total of 1900 are OK.? 776 games out of a total of 776 are OK.? 1 games did not pass the validation.? 1660 games out of a total of 1661 are OK.? 4 games did not pass the validation.。..? 1124 games out of a total of 1124 are OK.? 265 games out of a total of 265 are OK.? 1 games did not pass the validation.? 2099 games out of a total of 2100 are OK.
cli/db-seed.php 命令需要大約 40 分鐘才能加載大約 400,000 個游戲。
mysql》 select count(*) from games;+----------+| count(*) |+----------+| 402658 |+----------+1 row in set (0,23 sec)
值得一提的是,所有這些都是用 PHP 語言實現(xiàn)的!
建立好國際象棋數(shù)據(jù)庫后,就可以為機器學習算法準備數(shù)據(jù)。在接下來的文章中,項目作者將詳細說明如何通過使用多層感知器分類器和該數(shù)據(jù)庫,進行國際象棋防守、戰(zhàn)術(shù)等的開發(fā)。
責任編輯:haq
-
AI
+關(guān)注
關(guān)注
91文章
41326瀏覽量
302721 -
PHP
+關(guān)注
關(guān)注
0文章
463瀏覽量
28822 -
機器學習
+關(guān)注
關(guān)注
67文章
8567瀏覽量
137261
原文標題:用“最好的語言”PHP,做一個機器學習數(shù)據(jù)集
文章出處:【微信號:pcbgood,微信公眾號:奈因PCB電路板設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
機器學習中的數(shù)據(jù)質(zhì)量雙保障:從“驗證”到“標記”
RK3588個人做一個8層DEMO板大概要多少銀子?
openclaw一個機器嬰兒的覺醒
小型自重構(gòu)機器人能不能幫忙做一個?
機器學習特征工程:分類變量的數(shù)值化處理方法
機器學習和深度學習中需避免的 7 個常見錯誤與局限性
risc-v P擴展(一) P指令集簡介
基于蜂鳥E203架構(gòu)的指令集K擴展
從 0 到 1:用 PHP 爬蟲優(yōu)雅地拿下京東商品詳情
如何用PHP做一個機器學習數(shù)據(jù)集
評論