from
sklearn.model_selection
import
train_test_split
train_x, test_x, train_y, test_y = train_test_split(feature_matrix, labels, random_state=
0
)
import
xgboost
as
xgb
dtrain=xgb.DMatrix(train_x,label=train_y)
dtest=xgb.DMatrix(test_x)
params={
'booster'
:
'gbtree'
,
'objective'
:
'binary:logistic'
,
'eval_metric'
:
'auc'
,
'max_depth'
:
4
,
'lambda'
:
10
,
'subsample'
:
0.75
,
'colsample_bytree'
:
0.75
,
'min_child_weight'
:
2
,
'eta'
:
0.025
,
'seed'
:
0
,
'nthread'
:
8
,
'silent'
:
1
}
watchlist = [(dtrain,
'train'
)]
bst=xgb.train(params,dtrain,num_boost_round=
100
,evals=watchlist)
y_pred=bst.predict(dtest)
y_pred_binary = (ypred >=
0.5
)*
1
from
sklearn
import
metrics
print
'AUC: %.4f'
% metrics.roc_auc_score(test_y,y_pred)
print
'ACC: %.4f'
% metrics.accuracy_score(test_y,y_pred_binary)
print
'Recall: %.4f'
% metrics.recall_score(test_y,y_pred_binary)
print
'F1-score: %.4f'
%metrics.f1_score(test_y,y_pred_binary)
print
'Precesion: %.4f'
%metrics.precision_score(test_y,y_pred_binary)
metrics.confusion_matrix(test_y,y_pred_binary)
#省略……from sklearn.model_selection import train_test_splittrain_x, test_x, train_y, test_y = train_test_split(feature_matrix, labels, random_state=0)import xgboost as xgbdtrain=xgb.DMatrix(train...
import numpy as np
import pickle
from sklearn.model_select
ion
import KFold, train_test_split, GridSearchCV
from sklearn.metrics import confus
ion
_matrix, mean_squared_error #
混淆矩阵
,均方误差
from sklearn.datasets import load_iris, load_digit.
from sklearn.metrics import classificat
ion
_report
from sklearn.metrics import confus
ion
_matrix
def fast_hist(label_pred, label_true, num_classes):
mask = (label_true >= 0) & (label_true < num_classes)
hist = np.binco
关于语义分割评价指标和
混淆矩阵
的基本知识和代码这篇博客讲得很详细,我这里只是详解一下
混淆矩阵
计算
的代码。
#
计算
混淆矩阵
def _fast_hist(label_true, label_pred, n_class):
mask = (label_true >= 0) & (label_true < n_class)
hist = np.bincount(
混淆矩阵
(Confus
ion
Matrix)
在机器学习领域,
混淆矩阵
(Confus
ion
Matrix),又称为可能性矩阵或错误矩阵。
混淆矩阵
是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个
混淆矩阵
里面。
混淆矩阵
的结构一般如下图表示的方法。
混淆矩阵
要表达的含义:
混淆矩阵
的每一列代表了预测...
本文旨在使用
XGBoost
、随机森林、KNN、逻辑回归、SVM 和决策树解决分类问题,内容较长,建议收藏、关注、点赞。
假设你受雇于帮助一家信用卡公司检测潜在的欺诈案件,你的工作是确保客户不会因未购买的商品而被收取费用。给你一个包含人与人之间交易的数据集,他们是欺诈与否的信息,并要求你区分它们。我们的最终目的是通过构建分类模型来对欺诈交易进行分类区分来解决上述情况。
李宏毅《机器学习》国语课程(2022)来了
有人把吴恩达老师的机器学习和深度学习做成了中文版
上瘾了,最近又
在机器学习中经常会用到
混淆矩阵
(confus
ion
matrix),不了解的同学请参考这篇博文:
ML01 机器学习后利用
混淆矩阵
Confus
ion
matrix 进行结果分析
本文参考:使用python绘制
混淆矩阵
(confus
ion
_matrix)
首先import一些必要的库:
from sklearn.metrics import confus
ion
_matrix # 生成...
import pandas as pd
from sklearn import metrics
from sklearn.model_select
ion
import train_test_split
import
xgboost
as xgb
import matplotlib.pyplot as plt
import openpyxl
# 导入数据集
df = pd.read_csv("/Users/mengzihan/Desktop/正式有血糖聚类前.csv")
data=df.iloc[:,:35]
target=df.iloc[:,-1]
# 切分训练集和测试集
train_x, test_x, train_y, test_y = train_test_split(data,target,test_size=0.2,random_state=7)
#
xgboost
模型初始化设置
dtrain=xgb.DMatrix(train_x,label=train_y)
dtest=xgb.DMatrix(test_x)
watchlist = [(dtrain,'train')]
# booster:
params={'booster':'gbtree',
'objective': 'binary:logistic',
'eval_metric': '
auc
',
'max_depth':12,
'lambda':10,
'subsample':0.75,
'colsample_bytree':0.75,
'min_child_weight':2,
'eta': 0.025,
'seed':0,
'nthread':8,
'gamma':0.15,
'learning_rate' : 0.01}
# 建模与预测:50棵树
bst=xgb.train(params,dtrain,num_boost_round=50,evals=watchlist)
ypred=bst.predict(dtest)
# 设置阈值、评价指标
y_pred = (ypred >= 0.5)*1
print ('Pre
ces
ion
: %.4f' %metrics.precis
ion
_score(test_y,y_pred))
print ('
Recall
: %.4f' % metrics.
recall
_score(test_y,y_pred))
print ('
F1
-score: %.4f' %metrics.
f1
_score(test_y,y_pred))
print ('
Acc
uracy: %.4f' % metrics.
acc
uracy_score(test_y,y_pred))
print ('
AUC
: %.4f' % metrics.roc_
auc
_score(test_y,ypred))
ypred = bst.predict(dtest)
print("测试集每个样本的得分\n",ypred)
ypred_leaf = bst.predict(dtest, pred_leaf=True)
print("测试集每棵树所属的节点数\n",ypred_leaf)
ypred_contribs = bst.predict(dtest, pred_contribs=True)
print("特征的重要性\n",ypred_contribs )
xgb.plot_importance(bst,height=0.8,title='影响糖尿病的重要特征', ylabel='特征')
plt.rc('font', family='Arial Unicode MS', size=14)
plt.show()
这段代码是使用
XGBoost
进行二分类任务的建模和预测,并输出了一些评价指标和特征重要性。下面是对代码的解释:
1. 导入必要的库:`pandas`用于数据处理,`sklearn`中的`metrics`模块用于评价指标,`train_test_split`用于划分训练集和测试集,`
xgboost
`用于建模,`matplotlib.pyplot`用于画图,`openpyxl`用于读取Excel文件。
2. 读取数据集:使用`pd.read_csv`读取CSV格式的数据集文件,并分别将特征和目标变量提取出来。
3. 划分训练集和测试集:使用`train_test_split`函数将数据集划分为训练集和测试集,其中`test_size=0.2`表示测试集占比为20%,`random_state=7`表示设置随机种子以保证可重复性。
4. 初始化
xgboost
模型设置:创建`DMatrix`对象,将训练集特征矩阵和目标变量转换为
xgboost
专用的数据格式。设置模型参数和超参数,例如使用GBtree作为基学习器、使用二分类逻辑回归作为目标函数、评价指标为
AUC
等。
5. 建模与预测:使用`xgb.train`函数训练
xgboost
模型,设定迭代次数为50,并在训练过程中输出训练集的性能指标。然后对测试集进行预测,得到预测概率值`ypred`。
6. 设置阈值、
计算
评价指标:将预测概率值转换为二分类的预测结果,并
计算
准确率、召回率、
F1
-score、精确度和
AUC
等评价指标,并输出结果。
7. 输出测试集每个样本的得分:输出测试集每个样本的预测得分。
8. 输出测试集每棵树所属的节点数:输出测试集每棵树所属的节点数。
9. 输出特征的重要性:输出特征的重要性,可以使用`xgb.plot_importance`函数绘制特征重要性图。
最后,通过`plt.show()`函数显示绘制的特征重要性图。
weixin_40079262: