不知道你有没有听说过一个说法——“编程逃出纸口袋”(译注:原文为Coding your way out of a paper bag,way out of a paper bag是俚语,用来比喻容易的事。这个短语常用于否定句,比如someone is not able to code their way out of a paper bag,意思是有些人毫无编程经验。作者在这里将这个短语用作双关语,一来表示本书将帮助读者轻松掌握机器学习的概念与算法,二来作者确实在例子里用到了纸口袋)。本书将教你用各种机器学习算法帮助粒子、蚂蚁、蜜蜂,甚至乌龟逃离纸口袋。这个比喻听起来有点怪,但这种方式很适合演示算法。读者对象如果你是初学者或刚入门的程序员,想学习机器学习算法,那么这本书很适合你。你将学习遗传算法(genetic algorithm)、自然启发的粒子群算法(nature-inspired swarm)、蒙特卡洛模拟(Monte Carlo simulation)、元胞自动机(cellular automata),还有聚类(cluster)。除此以外,你还将学习测试代码。本书内容阅读本书,你将学习:? 运用启发式算法(heuristics)解决问题并设计适应度函数(fitness function)。? 构建遗传算法(genetic algorithm)。? 构建受自然启发的粒子群算法(nature-inspired swarms)。? 用蒙特卡洛模拟(Monte Carlo simulation)进行统计模拟。? 了解元胞自动机(cellular automata)的概念。? 使用爬山法(hill climbing)和模拟退火算法(simulated annealing)找到函数的极值。? 尝试各种选择算法,包括锦标赛法(tournament selection)和转轮赌选择法(roulette selection)。? 掌握启发式算法、适应度函数、衡量指标和聚类的知识。你还会学习测试代码,举一反三地解决新问题,因地制宜地采用编程策略——这是称职的程序员必须具备的素质。除此之外,你还会借助可视化代码观察算法是如何通过学习来解决问题的。衷心希望这本书能对你未来的机器学习项目有所启发。在线资源受篇幅所限,书中代码有所省略。本书官网有完整的代码下载 。书中代码采用C (C 11及以上版本)、Python(2.x或3.x)和JavaScript(用于操作HTML5 canvas)编写。代码还会用到一些开源库,包括matplotlib、SFML、Catch、Cosmix-Ray。这些绘图库和测试库不是必需的,但是能带来更完整的学习体验。你也可以根据算法描述,用你喜欢的语言编程,而不必拘泥于书中的代码。Frances Buontempo