集成学习之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%
"""

猜你喜欢

转载自www.cnblogs.com/xitingxie/p/11323114.html