集成分类器单细胞测序 python3机器学习 单一决策树、随机森林分类器、梯度提升决策树

Shela ·
更新时间:2024-09-20
· 982 次阅读

原理:
决策树生成算法: 是递归地生成决策树,它往往分类精细,对训练数据集分类准确,但是对未知数据集却没有那么准确,有比较严重的过拟合问题。因此,为了简化模型的复杂度,使模型的泛化能力更强,需要对已生成的决策树进行剪枝。

集成分类算法: 集成(Ensemble)分类模型综合考量多个分类器的预测结果,从而做出决策。
随机森林分类器用相同的训练数据同时搭建多个独立的分裂模型,然后通过投票的方式,以少数服从多数的原则作出最终分类的决策。在相同的训练数据上同时搭建多棵决策树,每棵决策树会放弃固定的排序算法,随机选取特征。
梯度提升决策树按照一定的次序搭建多个分类模型。模型之间彼此存在依赖关系。后续加入的模型对集成模型的综合性能有所贡献。每棵决策树在生成的过程中都会尽可能降低整体集成模型在训练集上的拟合误差。

在这里插入图片描述代码:

import turtle import random import simpleaudio as sa #15 引入音乐 laser = sa.WaveObject.from_wave_file('E:\coding_data\python\outer_space\laser.wav') explosion = sa.WaveObject.from_wave_file('E:\coding_data\python\outer_space\explosion.wav') #3 设置背景 game = turtle.Screen() game.setup(700, 700) game.title("太空侵略者") game.bgpic('E:\coding_data\python\outer_space\pg.gif') #4 创建玩家 #game.addshape("E:\coding_data\python\outer_space\play.png") turtle.addshape('E:\coding_data\python\outer_space\play.gif') player = turtle.Turtle() player.ht() player.speed(0) player.up() player.shape('E:\coding_data\python\outer_space\play.gif'); player.setpos(0, -300) player.st() #5. 玩家动起来 player_step = 15 def go_left(): x = player.xcor() x = x - player_step if x 300: x = 300 player.setx(x) turtle.listen() turtle.onkey(go_left, 'Left') turtle.onkey(go_right, 'Right') #8. 添加子弹 bomb = turtle.Turtle() bomb.ht() bomb.speed(0) bomb.up() bomb.shape('triangle') bomb.color('yellow') bomb.shapesize(0.5, 0.5) bomb.seth(90) #12. 添加分数 score = 0 pen = turtle.Turtle() pen.color("white") pen.speed(0) pen.up() pen.ht() pen.setpos(-340, 230) score_string = "分数:%s" %score pen.write(score_string, align="left", font=('Arial', 12, 'normal')) #9. 发射子弹 is_fired = False def fire(): global is_fired if is_fired == False: bomb.setpos(player.xcor(), player.ycor() + 20) bomb.st() is_fired = True laser.play() turtle.onkey(fire, 'space') #6. 添加敌人 num = 6 inv_list = [] turtle.addshape('E:\coding_data\python\outer_space\inv.gif'); for i in range(6): inv = turtle.Turtle() inv_list.append(inv) inv.ht() inv.speed(0) inv.up() inv.shape('E:\coding_data\python\outer_space\inv.gif') x = random.randint(-200, 200) y = random.randint(100, 200) inv.setpos(x,y) inv.st() #7. 敌人动起来 inv_step = 2 go_back = False bomb_step = 20 game_over = False while True: if game_over: pen2 = turtle.Turtle() pen2.color('red') pen2.ht() pen2.write('游戏结束', align='center', font=('Arial', 18, 'bold')) #explosion.play() break for inv in inv_list: x = inv.xcor() x += inv_step inv.setx(x) if x > 300 or x < -300: go_back = True if inv.distance(bomb) < 15: inv.setpos(0, 240) is_fired = False bomb.setpos(-350, -350) bomb.ht() score += 10 score_string = "分数:%s" %score pen.clear() pen.write(score_string, align="left", font=('Arial', 12, 'normal')) # explosion.play() if inv.ycor() 250: is_fired = False bomb.setpos(-350, -350) bomb.ht()

**结果分析:**梯度提升决策树和随机森林分类器的准确率远高于单一决策树。集成分类器综合考量多个分类器的预测结果,降低拟合误差,其准确率更高。

结果截图:
在这里插入图片描述


作者:乔Emma



决策 随机森林 梯度提升 学习 分类 梯度 决策树 分类器 机器学习 Python3 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号