没有合适的资源?快使用搜索试试~ 我知道了~
首页编程者的遗传算法与机器学习入门指南
"《遗传算法与机器学习:面向程序员的实践指南》是一本备受赞誉的IT专业书籍,它特别针对对机器学习技术感兴趣的初学者设计,旨在降低入门门槛,避免对背景知识的过高依赖。该书的独特之处在于将复杂的遗传算法和机器学习理论以易于理解的方式呈现,使读者在轻松愉快的学习氛围中掌握这些技术。 作者巧妙地运用实例,如“海龟”(可能是编程中的一个比喻)和纸袋游戏等,来解释这些算法的工作原理,通过互动式编程让抽象的概念具象化,帮助读者理解如何将算法应用到实际问题中。书中的内容包括但不限于进化策略、数据模型创建以及Python编程语言的应用,这些都是现代程序员必备的技能。 评论者们纷纷赞赏此书,如Burkhard Kloss,一位来自 Applied Numerical Research Labs 的主任,认为该书对于想要探索机器学习技术的程序员来说具有很高的吸引力。Christopher L. Simons,英国布里斯托大学的高级讲师,也强调了书中寓教于乐的教学方式,使得学习过程充满乐趣。退休顾问Russel Winder则强调,这本书不仅揭示了机器学习技术背后的复杂性和魅力,而且通过实例演示真正展示了这些算法如何在现实世界中发挥作用。 Steve Love,一位程序员和自由职业者,虽然提及了电子版和纸质版的页码处理问题,但并未影响他对本书内容的高度评价。他提到的小角色Eddy the Gerbil更是增添了趣味性,让人感受到作者在教学中的用心。 《遗传算法与机器学习:程序员指南》是一本实用且易于上手的资源,无论是为了提升编程技能,还是探索人工智能领域,都值得推荐给广大程序员。"
资源详情
资源推荐
a fixed angle to change direction and linearly increasing steps will build a
spirangle.
6
A spirangle is like a spiral, but it has straight edges. Therefore,
with this type of movement, the turtle will leave a spirangle trail behind.
If the wandering turtle turns through a right angle, he’ll build up a rectangular,
or four-angle spirangle. Starting with a smaller step size, he moves forward
and turns through 90 degrees, twice. He increases the step size and does this
again—forward, turn, forward, turn. By starting at the small circle, he’ll leave
a trail like the one in the following figure:
The arrows show which way he’s moving. By choosing different angles, you
get different shapes. If you can’t decide what to try, pick a few different angles
at random and vary at what point he changes the step size.
To recap, the turtle can move in straight lines or spirangles. He can also make
lots of concentric shapes. For example, drawing a small square, then a larger
one, and so on until he’s drawn a few outside the bag. He’ll have to jump to do
this. But as long as he draws at least one point outside of the bag, he succeeds.
Of course, the turtle can also pick moves at random, but you’ll have no
guarantee that he’ll end up on the outside of the bag. In fact, many of the
algorithms in this book use randomness, whether they be random points in
space or random solutions. However, these algorithms will either make can-
didate solutions guide each other, or they will compel their movement to
behave in ways more likely to solve the problems. Learning needs more than
random attempts, but it can start there.
6.
en.wikipedia.org/wiki/Spirangle
report erratum • discuss
Your Mission: Find a Way Out • 5
How to Help the Turtle Escape
The turtle knows when to stop and has a few ways to pick the next points.
We can pull these methods together into a program to try them all out. We
want to be able to see what he’s up to as well. The Python
turtle
package is
ideal for showing movement from one point to another, and spirangles are
often used to demonstrate its power. It comes with Python, so you don’t need
to install anything else. That’s handy!
Turtle graphics pre-date Python, originating from the Logo programming
language, invented by Seymore Papert.
7
The original version moved a robot
turtle. He wrote a significant book with Marvin Minsky Perceptrons: an
introduction to computational geometry [MP69] paving the way for later break-
throughs in AI, making the turtle package an excellent place to start discov-
ering AI and machine learning.
Turtles and Paper Bags
When you
import
the package, you get a default, right-facing turtle with a
starting position of
(0, 0)
. You can choose your
turtle shape
, or even design your
own. This turtle can rotate 90 degrees
left
, 90 degrees
right
, or any angle you
need. He can also move
forward
,
backward
, or
goto
a specific location. With a little
help, you can even get him to draw a paper bag, like this:
Escape/hello_turtle.py
import turtle
Line 1
-
def draw_bag():
-
turtle.shape('turtle')
-
turtle.pen(pencolor='brown', pensize=5)
5
turtle.penup()
-
turtle.goto(-35, 35)
-
turtle.pendown()
-
turtle.right(90)
-
turtle.forward(70)
10
turtle.left(90)
-
turtle.forward(70)
-
turtle.left(90)
-
turtle.forward(70)
-
15
if __name__ == '__main__':
-
turtle.setworldcoordinates(-70., -70., 70., 70.)
-
draw_bag()
-
turtle.mainloop()
-
7.
https://en.wikipedia.org/wiki/Turtle_graphics
Chapter 1. Escape! Code Your Way Out of a Paper Bag • 6
report erratum • discuss
In the main function, on line 17,
setworldcoordinates
sets the window size. When
you set your window size, be sure to pick something larger than the paper
bag otherwise you won’t see what the turtle is doing. Line 19, calls
mainloop
,
which leaves the window open. Without the last line, the window shuts
immediately after the turtle makes his move.
On line 4, you set the turtle’s
shape
. Since the turtle starts at the origin, move
him left and up on line 7. Because he starts off facing right, rotate him by 90
degrees, on line 9, so that he faces downwards. Then move him forward by 70
steps on line 10. Keep turning, then moving forward to outline the paper bag.
The finished bag is 70 units across, from
x=-35
to
+35
, and 70 units high, also
from
y=-35
to
+35
. When you’re done, you’ll see the three edges of the bag and
the turtle:
Now that you have a paper bag and know how to move a turtle, it’s time to
get to work.
Let’s Save the Turtle
The goal is to help the turtle escape the bag you saw earlier on page 6. The
easiest way is to make him move in a straight line. He might then march
through the sides of the bag. You can constrain him to only escape through
the top, but let him go where he wants for now. When he’s out, you need to
get him to stop. But how do you know when he’s out? The left edge of the bag
is at -35, and the right is at +35. The bottom and top are also at -35 and +35,
respectively. This makes checking his escape attempts easy:
Escape/escape.py
def escaped(position):
x = int(position[0])
y = int(position[1])
return x < -35 or x > 35 or y < -35 or y > 35
report erratum • discuss
Let’s Save the Turtle • 7
Now all you need to do is set him off and keep him going until he’s out:
Escape/escape.py
def draw_line():
angle = 0
step = 5
t = turtle.Turtle()
while not escaped(t.position()):
t.left(angle)
t.forward(step)
Simple, although a little boring. Let’s try some concentric squares.
Squares
To escape using squares, the turtle will need to increase their size as he goes.
As they get bigger, he’ll get nearer to the edges of the paper bag, eventually
going through it and surrounding it. To draw a square, move forward and
turn through a right angle four times:
Escape/escape.py
def draw_square(t, size):
L = []
for i in range(4):
t.forward(size)
t.left(90)
store_position_data(L, t)
return L
Store the position data, including whether or not it’s in or out of the paper bag:
Escape/escape.py
def store_position_data(L, t):
position = t.position()
L.append([position[0], position[1], escaped(position)])
You’ll need to choose a
number
of squares to draw. How many do you think
you need to get the turtle out of the bag? Experiment if you can’t work it out.
Now, move your turtle to the bottom left corner and draw a square, increasing
the
size
as you go:
Escape/escape.py
def draw_squares(number):
t = turtle.Turtle()
L = []
for i in range(1, number + 1):
t.penup()
t.goto(-i, -i)
t.pendown()
L.extend(draw_square(t, i * 2))
return L
Chapter 1. Escape! Code Your Way Out of a Paper Bag • 8
report erratum • discuss
You
extend
your list
L
of positions each time your turtle draws a square so you
can save them:
Escape/escape.py
def draw_squares_until_escaped(n):
t = turtle.Turtle()
L = draw_squares(n)
with open("data_square", "wb") as f:
pickle.dump(L, f)
You’ll use this data in the next chapter.
Spirangles
The turtle can also draw various spirangles by deciding an angle to turn
through. If he turns through 120 degrees three times and keeps the step size
the same, he’ll draw a triangle. Increase the step
forward
each time, and he
makes a spirangle with three angles:
Escape/escape.py
def draw_triangles(number):
t = turtle.Turtle()
for i in range(1, number):
t.forward(i*10)
t.right(120)
Try out other angles too. In fact, try something random:
Escape/escape.py
def draw_spirals_until_escaped():
t = turtle.Turtle()
t.penup()
t.left(random.randint(0, 360))
t.pendown()
i = 0
turn = 360/random.randint(1, 10)
L = []
store_position_data(L, t)
while not escaped(t.position()):
i += 1
t.forward(i*5)
t.right(turn)
store_position_data(L, t)
return L
Try this a few times, and save the points the turtle visits:
report erratum • discuss
Let’s Save the Turtle • 9
剩余233页未读,继续阅读
debrief
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功