赞
踩
XGBoost算法:属于集成学习算法 ,与随机森林类似,也由多颗决策树组成
XGBoost算法既可以解决分类问题,也可以解决回归问题。
后一棵树是在前一个树的基础上生成的
后一棵树只需要拟合前K棵树和真实结果之间的误差
误差可以用负梯度表示;因此可叫 梯度提升树
XGboost是计算一阶导数和二阶导数,因此又称为 极端梯度提升树
集成学习算法是通过训练多个学习器,然后把这些学习器组合起来,以达到更好的预测性能的目的。
xgboost算法属于集成学习中的boosting类,又叫极端梯度提升树,是基于GBDT做的改进,但是基于的树模型都是回归树,因为回归树会计算出一个具体的值,这样才能比较真实结果和预测结果相差多少,在进行下一次的训练。
训练过程:一个模型一个模型串行训练
测试过程:一个样本输入,并行预测,预测结果相加,即可获得最终结果
如何构建每个棵树,从目标函数推导开始找到分裂标准
算法的性能好
算法的时间慢
以时间和空间 换 效果
- # 安装 pip install xgboost
- from xgboost import XGBClassifier # 分类
- from xgboost import XGBRegressor # 回归
- import matplotlib.pyplot as plt
- from sklearn.model_selection import train_test_split
- from xgboost import plot_tree
- from xgboost import to_graphviz # 导出dot文件
-
- from sklearn.datasets import load_iris
-
- plt.rcParams["font.sans-serif"] = "SimHei" # 设置支持中文字体
- # matplotlib本身支持负号显示的。增加了支持中文显示,负号不能正常显示
- plt.rcParams['axes.unicode_minus'] = False
-
- x, y = load_iris(return_X_y=True)
- out = load_iris()
- f_name = out.feature_names
- print("特征名称\n", f_name)
-
- X_train, X_test, y_train, y_test = train_test_split(x,
- y,
- test_size=0.2,
- stratify=y,
- random_state=1
- )
-
- # 实例化
- xgb = XGBClassifier(use_label_encoder=False,eval_metric='mlogloss')
-
- xgb.fit(X_train, y_train)
-
- acc = xgb.score(X_test, y_test)
-
- print("准确率", acc)
- print("训练集准确率", xgb.score(X_train, y_train))
-
- # xgboost的自带的显示树不支持中文
- # plot_tree(xgb, num_trees=0, fmap='iris2.fmap') # 第1棵树
- # plt.show()
-
- # plt.scatter(x[:,-2], x[:,-1], c=y)
- # plt.show()
-
- # 如果要显示中文,先输出为dot文件
- out = to_graphviz(xgb, fmap='iris2.fmap', num_trees=0)
- out.render("iris.dot")
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。