赞
踩
XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升树的机器学习算法,它在解决分类和回归问题上表现出色。它是由陈天奇在2014年开发的,如今已成为机器学习领域中最流行和强大的算法之一。
XGBoost结合了梯度提升框架和决策树模型,通过迭代地训练一系列的决策树来逐步改进预测性能。它的目标是优化损失函数,使得预测值与实际值之间的误差最小化。
由于XGBoost在准确性、灵活性和效率方面的优势,它在各种机器学习任务中被广泛应用,包括分类、回归、排序、推荐系统等。它在许多机器学习竞赛和实际应用中取得了显著的成绩,成为了许多数据科学家和机器学习从业者的首选算法之一。
XGBoost(eXtreme Gradient Boosting)是一种梯度提升树(Gradient Boosting Tree)算法,它是一种集成学习方法,通过将多个弱学习器(通常是决策树)进行集成来构建一个更强大的预测模型。下面是XGBoost的算法原理:
总之,XGBoost通过迭代训练多个回归树,以梯度下降的方式优化损失函数,通过加权组合多个回归树的预测结果来得到最终的预测值。它通过特定的损失函数近似和正则化技术,提供了一种高效而强大的机器学习算法,适用于回归问题和分类问题。
XGBoost使用回归树作为基础模型,下面是XGBoost构建回归树的方法:
XGBoost的回归树构建方法与传统的决策树构建方法类似,但引入了正则化和加权叶节点输出的技术来提高模型的泛化能力和预测准确性。通过迭代地构建多个回归树,并使用梯度提升的方式优化模型的预测能力,XGBoost能够在回归问题中取得较好的性能。
XGBoost(eXtreme Gradient Boosting)与GBDT(Gradient Boosting Decision Tree)都是基于梯度提升树(Gradient Boosting Tree)的算法,它们在原理上有一些相似之处,但也存在一些区别。以下是XGBoost与GBDT的几个主要区别:
总体而言,XGBoost在算法设计和实现上对GBDT进行了一系列的改进和优化,包括正则化、近似优化、特征分裂策略、并行计算等方面。这些改进使得XGBoost在训练速度、模型的准确性和泛化能力上都具有一定的优势。
pip3 install xgboost
xgboost中封装了很多参数,主要由三种类型构成:通用参数(general parameters),Booster参数(booster parameters)和学习目标参数(task parameters)
通用参数:
Booster参数:
学习目标参数:
泰坦尼克号沉没是历史上最臭名昭著的沉船事件之一。这场耸人听闻的悲剧震惊了国际社会,并为船舶制定了更好的安全规定。造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存下去有一些运气因素,但有些人比其他人更容易幸存。例如妇女,儿童和上流社会。在这个案例中,要求完成对哪些人可能存活的分析。特别是,要求运用机器学习工具来预测哪些乘客幸免于悲剧。
我们提到的数据集中的特征包括票的类别,是否存活,乘坐班次,年龄,登陆home.dest,房间船和性别等。
数据:https://hbiostat.org/data/repo/titanic.txt
经过观察数据得到:
获取数据
数据基本处理
2.1 确定特征值目标值
2.2 缺失值处理
2.3 数据集划分
特征工程(字典特征抽取)
机器学习(xgboost)
模型评估
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.feature_extraction import DictVectorizer from xgboost import XGBClassifier import matplotlib.pyplot as plt # 1.获取数据 titan = pd.read_csv("https://hbiostat.org/data/repo/titanic.txt") titan.head() # 2.数据基本处理 # 2.1确定特征值,目标值 x = titan[["pclass","age","sex"]] y = titan["survived"] # 2.2缺失值处理 x["age"].fillna(value=titan["age"].mean(),inplace= True) # 2.3数据集划分 x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.2,random_state=22) # 3.特征工程--字典类型提取 x_train = x_train.to_dict(orient="records") x_test = x_test.to_dict(orient="records") transfer = DictVectorizer(sparse=False) x_train = transfer.fit_transform(x_train) x_test = transfer.transform(x_test) # 4.模型训练(XGBoost)以及模型评估 # 模型初步训练 estimator = XGBClassifier() estimator.fit(x_train,y_train) score1 = estimator.score(x_test,y_test) print("模型初步训练的准确率为:\n",score1) # 针对max_depth进行模型调优 depth_range = range(10) score = [] for i in depth_range: estimator = XGBClassifier(eta=0.3,gamma=0,max_depth=i) estimator.fit(x_train,y_train) s = estimator.score(x_test,y_test) print(s) score.append(s) # 结果可视化 plt.plot(depth_range,score,"r") plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。