使用XGBoost实现多分类预测的实践

使用XGBoost实现多分类预测的实践代码

import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import KFold
import matplotlib.pyplot as plt
import seaborn as sns
import gc

## load data
train_data = pd.read_csv(‘../../data/train.csv‘)
test_data = pd.read_csv(‘../../data/test.csv‘)
num_round = 1000

## category feature one_hot
test_data[‘label‘] = -1
data = pd.concat([train_data, test_data])
cate_feature = [‘gender‘, ‘cell_province‘, ‘id_province‘, ‘id_city‘, ‘rate‘, ‘term‘]
for item in cate_feature:
    data[item] = LabelEncoder().fit_transform(data[item])
    item_dummies = pd.get_dummies(data[item])
    item_dummies.columns = [item + str(i + 1) for i in range(item_dummies.shape[1])]
    data = pd.concat([data, item_dummies], axis=1)
data.drop(cate_feature,axis=1,inplace=True)

train = data[data[‘label‘] != -1]
test = data[data[‘label‘] == -1]

##Clean up the memory
del data, train_data, test_data
gc.collect()

## get train feature
del_feature = [‘auditing_date‘, ‘due_date‘, ‘label‘]
features = [i for i in train.columns if i not in del_feature]

## Convert the label to two categories
train_x = train[features]
train_y = train[‘label‘].astype(int).values
test = test[features]

params = {
    ‘booster‘: ‘gbtree‘,
    ‘objective‘: ‘multi:softmax‘,
    # ‘objective‘: ‘multi:softprob‘,   #Multiclassification probability
    ‘num_class‘: 33,
    ‘eval_metric‘: ‘mlogloss‘,
    ‘gamma‘: 0.1,
    ‘max_depth‘: 8,
    ‘alpha‘: 0,
    ‘lambda‘: 0,
    ‘subsample‘: 0.7,
    ‘colsample_bytree‘: 0.5,
    ‘min_child_weight‘: 3,
    ‘silent‘: 0,
    ‘eta‘: 0.03,
    ‘nthread‘: -1,
    ‘missing‘: 1,
    ‘seed‘: 2019,
}

folds = KFold(n_splits=5, shuffle=True, random_state=2019)
prob_oof = np.zeros(train_x.shape[0])
test_pred_prob = np.zeros(test.shape[0])

## train and predict
feature_importance_df = pd.DataFrame()
for fold_, (trn_idx, val_idx) in enumerate(folds.split(train)):
    print("fold {}".format(fold_ + 1))
    trn_data = xgb.DMatrix(train_x.iloc[trn_idx], label=train_y[trn_idx])
    val_data = xgb.DMatrix(train_x.iloc[val_idx], label=train_y[val_idx])

    watchlist = [(trn_data, ‘train‘), (val_data, ‘valid‘)]
    clf = xgb.train(params, trn_data, num_round, watchlist, verbose_eval=20, early_stopping_rounds=50)

    prob_oof[val_idx] = clf.predict(xgb.DMatrix(train_x.iloc[val_idx]), ntree_limit=clf.best_ntree_limit)
    fold_importance_df = pd.DataFrame()
    fold_importance_df["Feature"] = clf.get_fscore().keys()
    fold_importance_df["importance"] = clf.get_fscore().values()
    fold_importance_df["fold"] = fold_ + 1
    feature_importance_df = pd.concat([feature_importance_df, fold_importance_df], axis=0)

    test_pred_prob += clf.predict(xgb.DMatrix(test), ntree_limit=clf.best_ntree_limit) / folds.n_splits
result = np.argmax(test_pred_prob, axis=1)

## plot feature importance
cols = (feature_importance_df[["Feature", "importance"]].groupby("Feature").mean().sort_values(by="importance", ascending=False).index)
best_features = feature_importance_df.loc[feature_importance_df.Feature.isin(cols)].sort_values(by=‘importance‘,ascending=False)
plt.figure(figsize=(8, 15))
sns.barplot(y="Feature",
            x="importance",
            data=best_features.sort_values(by="importance", ascending=False))
plt.title(‘LightGBM Features (avg over folds)‘)
plt.tight_layout()
plt.savefig(‘../../result/xgb_importances.png‘)

参考代码链接为:https://github.com/ikkyu-wen/data_mining_models,这里面的xgboost实现多分类

原文地址:https://www.cnblogs.com/wyhluckdog/p/12194457.html

时间: 2024-10-08 12:30:48

使用XGBoost实现多分类预测的实践的相关文章

读论文《BP改进算法在哮喘症状-证型分类预测中的应用》

