机器学习是教计算机通过数据解决问题的科学,而不是写顺序算法,让指令一条一条执行。一般来说,数据准备是机器学习的首要任务,通常包括两个子步骤:创建数据集和转换数据。如果你想构建一个类似人类的人工智能国际象棋游戏,第一个问题是创建一个数据库,其中包含尽可能多的关于国际象棋大师所玩游戏的数据。通常,大多数人使用Python来构建数据集,并且在某种程度上认为Python是数据科学的唯一编程语言。然而,项目作者JordiBassaganas通过使用MySQL、PHP和RubixML来构建数据,反驳了人们普遍认为Python是世界上唯一的数据科学编程语言,其中RubixML是一个高级机器学习库,用于构建从中学习的程序数据使用PHP语言。项目地址:https://github.com/programarivm/chess-data项目介绍本项目是一套命令行界面(Command-LineInterface,CLI)工具,可以帮助管理PGN游戏中的棋牌数据库。此外,该工具还可以使用RubixML进行数据准备、数据可视化和训练监督模型。所谓PGN即“PortableGameNotation”,是一种以ASCII文本文件表示棋局数据的标准设置。PGN的设计目的是为了便于人类阅读和编写,以及为了便于计算机程序的解析和生成。定义和传播PGN的目的是促进开放游戏数据的共享和交换,包括来自世界各地的国际象棋玩家(无论是否有组织)、出版商和计算机国际象棋研究。那么真正的问题是:应该给计算机什么例子来使机器学习更容易?这个数据准备库的主要任务是将数百万的国际象棋游戏加载到一个SQL数据库中。作者从PGNMentor下载PGN文件,PGNMentor是一个国际象棋研究应用程序,也提供数百万游戏的文件集合,并将它们复制到programarivm/chess-data/data/players文件夹。没有简单的方法可以使用PHP为机器学习准备数据集。但实现过程涉及不同的技术,是理解处理问题、收集和过滤数据的最佳实践过程。例如,在国际象棋方面,首先需要过滤和验证游戏,这意味着删除那些在语法上无效或包含错误的游戏。cli/pgn-validate.php命令在PGN文件中查找错误,该命令在将信息加载到数据库时被广泛使用。示例下面显示了使用这个项目来设置和运行MySQL国际象棋数据库,第一步是创建国际象棋数据库,如下所示:$phpcli/db-create.php然后,如下所述,游戏表将有效填充数据。$timephpcli/db-seed.phpdata/players?15gamesdidnotpassthevalidation.?3234gamesoutofatotalof3249areOK.?1353gamesoutofatotalof1353areOK.?1900gamesoutofatotalof1900areOK.?776gamesoutofatotalof776areOK.?1gamesdidnotpassthevalidation.?1660gamesoutofatotalof1661areOK.?4gamesdidnotpassthevalidation....?1124gamesoutofatotalof1124areOK.?265gamesoutofatotalof265areOK.?1gamesdidnotpassthevalidation.?2099gamesoutofatotalof2100areOK.cli/db-seed.php命令需要大约40分钟来加载大约400,000个游戏。mysql>selectcount(*)fromgames;+--------+|count(*)|+--------+|402658|+----------+1rowinset(0,23sec)值得一提的是,这些都是用PHP语言实现的!一旦建立了国际象棋数据库,就可以为机器学习算法准备数据。在接下来的文章中,项目作者将详细介绍如何使用多层感知器分类器和该数据库来开发国际象棋防御、战术等。
