一、算法使用

(一)创建

(二)参数调整

  1. cross_val_score:求单一参数最合适的值(KNN)

  2. GridSearchCV网格搜索:多参数组合最优的值

  3. 标准:准确率,精确率,召回率,F1

(三)数据清洗

(四)操作数据库(数据清洗)

(五)数据分析,可视化(Excel可视化的表)

二、算法原理

KNN原理,距离(调整,p=1,p=2设置p=1,p=2调和)

决策树原理:熵、gini、梯度上升、梯度下降

随机森林,极限森林:简单决策树+随机性

梯度提升树(回归):每棵树画出来,显示,推导

梯度提升分类树

import numpy as np
from sklearn.ensemble import GradientBoostingClassifier
from sklearn import tree
import matplotlib.pyplot as plt
xi = np.arange(1,11)
yi = np.array([0,0,0,1,1]*2)gbdt = GradientBoostingClassifier(n_estimators=3,max_depth=1)
gbdt.fit(xi.reshape(-1,1),yi)
gbdt.estimators_.shape  #3是3棵树,1是二分类问题(3分类问题是3 4分类问题是4)
plt.figure(figsize=(9,6))
_ = tree.plot_tree(gbdt[0,0],filled = True)

np.var(yi)
0.24F0 = np.log(4/6)
-0.40546510810816444#残差,概率,负梯度
yi_1 = yi - 1/(1+np.exp(-F0))
yi_1
array([-0.4, -0.4, -0.4,  0.6,  0.6, -0.4, -0.4, -0.4,  0.6,  0.6])#计算每个裂分点mse
mse1 = []
for i in range (1,11):if i == 10:mse1.append(np.var(yi_1))else:mse1.append((np.var(yi_1[:i])*i+np.var(yi_1[i:])*(10-i))/10)
mse1
[0.22222222222222224,0.2,0.17142857142857143,0.225,0.23999999999999994,0.23333333333333334,0.20952380952380958,0.15,0.2,0.24]
np.var(yi_1[:8])
np.var(yi_1[8:])
0.1875
0.0

np.round(yi_1[:8].sum()/(((yi[:8]-yi_1[:8])*(1-yi[:8]+yi_1[:8])).sum()),3)
np.round(yi_1[8:].sum()/(((yi[8:]-yi_1[8:])*(1-yi[8:]+yi_1[8:])).sum()),3)

结果:

-0.625
2.5
#第一棵树数据预测的值
y_1 = [-0.625]*8 +[2.5]*2
y_1 = np.asarray(y_1)
y_1gbdt[0,0].predict(xi.reshape(-1,1))

结果:

array([-0.625, -0.625, -0.625, -0.625, -0.625, -0.625, -0.625, -0.625,2.5  ,  2.5  ])
array([-0.625, -0.625, -0.625, -0.625, -0.625, -0.625, -0.625, -0.625,2.5  ,  2.5  ])

I=1,xi属于集合内   I=0,xi不属于集合内

#learning_rate = 0.1
F1 = F0 + y_1*0.1
F1.round(4)

结果:

array([-0.468 , -0.468 , -0.468 , -0.468 , -0.468 , -0.468 , -0.468 ,-0.468 , -0.1555, -0.1555])
yi_2 = yi - 1/(1+np.exp(-F1))
yi_2.round(4)

结果:

array([-0.3851, -0.3851, -0.3851,  0.6149,  0.6149, -0.3851, -0.3851,-0.3851,  0.5388,  0.5388])
plt.figure(figsize=(16,8))
tree.plot_tree(gbdt[1,0],filled = True)

#计算每个裂分点mse
mse1 = []
for i in range (1,11):if i == 10:mse1.append(np.var(yi_2))else:mse1.append((np.var(yi_2[:i])*i+np.var(yi_2[i:])*(10-i))/10)
mse1
mse1 = np.asarray(mse1)
mse1

结果:

array([0.20620922, 0.18564623, 0.1592081 , 0.21054968, 0.22242788,0.2186899 , 0.19976152, 0.15      , 0.19036645, 0.22265961])
np.round(yi_2[:8].sum()/(((yi[:8]-yi_2[:8])*(1-yi[:8]+yi_2[:8])).sum()),3)
np.round(yi_2[8:].sum()/(((yi[8:]-yi_2[8:])*(1-yi[8:]+yi_2[8:])).sum()),3)

结果:

-0.571
2.168
np.var(yi_2[:8])
np.var(yi_2[8:])
0.1875
0.0