总结: 一.研究内容 本文研究了CAL-BP(基于隐层的竞争学习与学习率的自适应的改进BP算法)在症状证型分类预测中的应用. 二.算法思想 1.隐层计算完各节点的误差后,对有最大误差的节点的权值进行正常修正,  而对其它单元的权值都向相反方向修正,用 δ表示隐层节点的权值修正量, 则修正量的调整公式具体为 2.每次算法迭代完以后,计算误差函数的值并与前一次的值进行比较,如果误差函数的值增大,     则代表过调了学习率,应在下一次迭代时以一定比率下调学习率 ],若误差函数的i+1值减小,    

数据回归分类预测的基本算法及python实现

数据回归分类预测的基本算法及python实现 关于数据的回归和分类以及分析预测.讨论分析几种比较基础的算法,也可以算作是比较简单的机器学习算法. 一.        KNN算法 邻近算法,可以用来做回归分析也可以用来做分类分析.主要思想是采取K个最为邻近的自变量来求取其应变量的平均值,从而做一个回归或者是分类.一般来说,K取值越大,output的var会更小,但bias相应会变大.反之,则可能会造成过拟合.因此,合理的选取K的值是KNN算法当中一个很重要的步骤. Advantages First

飞行器的分类四轴飞行器实践教程大学霸

飞行器的分类四轴飞行器实践教程大学霸 1.2  飞行器的分类 看过了飞行器的历史,你会认为飞行器的历史发展很慢.不过,在这里我想说,最近的一百多年是一个知识爆炸的年代.虽然飞行器才发展没有多长时间,但是他的种类繁多让人眼花缭乱!以下就按照飞行器的运行环境和原理分类介绍了几种飞行器本文选自四轴飞行器实践教程大学霸. 1.2.1  航空器 航空器是指在大气层内飞行的飞行器,主要依靠空气的静浮力或与空气进行相对运动时产生的空气动力升空飞行.典型的例子有气球.飞艇.飞机滑翔翼.直升机.旋翼机(四轴飞行器

汽车分类预测——多元分类

Dataset 本文的数据集包含了各种与汽车相关的信息,如点击的位移,汽车的重量,汽车的加速度等等信息,我们将通过这些信息来预测汽车的来源:北美,欧洲或者亚洲,这个问题中类标签有三个,不同于之前的二元分类问题. 由于这个数据集不是csv文件,而是txt文件,并且每一列的没有像csv文件那样有一个行列索引(不包含在数据本身里面),而txt文件只是数据.因此采用一个通用的方法read_table()来读取txt文件: mpg – Miles per gallon, Continuous. cylin

机器学习之路:python线性回归分类器 进行良恶性肿瘤分类预测

使用python3 学习了线性回归的api 分别使用逻辑斯蒂回归  和   随机参数估计回归 对良恶性肿瘤进行预测 我把数据集下载到了本地,可以来我的git下载源代码和数据集:https://github.com/linyi0604/kaggle 1 import numpy as np 2 import pandas as pd 3 from sklearn.cross_validation import train_test_split 4 from sklearn.preprocessin

机器学习之路: python 决策树分类 预测泰坦尼克号乘客是否幸存

使用python3 学习了决策树分类器的api 涉及到 特征的提取,数据类型保留,分类类型抽取出来新的类型 需要网上下载数据集,我把他们下载到了本地, 可以到我的git下载代码和数据集: https://github.com/linyi0604/MachineLearning 1 import pandas as pd 2 from sklearn.cross_validation import train_test_split 3 from sklearn.feature_extraction

分类预测算法评价(初识)

分类于预测算法评价 分类与预测模型对训练集进行预测而得出得准确率并不能很好得反映预测模型未来得性能,为了有效判断一个预测模型得性能表现,需要一组没有参与预测模型建立得数据集并在该数据集上评价预测模型得准确率,这组独立耳朵数据集叫做测试集,模型预测效果评价,通常用相对绝对误差,平均绝对误差,均方误差,均方根误差来衡量. 绝对误差与相对误差 设Y表示实际值, Ý表示预测值, 则称E为绝对误差,计算公式如下: Ε = Y - Ý e为相对误差, 计算公式如下 e = (Y - Ý) / Y 有时也可以

分类预测与回归模型介绍

1.分类与预测 分类与预测是预测问题的两种主要类型: 分类主要是:预测分类标号(离散属性): 预测主要是:建立连续值函数模型,预测给定自变量对应的因变量的值. 实现过程 (1)分类 分类是构造一个分类模型,输入样本属性值,输出对应类别,将每个样本映射到预先定义好的类别. 分类模型,建立在已有类标记的数据集上,因此,属于“有监督学习” (2)预测 预测,指建立两种或两种以上变量间相互依赖的函数模型,进行预测或控制 (3)实现过程 分类算法: a:学习步,通过归纳分析训练样本集建立分类模型得到分类规

机器学习之路: python k近邻分类器 鸢尾花分类预测

使用python语言 学习k近邻分类器的api 欢迎来到我的git查看源代码: https://github.com/linyi0604/kaggle 1 from sklearn.datasets import load_iris 2 from sklearn.cross_validation import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.neighbors i