Python光谱建模——XGBoost

话不多说,光谱数据集通过csv文件导入,安装对应的库后运行代码即可
 

import pandas as pd
import xgboost as xgb
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.preprocessing import LabelEncoder
import matplotlib.pyplot as plt
import seaborn as sns

# 读取训练和测试数据
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')

# 分离特征和标签
X_train = train_df.iloc[:, :-1]
y_train = train_df.iloc[:, -1]

X_test = test_df.iloc[:, :-1]
y_test = test_df.iloc[:, -1]

# 编码标签
label_encoder = LabelEncoder()
y_train = label_encoder.fit_transform(y_train)
y_test = label_encoder.transform(y_test)

# 创建DMatrix
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

# 设置参数
params = {
    'objective': 'multi:softmax',  # 多分类
    'num_class': len(label_encoder.classes_),  # 分类数
    'eval_metric': 'mlogloss',  # 多分类log损失
    'max_depth': 6,
    'eta': 0.3,
    'verbosity': 1,
    'nthread': 4
}

# 训练模型
num_round = 100
bst = xgb.train(params, dtrain, num_round)

# 预测
preds = bst.predict(dtest)

# 计算准确率
accuracy = accuracy_score(y_test, preds)
print(f'Accuracy: {accuracy * 100:.2f}%')

# 计算混淆矩阵
cm = confusion_matrix(y_test, preds)
cm_display_labels = label_encoder.classes_

# 绘制混淆矩阵
plt.figure(figsize=(10, 8))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=cm_display_labels, yticklabels=cm_display_labels)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()

运行后

简单说明一下其中的超参数:

  • objective: 'multi:softmax'

    • 指定模型的学习目标为多分类问题,输出类别标签。
  • num_class: len(label_encoder.classes_)

    • 定义分类任务中的类别数。
  • eval_metric: 'mlogloss'

    • 评估模型性能的指标为多分类的对数损失(log loss)。
  • max_depth: 6

    • 树的最大深度,控制模型的复杂度和防止过拟合。
  • eta: 0.3

    • 学习率,用于更新模型中的每棵树的权重,控制步长。
  • verbosity: 1

    • 控制训练过程中的输出信息,1表示输出详细信息。
  • nthread: 4

    • 指定训练时使用的线程数,设置为4个线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值