机器学习Sklearn实战——梯度提升树二分类原理相关推荐

  1. 【机器学习】梯度提升树(GBDT)的原理小结

    在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting De ...

  2. 六、(机器学习)-Adaboost提升树-二分类和多分类(最清晰最易懂)

    Adaboost提升树 一.bagging与boosting bagging即套袋法,通过对训练样本重新采样的方法得到不同的训练样本集,在这些新的训练样本集上分别训练学习器,最终合并每一个学习器的结果 ...

  3. 机器学习Sklearn实战——极限森林、梯度提升树算法

    极限森林 from sklearn.ensemble import ExtraTreesClassifier,RandomForestClassifier from sklearn.tree impo ...

  4. NLP之NBGBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva)、梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测)

    NLP之NB&GBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva).梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测) ...

  5. 【机器学习】集成学习之梯度提升树GBDT

    Boosting方法的核心思想是对错分类的样本给予更高关注度,也就是样本权重,在提升树中与之对应的就是残差,在梯度提升树中就是梯度了. Regression Decision Tree:回归树 回归树 ...

  6. 【sklearn学习】集成算法之梯度提升树GBDT

    梯度提升树(Gradient Boosting Decision Tree, GBDT)是提升法中的代表算法 GBDT中包含Boosting三要素 损失函数:用以衡量模型预测结果与真实结果的差异 弱评 ...

  7. 【机器学习】深入剖析梯度提升决策树(GBDT)分类与回归

    1. 梯度提升决策树概述 梯度提升决策树(Gradient Boosting Decision Tree,GBDT)是以决策树为基学习器的一种Boosting算法,它在每一轮迭代中建立一个决策树,使当 ...

  8. 机器学习教程 之 梯度提升方法:GBDT处理分类问题

    Gradient boosting是一种广泛被用于回归.分类和排序任务的集成方法,于2001年被Friedman提出 该类算法通过以***上一轮基学习器的误差的负梯度***为训练目标训练本轮的基学习器 ...

  9. 深度学习核心技术精讲100篇(二十)-如何通过树模型实现梯度提升树(GBDT)+LR,随机森林(RandomForest) +LR

    前言 在讲如何通过树模型做特征工程之前,首先让我们回顾一下一个机器学习(除去深度学习项目部分)项目的大致流程: 从业务场景中抽象出问题--分类问题,回归问题,还是聚类问题等, 接下来是数据获取,数据清 ...

最新文章

  1. pandas使用applymap函数替换dataframe的内容或者数值:applymap函数使用字典替换多个列的内容(数值)
  2. 使用LSTM进行莎士比亚风格诗句生成
  3. MaxCompute助力ofo实现精细化运营:日订单超3200万、整体运行效率提升76%
  4. 用栈来表示队列,用队列来表示栈
  5. php setrawcookie,PHP setrawcookie() 函数
  6. 【人脸识别】人脸识别必读论文
  7. 在pycharm里做echarts_用 ECharts 做出漂亮的数据统计图
  8. ubuntu apache 完全删除
  9. ashx中Response.ContentType的常用类型
  10. 【kafka】服务器上Kafka启动 Cannot allocate memory
  11. 抗压力就是一切!!!
  12. scala中sorted,sortWith,sortBy用法详解
  13. 【彩色图像直方图统计】matlab统计RGB、HSV、Lab图像灰度,以直方图形式显示
  14. rba有哪几個主要組成部分_RBA管理体系有哪些
  15. 计算机软件的初始密码,怎么设置电脑软件密码
  16. http 502错误怎么解决?
  17. 【起航计划ObjC 001】印第安老斑鸠ObjC的幻想 ---- Ubuntu下安装并使用Obj-C
  18. 2018年年末总结及2019年规划
  19. ios备份应用数据_如何在iOS设备之间备份和复制数据
  20. 名帖181 黄庭坚 行书《苦笋赋》

热门文章

  1. python语言面试基础_【python面试指北】1.语言基础
  2. alertdialog怎么水平排列_轻钢二级吊顶怎么安装
  3. 双任务延时原理与空闲任务
  4. 数组传参中形参的秘密,以及数组名当作函数实际参数的特点,以及二维数组,以及外部变量和全局变量
  5. c++的引用是什么意思?怎么回事?
  6. python DataFrame join()
  7. Python量化(八)下影线选股法
  8. numpy 矩阵的用法
  9. 灾难恢复级别_防患于未然:灾难恢复全攻略,助你有效恢复业务数据
  10. 文巾解题 178. 分数排名