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

我知道一些研究并尝试创建使用机器学习的某种变体下象棋的国际象棋引擎(其中大多数通常是该主题的研究,而不是试图击败蛮力法,而后者远胜于其他方法) ),但很少尝试将机器学习应用于国际象棋教学法。

国际象棋教练/辅导员的主要原因之一是辅导员提供的个性化关注和指导。那么是否有可能创建一个象棋程序,该程序使用机器学习为用户提供基于其优势和劣势的个性化“课程”?

这些课程不必太复杂,即使从数据库中生成相关职位并要求用户“解决”它们,然后根据回答(正确或不正确)给出一条直线或变化也是很多指令(对于,甚至如果没有解释,这些变化通常就足够了)

主要问题是:


该软件将如何控制用户的技能水平? (这实际上是必须引入ML算法的地方)
该软件如何确定测试位置的难度或“适当性”?例如,假设软件确定用户在战术位置上有困难,(大多数业余玩家都遇到了这个问题)程序如何选择具有适当战术难度的位置(从其游戏数据库中,让我们假设)?
最后,该软件将如何感知并适应用户的改进?


对于这个问题是SO的抽象还是理论上的问题,我深表歉意。如果是的话,我会将其移至其他地方。

谢谢

最佳答案

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


  
  哪些零件被移动以及多久移动一次
  直到将军死后发生了多少动作
  在这段时间内有多少场比赛。
  随着时间的推移捕获了多少块。等等
  


与选择感兴趣的数据点或用于训练ML算法的功能相比,您具有极大的灵活性。将这些数据点放在一起并为算法提供数据文件后,就可以开始对其进行训练,并查看可获得的预测结果。然后需要调整实验,直到获得确实有用的结果。

这是一个基于Python的Random 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__"


开始时这可能会很有趣。使程序开始预测播放器中的弱点将取决于您选择收集哪些数据。

祝好运。

10-04 18:12