机器之心报道
编辑:陈萍
使用 PHP 为机器学习准备数据集 。机器学习是一门通过数据来教计算机解决问题的科学 , 而不是编写序列算法 , 让指令逐个执行 。
一般来说 , 数据准备是机器学习的首要任务 , 通常包括两个子步骤:创建数据集和转换数据 。
如果想构建一个类似人类的 AI 象棋游戏 , 首要问题就是创建一个数据库 , 并且该数据库需要尽可能多的包含象棋大师玩游戏的数据 。 通常情况下 , 大多数人使用 Python 构建数据集 , 并且在一定程度上认为 Python 是数据科学的唯一编程语言 。
但是 , 项目作者 Jordi Bassaganas 打破流行观点(该观点认为 Python 是世界上唯一用于数据科学的编程语言) , 不使用 Python , 而是在构建数据中使用了 MySQL、PHP 和 Rubix ML , 其中 Rubix ML 是一个高级机器学习库 , 可构建使用 PHP 语言从数据中学习的程序 。
文章图片
项目地址:https://github.com/programarivm/chess-data
项目介绍
该项目是一组命令行界面(Command-Line Interface , CLI)工具 , 可帮助管理 PGN 游戏中的象棋数据库 , 此外 , 该工具还可以进行数据准备、可视化数据和使用 Rubix ML 训练监督模型 。
文章图片
所谓的 PGN 就是「可移植式棋局记号法」(Portable Game Notation) , 是一种以 ASCII 文本文件表示国际象棋棋局数据的标准设定 。 PGN 设计成使人们很容易进行阅读和编写 , 电脑程序很容易进行解析和产生 。 定义和传播 PGN 的目的 , 是为了促进公开对局数据的共享交流 , 包括来自全世界的棋手 (不管有无组织)、出版人和电脑国际象棋研究的 。
接下来真正的问题是:应该给计算机提供哪些示例以使机器学习变得更容易?
这个数据准备存储库主要任务是将数百万个象棋游戏加载到 SQL 数据库中 。 作者从 PGN Mentor 中下载了 PGN 文件 , PGN Mentor 是一个用于国际象棋研究的软件应用程序 , 同时还提供了一个包含数百万个游戏的文件集合 , 并将这些文件复制到 programarivm/chess-data/data/players 文件夹中 。
其实使用 PHP 为机器学习准备数据集并没有什么简单方法 。 但实现过程涉及到不同的技术 , 这是关于对处理问题的理解、收集和过滤数据的最好实践过程 。
例如 , 当涉及国际象棋时 , 首先你需要过滤和验证游戏 , 这意味着要删除那些语法上无效或包含错误的游戏 。 cli/pgn-validate.php 命令查找 PGN 文件中错误 , 这条命令在将信息加载到数据库时会被广泛使用 。
示例展示
下面展示了使用该项目设置和运行 MySQL 国际象棋数据库 , 第一步是创建如下所示的象棋数据库:
$ php cli/db-create.php
然后 , 按照下面的描述 , games 表将被植入有效数据 。
$ 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 语言实现的!
建立好国际象棋数据库后 , 就可以为机器学习算法准备数据 。 在接下来的文章中 , 项目作者将详细说明如何通过使用多层感知器分类器和该数据库 , 进行国际象棋防守、战术等的开发 。
参考链接:
【Game|用「最好的语言」PHP,做一个机器学习数据集】https://ai.plainenglish.io/preparing-a-dataset-for-machine-learning-with-php-fd68dd85187e
推荐阅读
- 建设|这一次,我们用SASE为教育信息化建设保驾护航
- 区块|面向2030:影响数据存储产业的十大应用(下):新兴应用
- bug|这款小工具让你的Win10用上“Win11亚克力半透明菜单”
- 下架|APK Installer 和 WSATools 同时躺枪:冒牌应用登陆微软应用商店
- 原神|《原神》「飞彩镌流年」2.4 版本预下载已开启
- 年轻人|呼叫全城玩家,魔都首发「表情包地铁」启程,2022蓝不倒!
- 苏宁|可循环包装规模化应用 苏宁易购绿色物流再上新台阶
- 软件和应用|AcrylicMenus:让Windows 10右键菜单获得半透明效果
- 安全|Redline Stealer恶意软件:窃取浏览器中存储的用户凭证
- Tencent|原生版微信上架统信UOS应用商店:适配X86、ARM、LoongArch架构