机器学习适用于国际象棋辅导软件

时间:2015-01-07 16:57:49

标签: machine-learning chess

这可能属于国际象棋界的社区,但我从编程角度看问题,而不是教育学甚至国际象棋角度。

我知道有几项研究和尝试创造国际象棋引擎,它使用机器学习的一些变种来国际象棋(其中大多数通常是在主题上研究,而不是试图胜过蛮力方法,这是迄今为止优于其他方法),但很少尝试将机器学习应用于国际象棋教学法。

国际象棋教练/导师的主要原因之一是导师提供的个性化关注和指导。然后是否有可能创建一个国际象棋程序,使用机器学习来生成个性化的课程"根据用户的优势和劣势为用户服务?

课程不一定复杂,甚至可以从数据库生成相关职位,并要求用户“解决”问题。他们,然后给出答案(正确或不正确)的线或变化是一个很大的指示(因为,即使没有解释,变化通常就足够了)

主要问题是:

  1. 该软件如何能够衡量用户的技能水平? (这确实是ML算法必须进入的地方)
  2. 软件如何确定难度或"适当性"测试位置?例如,假设软件确定用户在战术位置上有困难(大多数业余玩家都有这个问题)程序如何选择一个位置(从其游戏数据库中,假设)具有合理的战术难度?
  3. 最后,软件将如何完成并适应用户的改进?
  4. 如果这个问题是抽象的或理论上的,我道歉,如果是的话,我会把它移到其他地方。

    谢谢

1 个答案:

答案 0 :(得分:1)

我首先让国际象棋程序将统计信息转储到CSV或JSON文件中,显示:

  
      
  1. 移动了哪些部分以及多久
  2.   
  3. 直到将军发生了多少次行动
  4.   
  5. 在一段时间内玩了多少场比赛。
  6.   
  7. 随着时间的推移拍摄了多少件。等
  8.   

您在挑选感兴趣的数据点或将用于训练ML算法的功能方面具有极大的灵活性。一旦将这些数据点放在一起并且数据文件可以用于您的算法,您就可以开始训练它并查看您获得的预测结果。然后需要调整您的实验,直到您获得确实有用的结果。

这是一个基于Python的随机Forrest算法以及a tutorial来帮助您入门:

from sklearn.ensemble import RandomForestClassifier
from numpy import genfromtxt, savetxt

def main():
    #create the training & test sets, skipping the header row with [1:]
    dataset = genfromtxt(open('Data/train.csv','r'), delimiter=',', dtype='f8')[1:]    
    target = [x[0] for x in dataset]
    train = [x[1:] for x in dataset]
    test = genfromtxt(open('Data/test.csv','r'), delimiter=',', dtype='f8')[1:]

    #create and train the random forest
    #multi-core CPUs can use: rf = RandomForestClassifier(n_estimators=100, n_jobs=2)
    rf = RandomForestClassifier(n_estimators=100)
    rf.fit(train, target)

    savetxt('Data/submission2.csv', rf.predict(test), delimiter=',', fmt='%f')

if __name__=="__main__"

当你开始行动时,这可能会非常有趣。让程序开始预测玩家的弱点取决于您选择收集哪些数据。

祝你好运。