zoukankan      html  css  js  c++  java
  • 集成学习之sklearn中的xgboost基本用法 (转载)

    转载自:https://blog.csdn.net/qq_30868235/article/details/80370060

    1.数据集

          数据集使用sklearn自带的手写数字识别数据集mnist,通过函数datasets导入。mnist共1797个样本,8*8个特征,标签为0~9十个数字。

    ### 载入数据
    from sklearn import datasets # 载入数据集
    digits = datasets.load_digits() # 载入mnist数据集
    print(digits.data.shape) # 打印输入空间维度
    print(digits.target.shape) # 打印输出空间维度

    """
    (1797, 64)
    (1797,)
    """

    2.数据集分割

          sklearn.model_selection中train_test_split函数划分数据集,其中参数test_size为测试集所占的比例,random_state为随机种子(为了能够复现实验结果而设定)。

    ### 数据分割
    from sklearn.model_selection import train_test_split # 载入数据分割函数train_test_split
    x_train,x_test,y_train,y_test = train_test_split(digits.data, # 特征空间
    digits.target, # 输出空间
    test_size = 0.3, # 测试集占30%
    random_state = 33) # 为了复现实验,设置一个随机数

    3.模型相关(载入模型--训练模型--模型预测)

          XGBClassifier.fit()函数用于训练模型,XGBClassifier.predict()函数为使用模型做预测。

    ### 模型相关
    from xgboost import XGBClassifier
    model = XGBClassifier() # 载入模型(模型命名为model)
    model.fit(x_train,y_train) # 训练模型(训练集)
    y_pred = model.predict(x_test) # 模型预测(测试集),y_pred为预测结果

    4.性能评估

          sklearn.metrics中accuracy_score函数用来判断模型预测的准确度。

    ### 性能度量

    from sklearn.metrics import accuracy_score # 准确率
    accuracy = accuracy_score(y_test,y_pred)
    print("accuarcy: %.2f%%" % (accuracy*100.0))

    5.特征重要性

          xgboost分析了特征的重要程度,通过函数plot_importance绘制图片。

    ### 特征重要性
    import matplotlib.pyplot as plt
    from xgboost import plot_importance
    fig,ax = plt.subplots(figsize=(10,15))
    plot_importance(model,height=0.5,max_num_features=64,ax=ax)
    plt.show()

    image

    6.完整代码

    ### load module
    from sklearn import datasets
    from sklearn.model_selection import train_test_split
    from xgboost import XGBClassifier
    from sklearn.metrics import accuracy_score

    ### load datasets
    digits = datasets.load_digits()

    ### data analysis
    print(digits.data.shape) # 输入空间维度
    print(digits.target.shape) # 输出空间维度

    ### data split
    x_train,x_test,y_train,y_test = train_test_split(digits.data,
    digits.target,
    test_size = 0.3,
    random_state = 33)

    ### fit model for train data
    model = XGBClassifier()
    model.fit(x_train,y_train)

    ### make prediction for test data
    y_pred = model.predict(x_test)

    ### model evaluate
    accuracy = accuracy_score(y_test,y_pred)
    print("accuarcy: %.2f%%" % (accuracy*100.0))
    """
    95.0%
    """

  • 相关阅读:
    全面分析再动手的习惯:链表的反转问题(递归和非递归方式)
    Gatech OMSCS的申请和学习之奥妙
    java线程安全之并发Queue
    一篇文章看懂Java并发和线程安全
    java并发之如何解决线程安全问题
    Java并发/多线程系列——线程安全篇(1)
    当面试官问线程池时,你应该知道些什么?
    java 线程池 使用实例
    多线程-Executors和Executor,线程池
    从阿里Java开发手册学习线程池的正确创建方法
  • 原文地址:https://www.cnblogs.com/xitingxie/p/11323114.html
Copyright © 2011-2022 走看看