使用XGBoost进行分类预测并评估模型性能
import pandas as pd
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.metrics import mean_squared_error
from sklearn.preprocessing import LabelEncoder
# 读取数据
data = pd.read_excel('处理后的数据.xlsx')
# 提取特征属性和目标属性
x = data[['特征1', '特征2', '特征3', '特征4', '特征5', '特征6', '特征7', '特征8', '特征9']] # 特征属性
y = data['类别'] # 目标属性
# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
# 对目标变量进行编码
label_encoder = LabelEncoder()
y_train = label_encoder.fit_transform(y_train)
y_test = label_encoder.transform(y_test)
# XGBoost分类器
xgb_n_clf = xgb.XGBClassifier(
max_depth=12,
learning_rate=0.1,
reg_lambda=1,
n_estimators=150,
subsample=0.9,
colsample_bytree=0.9,
random_state=0,
eval_metric='logloss'
)
xgb_n_clf.fit(x_train, y_train)
# 预测训练集的类别
y_pred_train = xgb_n_clf.predict(x_train)
# 输出训练集的分类报告和均方误差
print(classification_report(y_train, y_pred_train))
mse = mean_squared_error(y_train, y_pred_train)
print('均方误差:', mse)
修改说明:
- 将导入的库放在代码开头,方便查看所需的库;
- 删除了不必要的导入库和变量;
- 将数据读取、特征提取、划分训练集和测试集、目标变量编码等步骤放在一起;
- 将分类器训练和预测放在一起,方便查看训练集的分类报告和均方误差。
原文地址: http://www.cveoy.top/t/topic/f1YJ 著作权归作者所有。请勿转载和采集!