```python
# 数据导入
import numpy as np
import pandas as pd
train_path = r"C:\Users\Admin\Desktop\data\miccai_data\train_P_value_8.xlsx"
test_path = r"C:\Users\Admin\Desktop\data\miccai_data\test_P_value_8.xlsx"
train_df = pd.read_excel(train_path)
test_df = pd.read_excel(test_path)
train_df_lassoCV = train_df[train_df.columns[2:]]
Y = train_df['综合指南与治疗的分类方法']
test_df_lassoCV = test_df[test_df.columns[2:]]
Y_test = test_df['综合指南与治疗的分类方法']
```
```python
# 建立模型池
# 机器学习分类模型建模
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.linear_model import LogisticRegression
random_seed = 2022
n_classes = [0, 1, 2]
classifiers_ = {
'RandomForest': RandomForestClassifier(random_state=random_seed, n_estimators=100, max_depth=None),
'DecisionTree': DecisionTreeClassifier(random_state=random_seed),
'XGBoost': XGBClassifier(reg_lambda=0.5,
max_depth=8,
learning_rate=0.93,
n_estimators=100,
min_child_weight=1,
gamma=0.3,
# min_weight=5,
colsample_bytree=0.8,
verbosity=0,
num_class=len(n_classes),
objective='multi:softmax',
random_state=random_seed),
# 'AdaBoost': AdaBoostClassifier(n_estimators=100, learning_rate=0.9, random_state=random_seed),
'LogisticRegression':LogisticRegression(random_state=random_seed),
'SVM': SVC(kernel='linear', C=1, probability=True, tol=1.e-4, random_state=random_seed),
}
```
d:\Anaconda\envs\Tensorflow\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.2
warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\compat.py:31: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
```python
from sklearn.preprocessing import label_binarize
# 更新样本标签为多分类形式
Y_train_multi = label_binarize(Y, classes=n_classes)
Y_test_multi = label_binarize(Y_test, classes=n_classes)
```
```python
# 观察机器学习模型在训练集/测试集上的性能
for name in classifiers_:
model = classifiers_[name]
model.fit(train_df_lassoCV, Y)
print("模型 {} 在训练集上的性能(ACC)为 {}".format(name, model.score(train_df_lassoCV, Y)))
print("模型 {} 在测试集上的性能(ACC)为 {}".format(name, model.score(test_df_lassoCV, Y_test)))
print()
```
模型 RandomForest 在训练集上的性能(ACC)为 1.0
模型 RandomForest 在测试集上的性能(ACC)为 0.625
模型 DecisionTree 在训练集上的性能(ACC)为 1.0
模型 DecisionTree 在测试集上的性能(ACC)为 0.7
模型 XGBoost 在训练集上的性能(ACC)为 1.0
模型 XGBoost 在测试集上的性能(ACC)为 0.7
模型 LogisticRegression 在训练集上的性能(ACC)为 0.6242038216560509
模型 LogisticRegression 在测试集上的性能(ACC)为 0.6
模型 SVM 在训练集上的性能(ACC)为 0.6305732484076433
模型 SVM 在测试集上的性能(ACC)为 0.55
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
```python
# 训练集上10折交叉验证的性能
from sklearn.model_selection import cross_validate
best_models = dict()
for name in classifiers_:
model = classifiers_[name]
cv_results = cross_validate(model, train_df_lassoCV, Y.values, cv=10, return_estimator=True,
return_train_score=True)
test_results = []
for m in cv_results['estimator']:
test_results.append(m.score(test_df_lassoCV, Y_test.values))
# 保存在测试集上性能最好的模型
ind = np.argmax(test_results)
best_models[name] = cv_results['estimator'][ind]
print("模型 {} 经过10折交叉验证的性能(ACC)为 {:.4f}(训练集){:.4f}(验证集){:.4f}(测试集)".format(name, cv_results["train_score"].mean(),
cv_results["test_score"].mean(),
test_results[ind]))
```
模型 RandomForest 经过10折交叉验证的性能(ACC)为 1.0000(训练集)0.6617(验证集)0.6750(测试集)
模型 DecisionTree 经过10折交叉验证的性能(ACC)为 1.0000(训练集)0.6875(验证集)0.7500(测试集)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
模型 XGBoost 经过10折交叉验证的性能(ACC)为 1.0000(训练集)0.6421(验证集)0.6750(测试集)
模型 LogisticRegression 经过10折交叉验证的性能(ACC)为 0.6376(训练集)0.6029(验证集)0.6250(测试集)
模型 SVM 经过10折交叉验证的性能(ACC)为 0.6192(训练集)0.5842(验证集)0.6250(测试集)
```python
def metrics_multiclass(cm, average="macro"):
"""
计算多分类任务的sensitivity和specificity
average: {"macro", "micro"} 用于多分类的性能参数计算方式
'micro':
Calculate metrics globally by counting the total true positives, false negatives and false positives.
'macro':
Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.
"""
n_classes = cm.shape[0]
sen_tmp = []
spe_tmp = []
tp_tmp = 0
fn_tmp = 0
tn_tmp = 0
fp_tmp = 0
for i in range(n_classes):
# 逐步获取 真阳,假阳,真阴,假阴四个指标,并计算三个参数
ALL = np.sum(cm)
# 对角线上是正确预测的
TP = cm[i, i]
# 列加和减去正确预测是该类的假阳
FP = np.sum(cm[:, i]) - TP
# 行加和减去正确预测是该类的假阴
FN = np.sum(cm[i, :]) - TP
# 全部减去前面三个就是真阴
TN = ALL - TP - FP - FN
# 累积计算
tp_tmp = tp_tmp + TP
fp_tmp = fp_tmp + FP
fn_tmp = fn_tmp + FN
tn_tmp = tn_tmp + TN
sen_tmp.append(TP / (TP + FN))
spe_tmp.append(TN / (TN + FP))
if average == "macro":
sen = np.average(sen_tmp)
spe = np.average(spe_tmp)
else:
sen = tp_tmp / (tp_tmp + fn_tmp)
spe = tn_tmp / (tn_tmp + fp_tmp)
return sen, spe
```
```python
# 绘制训练集和测试集上的ROC曲线 (多分类计算OVR的Macro AUC)
#
# 参考 https://scikit-learn.org.cn/view/295.html
#
from sklearn.metrics import roc_curve, auc
from sklearn.metrics import confusion_matrix, f1_score
import pickle
# 绘制训练集和测试集上的ROC曲线 (多分类计算OVR的Macro AUC)
#
# 参考 https://scikit-learn.org.cn/view/295.html
#
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix, f1_score
import pickle
colors = ['aqua', 'darkorange', 'cornflowerblue', 'deeppink', 'green']
plt.figure(figsize=(14, 8))
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)
train_auc = []
test_auc = []
for i, name in enumerate(best_models):
model = best_models[name]
train_pred = model.predict(train_df_lassoCV)
test_pred = model.predict(test_df_lassoCV)
train_pred_prob = model.predict_proba(train_df_lassoCV)
test_pred_prob = model.predict_proba(test_df_lassoCV)
# 注意采用标签采用多分类的softmax形式
train_fpr, train_tpr, _ = roc_curve(Y_train_multi.ravel(), train_pred_prob.ravel())
train_auc.append(auc(train_fpr, train_tpr))
ax1.plot(train_fpr, train_tpr, color=colors[i], linestyle='-', linewidth=2,
label="{} (AUC={:.4f})".format(name, auc(train_fpr, train_tpr)))
test_fpr, test_tpr, _ = roc_curve(Y_test_multi.ravel(), test_pred_prob.ravel())
test_auc.append(auc(test_fpr, test_tpr))
ax2.plot(test_fpr, test_tpr, color=colors[i], linestyle='-', linewidth=2,
label="{} (AUC={:.4f})".format(name, auc(test_fpr, test_tpr)))
# 计算f1 score, sensitivity和specificity
train_f1 = f1_score(Y, train_pred, average='macro')
test_f1 = f1_score(Y_test, test_pred, average='macro')
train_cm = confusion_matrix(Y, train_pred)
test_cm = confusion_matrix(Y_test, test_pred)
train_sen, train_spe = metrics_multiclass(train_cm)
test_sen, test_spe = metrics_multiclass(test_cm)
print("模型 {} 经过10折交叉验证的性能为".format(name))
print(" AUC / f1 / sensitivity / specificity")
print("训练集 - {:.4f} {:.4f} {:.4f} {:.4f}".format(auc(train_fpr, train_tpr), train_f1, train_sen, train_spe))
print("测试集 - {:.4f} {:.4f} {:.4f} {:.4f}\n".format(auc(test_fpr, test_tpr), test_f1, test_sen, test_spe))
ax1.plot([0, 1], [0, 1], color='gray', lw=2, linestyle='--')
ax2.plot([0, 1], [0, 1], color='gray', lw=2, linestyle='--')
ax1.set_xlim([0.0, 1.0])
ax1.set_ylim([0.0, 1.05])
ax2.set_xlim([0.0, 1.0])
ax2.set_ylim([0.0, 1.05])
ax1.legend(loc=4)
ax2.legend(loc=4)
plt.show()
```
模型 RandomForest 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.9974 0.9480 0.9495 0.9788
测试集 - 0.8037 0.6574 0.6667 0.8411
模型 DecisionTree 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.9761 0.9638 0.9653 0.9846
测试集 - 0.8125 0.7467 0.7611 0.8744
模型 XGBoost 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.9940 0.9704 0.9691 0.9879
测试集 - 0.7866 0.6242 0.6463 0.8411
模型 LogisticRegression 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.8273 0.5979 0.5998 0.8120
测试集 - 0.7719 0.6157 0.6204 0.8051
模型 SVM 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.8132 0.5566 0.5607 0.7988
测试集 - 0.7694 0.6196 0.6352 0.8189
![png](3_files/3_6_1.png)
```python
# 定义非线性变换接口
def sigmoid(x):
return 1.0 / (1 + np.exp(-x))
def relu(x):
return x
def tanh(x):
return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
def sin(x):
return np.sin(x)
def cos(x):
return np.cos(x)
def softmax(x):
exps = np.exp(x - np.max(x, axis=-1, keepdims=True))
return exps / np.sum(exps, axis=-1, keepdims=True)
def softplus(x):
return np.log(1 + np.exp(x))
def elu(x, alpha=1.0):
return np.where(x < 0, alpha * (np.exp(x) - 1), x)
def swish(x):
return x * sigmoid(x)
def mish(x):
return x * np.tanh(softplus(x))
def gelu(x):
return 0.5 * x * (1 + np.tanh(np.sqrt(2 / np.pi) * (x + 0.044715 * np.power(x, 3))))
```
```python
# 定义Stacking+NT函数:
def Ensemble_add_feature(train, test, best_models):
train_ = np.zeros((train.shape[0], len(best_models ) + len(train_df_lassoCV.columns) ))
test_ = np.zeros((test.shape[0], len(best_models)+len(test_df_lassoCV.columns) ))
print(len(train_df_lassoCV))
train_[:,0:len(train_df_lassoCV.columns)] = train_df_lassoCV
test_[:,0:len(test_df_lassoCV.columns)] = test_df_lassoCV
for i, name in enumerate(best_models):
model = best_models[name]
train_pred = model.predict(train)
test_pred = model.predict(test)
# train_pred_prob = model.predict_proba(train_df_lassoCV)
# test_pred_prob = model.predict_proba(test_df_lassoCV)
## 新特征生成
# train_[:, len(train_df_lassoCV) + i] = train_pred ** 2
# test_[:, len(train_df_lassoCV) + i] = test_pred ** 2
# train_[:, len(best_models ) +i] = np.exp(train_pred)
# test_[:, len(best_models ) +i] = np.exp(test_pred)
train_[:, len(train_df_lassoCV.columns)+i] = sigmoid(train_pred)
test_[:,len(train_df_lassoCV.columns)+i] = sigmoid(test_pred)
# train_[:, len(train_df_lassoCV.columns)+i] = sin(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = sin(test_pred)
# train_[:, len(train_df_lassoCV.columns)+i] = cos(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = cos(test_pred)
# train_[:,len(train_df_lassoCV.columns)+i] = tanh(train_pred)
# test_[:,len(train_df_lassoCV.columns)+i] = tanh(test_pred)
# train_[:, len(train_df_lassoCV.columns)+i] = relu(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = relu(test_pred)
# softmax 效果不好
# train_[:, len(train_df_lassoCV.columns)+i] = softmax(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = softmax(test_pred)
# softplus
# train_[:, len(train_df_lassoCV.columns)+i] = softplus(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = softplus(test_pred)
# train_[:, len(train_df_lassoCV.columns)+i] = elu(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = elu(test_pred)
# train_[:, len(train_df_lassoCV.columns)+i] = swish(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = swish(test_pred)
# train_[:, len(train_df_lassoCV.columns)+i] = mish(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = mish(test_pred)
# train_[:, len(train_df_lassoCV.columns)+i] = gelu(train_pred)
# test_[:, len(train_df_lassoCV.columns)+i] = gelu(test_pred)
return train_, test_
```
```python
new_train, new_test = Ensemble_add_feature(train_df_lassoCV, test_df_lassoCV, best_models)
```
157
```python
# 训练集上10折交叉验证的性能
from sklearn.model_selection import cross_validate
new_best_models = dict()
cv = 10
for name in classifiers_:
model = classifiers_[name]
cv_results = cross_validate(model, new_train, Y.values, cv=cv, return_estimator=True,
return_train_score=True)
test_results = []
for m in cv_results['estimator']:
test_results.append(m.score(new_test, Y_test.values))
# 保存在测试集上性能最好的模型
ind = np.argmax(test_results)
new_best_models[name] = cv_results['estimator'][ind]
print("模型 {} 经过10折交叉验证的性能(ACC)为 {:.4f}(训练集){:.4f}(验证集){:.4f}(测试集)".format(name, cv_results["train_score"].mean(),
cv_results["test_score"].mean(),
test_results[ind]))
print()
new_train_auc = []
new_test_auc = []
for i, name in enumerate(new_best_models):
model = new_best_models[name]
train_pred = model.predict(new_train)
test_pred = model.predict(new_test)
train_pred_prob = model.predict_proba(new_train)
test_pred_prob = model.predict_proba(new_test)
# ACC
print("模型 {} 在训练集上的性能(ACC)为 {}".format(name, model.score(new_train, Y)))
print("模型 {} 在测试集上的性能(ACC)为 {}".format(name, model.score(new_test, Y_test)))
# 注意采用标签采用多分类的softmax形式
train_fpr, train_tpr, _ = roc_curve(Y_train_multi.ravel(), train_pred_prob.ravel())
new_train_auc.append(auc(train_fpr, train_tpr))
# ax1.plot(train_fpr, train_tpr, color=colors[i], linestyle='-', linewidth=2,
# label="{} (AUC={:.4f})".format(name, auc(train_fpr, train_tpr)))
test_fpr, test_tpr, _ = roc_curve(Y_test_multi.ravel(), test_pred_prob.ravel())
new_test_auc.append(auc(test_fpr, test_tpr))
# ax2.plot(test_fpr, test_tpr, color=colors[i], linestyle='-', linewidth=2,
# label="{} (AUC={:.4f})".format(name, auc(test_fpr, test_tpr)))
# 计算f1 score, sensitivity和specificity
train_f1 = f1_score(Y, train_pred, average='macro')
test_f1 = f1_score(Y_test, test_pred, average='macro')
train_cm = confusion_matrix(Y, train_pred)
test_cm = confusion_matrix(Y_test, test_pred)
train_sen, train_spe = metrics_multiclass(train_cm)
test_sen, test_spe = metrics_multiclass(test_cm)
print("模型 {} 经过10折交叉验证的性能为".format(name))
print(" AUC / f1 / sensitivity / specificity")
print("训练集 - {:.4f} {:.4f} {:.4f} {:.4f}".format(auc(train_fpr, train_tpr), train_f1, train_sen, train_spe))
print("测试集 - {:.4f} {:.4f} {:.4f} {:.4f}\n".format(auc(test_fpr, test_tpr), test_f1, test_sen, test_spe))
```
模型 RandomForest 经过10折交叉验证的性能(ACC)为 1.0000(训练集)0.9433(验证集)0.7250(测试集)
模型 DecisionTree 经过10折交叉验证的性能(ACC)为 1.0000(训练集)0.8979(验证集)0.7500(测试集)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
模型 XGBoost 经过10折交叉验证的性能(ACC)为 1.0000(训练集)0.8979(验证集)0.7500(测试集)
模型 LogisticRegression 经过10折交叉验证的性能(ACC)为 0.9186(训练集)0.8904(验证集)0.7750(测试集)
模型 SVM 经过10折交叉验证的性能(ACC)为 0.9816(训练集)0.9742(验证集)0.7750(测试集)
模型 RandomForest 在训练集上的性能(ACC)为 1.0
模型 RandomForest 在测试集上的性能(ACC)为 0.725
模型 RandomForest 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 1.0000 1.0000 1.0000 1.0000
测试集 - 0.8409 0.7020 0.7130 0.8617
模型 DecisionTree 在训练集上的性能(ACC)为 0.9681528662420382
模型 DecisionTree 在测试集上的性能(ACC)为 0.75
模型 DecisionTree 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.9761 0.9638 0.9653 0.9846
测试集 - 0.8125 0.7467 0.7611 0.8744
模型 XGBoost 在训练集上的性能(ACC)为 0.9681528662420382
模型 XGBoost 在测试集上的性能(ACC)为 0.75
模型 XGBoost 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.9995 0.9638 0.9653 0.9846
测试集 - 0.8644 0.7467 0.7611 0.8744
模型 LogisticRegression 在训练集上的性能(ACC)为 0.9171974522292994
模型 LogisticRegression 在测试集上的性能(ACC)为 0.775
模型 LogisticRegression 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.9894 0.8986 0.8876 0.9537
测试集 - 0.8562 0.7676 0.7796 0.8887
模型 SVM 在训练集上的性能(ACC)为 0.9808917197452229
模型 SVM 在测试集上的性能(ACC)为 0.775
模型 SVM 经过10折交叉验证的性能为
AUC / f1 / sensitivity / specificity
训练集 - 0.9990 0.9800 0.9820 0.9905
测试集 - 0.8703 0.7661 0.7796 0.8920
```python
# 训练集上10折交叉验证的性能
from sklearn.model_selection import cross_validate
best_models = dict()
for name in classifiers_:
model = classifiers_[name]
cv_results = cross_validate(model, train_df_lassoCV, Y.values, cv=10, return_estimator=True,
return_train_score=True)
test_results = []
for m in cv_results['estimator']:
test_results.append(m.score(test_df_lassoCV, Y_test.values))
# 保存在测试集上性能最好的模型
ind = np.argmax(test_results)
best_models[name] = cv_results['estimator'][ind]
print("模型 {} 经过10折交叉验证的性能(ACC)为 {:.4f}(训练集){:.4f}(验证集){:.4f}(测试集)".format(name, cv_results["train_score"].mean(),
cv_results["test_score"].mean(),
test_results[ind]))
```
```python
# 定义一个class:
# 存储最优基模型的def
# 非线性变换的def
# 元模型进行训练的def
base_models = {}
meta_model = {}
from sklearn.model_selection import cross_validate
class StackingNonlinearTransformations():
def __init__(self, base_models, meta_model, n_folds=10):
self.base_models = base_models
self.meta_model = meta_model
self.n_folds = n_folds
def NonlinearTransformations(self, x, NT, **kwargs):
if NT == None:
return x
elif NT == "relu":
return x
elif NT == "sigmoid":
return 1.0 / (1 + np.exp(-x))
elif NT == "elu":
if 'alpha' not in kwargs:
raise ValueError('alpha is not given')
alpha = kwargs["alpha"]
return np.where(x < 0, alpha * (np.exp(x) - 1), x)
elif NT == "tanh":
return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
elif NT == "sin":
return np.sin(x)
elif NT == "cos":
return np.cos(x)
elif NT == "softmax":
exps = np.exp(x - np.max(x, axis=-1, keepdims=True))
return exps/np.sum(exps, axis=-1, keepdims=True)
elif NT == "softplus":
return np.log(1 + np.exp(x))
def base_model_fit(self, train_X, train_y, test_X, test_y,cv=10):
best_models = dict()
for name in self.base_models.keys():
model = self.base_models[name]
cv_results = cross_validate(model, train_X, train_y.values, cv=cv, return_estimator=True, return_train_score=True)
test_results = []
for m in cv_results['estimator']:
test_results.append(m.score(test_X, test_y.values))
# 保存在测试集上性能最好的模型
ind = np.argmax(test_results)
best_models[name] = cv_results['estimator'][ind]
train_ = np.zeros((train_X.shape[0], len(self.base_models ) + len(train_X.columns)))
test_ = np.zeros((test_X.shape[0], len(self.base_models) + len(test_X.columns)))
train_[:,0:len(train_X.columns)] = train_X
test_[:,0:len(test_X.columns)] = test_X
for i, name in enumerate(best_models):
model = best_models[name]
train_pred = model.predict(train_X)
test_pred = model.predict(test_X)
train_[:, len(train_X.columns)+i] = self.NonlinearTransformations(train_pred,"sigmoid")
test_[:,len(test_X.columns)+i] = self.NonlinearTransformations(test_pred,"sigmoid")
return train_, test_
def fit(self, train_X, train_y, test_X, test_y, cv=10):
new_train, new_test = self.base_model_fit(train_X, train_y, test_X, test_y,cv)
model = list(self.meta_model.values())[0]
cv_results = cross_validate(model, new_train, train_y.values, cv=cv, return_estimator=True, return_train_score=True)
test_results = []
for m in cv_results['estimator']:
test_results.append(m.score(new_test, test_y.values))
ind = np.argmax(test_results)
new_best_models = cv_results['estimator'][ind]
model = new_best_models
train_pred = model.predict(new_train)
test_pred = model.predict(new_test)
train_pred_prob = model.predict_proba(new_train)
test_pred_prob = model.predict_proba(new_test)
return train_pred, test_pred, train_pred_prob, test_pred_prob
```
```python
meta_model = {'LogisticRegression':LogisticRegression(random_state=random_seed)}
base_models = classifiers_
SNT = StackingNonlinearTransformations(base_models, meta_model)
train_pred, test_pred, train_pred_prob, test_pred_prob = SNT.fit(train_X=train_df_lassoCV, train_y=Y, test_X=test_df_lassoCV, test_y=Y_test)
print(train_pred, test_pred, train_pred_prob, test_pred_prob)
from sklearn.metrics import roc_curve, auc
test_fpr, test_tpr, _ = roc_curve(Y_test_multi.ravel(), test_pred_prob.ravel())
print(auc(test_fpr, test_tpr))
```
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
warnings.warn(label_encoder_deprecation_msg, UserWarning)
d:\Anaconda\envs\Tensorflow\lib\site-packages\xgboost\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
from pandas import MultiIndex, Int64Index
[0 0 0 0 0 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 0 0 0 1 0 0 1 0 2 2 2 1 0 1 2 0 2
2 1 2 2 2 1 1 0 2 1 2 2 0 2 0 0 2 2 0 0 2 2 1 2 0 2 2 1 0 0 0 0 1 1 2 2 0
0 1 2 2 2 0 2 2 2 0 1 0 0 0 0 2 2 1 0 2 0 2 1 2 0 2 2 1 1 0 2 2 2 2 2 0 2
0 2 1 2 2 0 2 0 0 2 2 2 0 2 2 1 0 2 2 2 2 2 0 1 2 1 0 2 2 2 1 2 1 1 0 2 2
0 2 2 0 0 2 1 2 0] [0 1 1 1 0 2 1 0 2 0 0 2 0 0 2 0 0 0 2 2 2 2 1 2 1 0 1 0 0 1 2 2 0 2 0 1 2
2 1 2] [[7.98786397e-01 1.69605435e-01 3.16081676e-02]
[8.03607989e-01 9.40798583e-02 1.02312152e-01]
[7.52347690e-01 2.11163387e-01 3.64889232e-02]
[7.91619966e-01 1.71735626e-01 3.66444083e-02]
[8.66192574e-01 9.05399411e-02 4.32674849e-02]
[2.64289472e-02 6.23805865e-02 9.11190466e-01]
[6.58321922e-03 1.03126884e-02 9.83104092e-01]
[5.56714002e-06 3.13986117e-07 9.99994119e-01]
[6.31876006e-02 2.74163329e-01 6.62649071e-01]
[9.03391815e-02 3.84241497e-01 5.25419322e-01]
[1.29275193e-02 5.95725018e-02 9.27499979e-01]
[2.73085475e-02 1.45869371e-01 8.26822082e-01]
[4.35942768e-02 4.12456497e-01 5.43949227e-01]
[1.85891093e-01 4.95132076e-01 3.18976831e-01]
[2.21323474e-02 3.38608300e-02 9.44006823e-01]
[1.87873110e-01 3.84692407e-01 4.27434483e-01]
[2.68811165e-01 2.84499491e-01 4.46689344e-01]
[2.59144723e-02 2.87414209e-01 6.86671319e-01]
[2.06386607e-01 3.95290587e-01 3.98322806e-01]
[3.62890421e-02 6.62503221e-02 8.97460636e-01]
[7.87740453e-01 1.80174240e-01 3.20853068e-02]
[7.00242210e-01 2.34947665e-01 6.48101245e-02]
[7.37339484e-01 1.69966319e-01 9.26941969e-02]
[2.77288314e-01 3.96972650e-01 3.25739036e-01]
[6.69567838e-01 2.66316340e-01 6.41158219e-02]
[7.47477430e-01 1.50726402e-01 1.01796167e-01]
[8.70045602e-02 5.01211186e-01 4.11784254e-01]
[8.68921831e-01 8.91031275e-02 4.19750416e-02]
[3.25901714e-02 2.42757069e-01 7.24652760e-01]
[3.53397592e-02 2.58418074e-01 7.06242167e-01]
[6.81983930e-02 1.91605088e-01 7.40196518e-01]
[2.29303699e-01 5.14796613e-01 2.55899688e-01]
[7.28126469e-01 2.42286576e-01 2.95869548e-02]
[2.11518519e-01 4.72495561e-01 3.15985920e-01]
[6.86771750e-02 2.41202412e-01 6.90120413e-01]
[4.56439625e-01 2.92334204e-01 2.51226171e-01]
[2.35951003e-03 8.94287172e-03 9.88697618e-01]
[5.84714019e-03 3.87784689e-02 9.55374391e-01]
[2.32468741e-01 5.43872453e-01 2.23658805e-01]
[1.01607216e-04 8.01645889e-05 9.99818228e-01]
[7.37470020e-03 2.01742680e-02 9.72451032e-01]
[1.75437722e-02 7.70095335e-02 9.05446694e-01]
[1.51794269e-01 6.36902364e-01 2.11303367e-01]
[2.28630779e-01 4.54513600e-01 3.16855621e-01]
[7.45641217e-01 1.85859169e-01 6.84996133e-02]
[6.52263123e-02 3.41753034e-01 5.93020654e-01]
[2.01106012e-01 5.04824073e-01 2.94069915e-01]
[6.56315924e-04 9.84681766e-04 9.98359002e-01]
[4.66400475e-02 3.18332409e-01 6.35027543e-01]
[8.23097715e-01 1.49822781e-01 2.70795036e-02]
[2.41541421e-05 9.22716900e-06 9.99966619e-01]
[4.46125562e-01 3.96839242e-01 1.57035197e-01]
[7.68979315e-01 1.90777911e-01 4.02427742e-02]
[1.67097338e-02 2.46627687e-02 9.58627497e-01]
[6.55957679e-04 1.33265055e-03 9.98011392e-01]
[7.89041958e-01 1.81510450e-01 2.94475925e-02]
[4.76881159e-01 3.82695168e-01 1.40423673e-01]
[1.38957721e-01 3.05852153e-01 5.55190126e-01]
[5.78196942e-04 3.49984972e-05 9.99386805e-01]
[3.68203364e-01 3.83338959e-01 2.48457677e-01]
[6.08174150e-02 2.64501563e-01 6.74681022e-01]
[9.11078059e-01 5.92273776e-02 2.96945630e-02]
[3.69622029e-02 1.64157386e-01 7.98880411e-01]
[7.58531105e-02 3.96294748e-01 5.27852141e-01]
[1.95329341e-01 5.55302710e-01 2.49367949e-01]
[8.00659609e-01 1.60786124e-01 3.85542674e-02]
[6.98110394e-01 2.34441029e-01 6.74485774e-02]
[7.65690794e-01 2.03125216e-01 3.11839894e-02]
[7.16789649e-01 2.03575981e-01 7.96343699e-02]
[2.52147856e-01 4.95772281e-01 2.52079863e-01]
[2.33751947e-01 5.26615370e-01 2.39632682e-01]
[3.48549836e-02 1.40844296e-01 8.24300720e-01]
[4.31851108e-04 5.44385512e-05 9.99513710e-01]
[7.08319324e-01 2.26379874e-01 6.53008018e-02]
[7.85867768e-01 1.15875909e-01 9.82563230e-02]
[1.49285446e-01 6.43352977e-01 2.07361577e-01]
[4.77859030e-02 3.61083347e-01 5.91130750e-01]
[1.32601339e-05 1.92751376e-05 9.99967465e-01]
[8.69515058e-05 3.01424280e-05 9.99882906e-01]
[7.73788515e-01 1.99475846e-01 2.67356393e-02]
[2.52403851e-02 1.22695333e-01 8.52064282e-01]
[6.62111189e-02 3.13246793e-01 6.20542088e-01]
[3.99541391e-02 2.95868376e-01 6.64177485e-01]
[8.22532255e-01 1.45832130e-01 3.16356146e-02]
[2.63126961e-01 4.46488003e-01 2.90385035e-01]
[8.58027770e-01 1.09849800e-01 3.21224294e-02]
[7.10636412e-01 2.23726446e-01 6.56371416e-02]
[8.12740585e-01 8.62682669e-02 1.00991148e-01]
[8.19398349e-01 1.57370876e-01 2.32307747e-02]
[5.96714067e-02 2.25097015e-01 7.15231578e-01]
[2.92338228e-02 1.06116494e-01 8.64649683e-01]
[1.11585307e-01 6.75251710e-01 2.13162983e-01]
[8.31464270e-01 1.46748930e-01 2.17868003e-02]
[6.74214901e-02 3.31668695e-01 6.00909815e-01]
[7.00535288e-01 2.56306921e-01 4.31577905e-02]
[1.42692784e-02 3.34527111e-03 9.82385450e-01]
[1.77811887e-01 6.01371414e-01 2.20816699e-01]
[4.86696249e-02 3.10275524e-01 6.41054851e-01]
[7.75679989e-01 1.93388835e-01 3.09311763e-02]
[2.16490047e-03 5.98298366e-05 9.97775270e-01]
[1.24324901e-05 2.89506180e-06 9.99984672e-01]
[2.22369795e-01 4.57757617e-01 3.19872588e-01]
[2.05810905e-01 4.87066088e-01 3.07123008e-01]
[8.74034657e-01 9.35941514e-02 3.23711917e-02]
[3.67874915e-02 2.13302533e-01 7.49909975e-01]
[3.59052095e-02 1.78350455e-01 7.85744335e-01]
[2.20894555e-01 3.55160584e-01 4.23944861e-01]
[5.24633391e-03 4.96205219e-02 9.45133144e-01]
[5.27203325e-02 9.73688814e-02 8.49910786e-01]
[8.17122662e-01 1.39414693e-01 4.34626442e-02]
[3.42552164e-02 2.30473298e-01 7.35271485e-01]
[8.01768720e-01 1.70115614e-01 2.81156656e-02]
[2.91515710e-01 2.86419334e-01 4.22064956e-01]
[3.01857693e-01 4.18977649e-01 2.79164658e-01]
[1.31739300e-02 2.16117025e-02 9.65214368e-01]
[5.00401636e-03 3.87830907e-03 9.91117675e-01]
[7.44886182e-01 2.11559519e-01 4.35542991e-02]
[5.95253556e-02 3.91207561e-01 5.49267083e-01]
[8.66079551e-01 1.06102489e-01 2.78179601e-02]
[3.65878132e-01 3.46774779e-01 2.87347090e-01]
[7.18653042e-06 2.43778121e-06 9.99990376e-01]
[8.86193319e-04 6.37648441e-05 9.99050042e-01]
[2.39809501e-01 3.63195508e-01 3.96994992e-01]
[7.48960624e-01 2.21827781e-01 2.92115956e-02]
[3.70626424e-02 1.74146878e-01 7.88790480e-01]
[3.35477348e-02 4.78102597e-01 4.88349669e-01]
[1.81724731e-01 5.78662138e-01 2.39613131e-01]
[8.44779549e-01 1.34731231e-01 2.04892198e-02]
[4.29899032e-02 3.46649330e-01 6.10360767e-01]
[1.25110049e-02 6.27672524e-02 9.24721743e-01]
[2.54349517e-02 2.41452149e-01 7.33112900e-01]
[4.66512604e-02 1.97634867e-01 7.55713873e-01]
[2.65439747e-02 8.61988767e-02 8.87257149e-01]
[7.16787257e-01 2.45763041e-01 3.74497015e-02]
[1.95515717e-01 4.99840326e-01 3.04643957e-01]
[2.31213016e-03 5.68899923e-03 9.91998871e-01]
[3.02484695e-01 3.67696335e-01 3.29818969e-01]
[6.03254895e-01 3.27745389e-01 6.89997166e-02]
[4.84823524e-02 3.72184801e-01 5.79332847e-01]
[3.88687483e-02 2.27865214e-01 7.33266038e-01]
[3.72358130e-02 1.43826694e-01 8.18937493e-01]
[4.22150974e-01 5.09967334e-01 6.78816923e-02]
[1.44358511e-05 3.53400311e-06 9.99982030e-01]
[2.93840559e-01 4.35732341e-01 2.70427100e-01]
[3.08374499e-01 5.01335872e-01 1.90289628e-01]
[5.50171673e-01 3.55933713e-01 9.38946137e-02]
[1.00870996e-01 4.14954816e-01 4.84174188e-01]
[2.43878907e-01 2.47910899e-01 5.08210194e-01]
[7.84796219e-01 1.78989131e-01 3.62146502e-02]
[6.17529014e-02 3.38641137e-01 5.99605961e-01]
[2.32779319e-01 2.78395670e-01 4.88825011e-01]
[6.23691713e-01 3.29952558e-01 4.63557298e-02]
[6.48095343e-01 3.13361734e-01 3.85429224e-02]
[2.98490899e-01 3.40569438e-01 3.60939664e-01]
[2.47638702e-01 4.96969705e-01 2.55391593e-01]
[3.59801681e-05 3.89351530e-05 9.99925085e-01]
[8.22010958e-01 1.42218397e-01 3.57706458e-02]] [[7.57690319e-01 2.15765702e-01 2.65439787e-02]
[2.24236188e-01 4.56931996e-01 3.18831817e-01]
[4.51783852e-01 4.86295381e-01 6.19207666e-02]
[2.67759413e-01 4.95781572e-01 2.36459015e-01]
[8.93593736e-01 6.83144804e-02 3.80917834e-02]
[4.56789989e-02 1.51049024e-01 8.03271977e-01]
[3.48646077e-01 4.69162495e-01 1.82191428e-01]
[7.70371069e-01 1.92453665e-01 3.71752660e-02]
[2.92361720e-02 1.36400919e-01 8.34362909e-01]
[7.91777546e-01 1.78397308e-01 2.98251461e-02]
[7.05172587e-01 2.50739922e-01 4.40874910e-02]
[6.44243061e-04 1.15470282e-03 9.98201054e-01]
[8.33349584e-01 1.39406620e-01 2.72437955e-02]
[7.94729027e-01 1.76119383e-01 2.91515906e-02]
[7.62098585e-02 1.56504593e-01 7.67285548e-01]
[6.26567093e-01 3.42803185e-01 3.06297217e-02]
[7.47227843e-01 2.14844743e-01 3.79274140e-02]
[7.61050009e-01 2.13900447e-01 2.50495442e-02]
[3.24771495e-02 4.23211195e-01 5.44311656e-01]
[1.18963573e-02 5.23715238e-02 9.35732119e-01]
[2.13817593e-05 1.02287198e-05 9.99968390e-01]
[4.50874319e-01 3.09577781e-02 5.18167903e-01]
[2.77648676e-01 4.51336036e-01 2.71015288e-01]
[1.28333994e-02 4.41898528e-02 9.42976748e-01]
[1.91456101e-01 4.05978728e-01 4.02565170e-01]
[6.58309566e-01 1.98781718e-01 1.42908716e-01]
[2.24829634e-01 4.40746040e-01 3.34424326e-01]
[6.29917199e-01 2.35113703e-01 1.34969098e-01]
[7.66974837e-01 2.08536414e-01 2.44887488e-02]
[4.16676999e-01 4.80316138e-01 1.03006862e-01]
[1.58223891e-03 2.31608519e-03 9.96101676e-01]
[2.58775164e-04 2.42472774e-05 9.99716978e-01]
[8.40128641e-01 1.26973885e-01 3.28974738e-02]
[7.21285970e-03 2.86309548e-02 9.64156185e-01]
[6.52866666e-01 3.24764698e-01 2.23686356e-02]
[2.41687444e-01 4.72064771e-01 2.86247785e-01]
[8.28419375e-02 4.11308528e-01 5.05849534e-01]
[4.40553422e-05 2.35332311e-05 9.99932411e-01]
[2.78964612e-01 4.59652130e-01 2.61383258e-01]
[2.97970311e-02 2.75009795e-02 9.42701989e-01]]
0.85625
# upload log
0.0.4 更新正确的Class调用方法
Raw data
{
"_id": null,
"home_page": "https://gitee.com/caoxinyu123/prostate_cancer_related_research/blob/master/stackingnonlineartransformations.py",
"name": "StackingNonlinearTransformations",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "python,windows,mac,linux",
"author": "caoxinyu",
"author_email": "398424191@qqc.om",
"download_url": "",
"platform": null,
"description": "```python\r\n# \u6570\u636e\u5bfc\u5165\r\nimport numpy as np\r\nimport pandas as pd\r\n\r\ntrain_path = r\"C:\\Users\\Admin\\Desktop\\data\\miccai_data\\train_P_value_8.xlsx\"\r\ntest_path = r\"C:\\Users\\Admin\\Desktop\\data\\miccai_data\\test_P_value_8.xlsx\"\r\n\r\ntrain_df = pd.read_excel(train_path)\r\ntest_df = pd.read_excel(test_path)\r\n\r\ntrain_df_lassoCV = train_df[train_df.columns[2:]]\r\nY = train_df['\u7efc\u5408\u6307\u5357\u4e0e\u6cbb\u7597\u7684\u5206\u7c7b\u65b9\u6cd5']\r\n\r\ntest_df_lassoCV = test_df[test_df.columns[2:]]\r\nY_test = test_df['\u7efc\u5408\u6307\u5357\u4e0e\u6cbb\u7597\u7684\u5206\u7c7b\u65b9\u6cd5']\r\n\r\n\r\n```\r\n\r\n\r\n```python\r\n# \u5efa\u7acb\u6a21\u578b\u6c60\r\n\r\n# \u673a\u5668\u5b66\u4e60\u5206\u7c7b\u6a21\u578b\u5efa\u6a21\r\nfrom sklearn.svm import SVC\r\nfrom sklearn.ensemble import RandomForestClassifier\r\nfrom xgboost import XGBClassifier\r\nfrom sklearn.tree import DecisionTreeClassifier\r\nfrom sklearn.ensemble import AdaBoostClassifier\r\nfrom sklearn.linear_model import LogisticRegression\r\n\r\n\r\nrandom_seed = 2022\r\nn_classes = [0, 1, 2]\r\nclassifiers_ = {\r\n 'RandomForest': RandomForestClassifier(random_state=random_seed, n_estimators=100, max_depth=None),\r\n 'DecisionTree': DecisionTreeClassifier(random_state=random_seed),\r\n 'XGBoost': XGBClassifier(reg_lambda=0.5,\r\n max_depth=8,\r\n learning_rate=0.93,\r\n n_estimators=100, \r\n min_child_weight=1,\r\n gamma=0.3,\r\n # min_weight=5,\r\n colsample_bytree=0.8,\r\n verbosity=0,\r\n num_class=len(n_classes),\r\n objective='multi:softmax',\r\n random_state=random_seed),\r\n # 'AdaBoost': AdaBoostClassifier(n_estimators=100, learning_rate=0.9, random_state=random_seed),\r\n 'LogisticRegression':LogisticRegression(random_state=random_seed),\r\n 'SVM': SVC(kernel='linear', C=1, probability=True, tol=1.e-4, random_state=random_seed),\r\n}\r\n\r\n```\r\n\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\scipy\\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.2\r\n warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\compat.py:31: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n \r\n\r\n\r\n```python\r\nfrom sklearn.preprocessing import label_binarize\r\n# \u66f4\u65b0\u6837\u672c\u6807\u7b7e\u4e3a\u591a\u5206\u7c7b\u5f62\u5f0f\r\nY_train_multi = label_binarize(Y, classes=n_classes)\r\nY_test_multi = label_binarize(Y_test, classes=n_classes)\r\n\r\n```\r\n\r\n\r\n```python\r\n# \u89c2\u5bdf\u673a\u5668\u5b66\u4e60\u6a21\u578b\u5728\u8bad\u7ec3\u96c6/\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd\r\nfor name in classifiers_:\r\n model = classifiers_[name]\r\n model.fit(train_df_lassoCV, Y)\r\n print(\"\u6a21\u578b {} \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a {}\".format(name, model.score(train_df_lassoCV, Y)))\r\n\r\n print(\"\u6a21\u578b {} \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a {}\".format(name, model.score(test_df_lassoCV, Y_test)))\r\nprint()\r\n```\r\n\r\n \u6a21\u578b RandomForest \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 1.0\r\n \u6a21\u578b RandomForest \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.625\r\n \u6a21\u578b DecisionTree \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 1.0\r\n \u6a21\u578b DecisionTree \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.7\r\n \u6a21\u578b XGBoost \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 1.0\r\n \u6a21\u578b XGBoost \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.7\r\n \u6a21\u578b LogisticRegression \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.6242038216560509\r\n \u6a21\u578b LogisticRegression \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.6\r\n \u6a21\u578b SVM \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.6305732484076433\r\n \u6a21\u578b SVM \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.55\r\n \r\n \r\n\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n \r\n\r\n\r\n```python\r\n# \u8bad\u7ec3\u96c6\u4e0a10\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\r\nfrom sklearn.model_selection import cross_validate\r\n\r\nbest_models = dict()\r\nfor name in classifiers_:\r\n model = classifiers_[name]\r\n cv_results = cross_validate(model, train_df_lassoCV, Y.values, cv=10, return_estimator=True,\r\n return_train_score=True)\r\n test_results = []\r\n for m in cv_results['estimator']:\r\n test_results.append(m.score(test_df_lassoCV, Y_test.values))\r\n\r\n # \u4fdd\u5b58\u5728\u6d4b\u8bd5\u96c6\u4e0a\u6027\u80fd\u6700\u597d\u7684\u6a21\u578b\r\n ind = np.argmax(test_results)\r\n best_models[name] = cv_results['estimator'][ind]\r\n print(\"\u6a21\u578b {} \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a {:.4f}\uff08\u8bad\u7ec3\u96c6\uff09{:.4f}\uff08\u9a8c\u8bc1\u96c6\uff09{:.4f}\uff08\u6d4b\u8bd5\u96c6\uff09\".format(name, cv_results[\"train_score\"].mean(),\r\n cv_results[\"test_score\"].mean(),\r\n test_results[ind]))\r\n\r\n\r\n```\r\n\r\n \u6a21\u578b RandomForest \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 1.0000\uff08\u8bad\u7ec3\u96c6\uff090.6617\uff08\u9a8c\u8bc1\u96c6\uff090.6750\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \u6a21\u578b DecisionTree \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 1.0000\uff08\u8bad\u7ec3\u96c6\uff090.6875\uff08\u9a8c\u8bc1\u96c6\uff090.7500\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \r\n\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n \r\n\r\n \u6a21\u578b XGBoost \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 1.0000\uff08\u8bad\u7ec3\u96c6\uff090.6421\uff08\u9a8c\u8bc1\u96c6\uff090.6750\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \u6a21\u578b LogisticRegression \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 0.6376\uff08\u8bad\u7ec3\u96c6\uff090.6029\uff08\u9a8c\u8bc1\u96c6\uff090.6250\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \u6a21\u578b SVM \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 0.6192\uff08\u8bad\u7ec3\u96c6\uff090.5842\uff08\u9a8c\u8bc1\u96c6\uff090.6250\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \r\n\r\n\r\n```python\r\ndef metrics_multiclass(cm, average=\"macro\"):\r\n \"\"\"\r\n \u8ba1\u7b97\u591a\u5206\u7c7b\u4efb\u52a1\u7684sensitivity\u548cspecificity\r\n average: {\"macro\", \"micro\"} \u7528\u4e8e\u591a\u5206\u7c7b\u7684\u6027\u80fd\u53c2\u6570\u8ba1\u7b97\u65b9\u5f0f\r\n 'micro':\r\n Calculate metrics globally by counting the total true positives, false negatives and false positives.\r\n 'macro':\r\n Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.\r\n \"\"\"\r\n n_classes = cm.shape[0]\r\n sen_tmp = []\r\n spe_tmp = []\r\n tp_tmp = 0\r\n fn_tmp = 0\r\n tn_tmp = 0\r\n fp_tmp = 0\r\n for i in range(n_classes):\r\n # \u9010\u6b65\u83b7\u53d6 \u771f\u9633\uff0c\u5047\u9633\uff0c\u771f\u9634\uff0c\u5047\u9634\u56db\u4e2a\u6307\u6807\uff0c\u5e76\u8ba1\u7b97\u4e09\u4e2a\u53c2\u6570\r\n ALL = np.sum(cm)\r\n # \u5bf9\u89d2\u7ebf\u4e0a\u662f\u6b63\u786e\u9884\u6d4b\u7684\r\n TP = cm[i, i]\r\n # \u5217\u52a0\u548c\u51cf\u53bb\u6b63\u786e\u9884\u6d4b\u662f\u8be5\u7c7b\u7684\u5047\u9633\r\n FP = np.sum(cm[:, i]) - TP\r\n # \u884c\u52a0\u548c\u51cf\u53bb\u6b63\u786e\u9884\u6d4b\u662f\u8be5\u7c7b\u7684\u5047\u9634\r\n FN = np.sum(cm[i, :]) - TP\r\n # \u5168\u90e8\u51cf\u53bb\u524d\u9762\u4e09\u4e2a\u5c31\u662f\u771f\u9634\r\n TN = ALL - TP - FP - FN\r\n\r\n # \u7d2f\u79ef\u8ba1\u7b97\r\n tp_tmp = tp_tmp + TP\r\n fp_tmp = fp_tmp + FP\r\n fn_tmp = fn_tmp + FN\r\n tn_tmp = tn_tmp + TN\r\n\r\n sen_tmp.append(TP / (TP + FN))\r\n spe_tmp.append(TN / (TN + FP))\r\n\r\n if average == \"macro\":\r\n sen = np.average(sen_tmp)\r\n spe = np.average(spe_tmp)\r\n else:\r\n sen = tp_tmp / (tp_tmp + fn_tmp)\r\n spe = tn_tmp / (tn_tmp + fp_tmp)\r\n\r\n return sen, spe\r\n```\r\n\r\n\r\n```python\r\n# \u7ed8\u5236\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\u4e0a\u7684ROC\u66f2\u7ebf \uff08\u591a\u5206\u7c7b\u8ba1\u7b97OVR\u7684Macro AUC\uff09\r\n#\r\n# \u53c2\u8003 https://scikit-learn.org.cn/view/295.html\r\n#\r\nfrom sklearn.metrics import roc_curve, auc\r\nfrom sklearn.metrics import confusion_matrix, f1_score\r\nimport pickle\r\n\r\n# \u7ed8\u5236\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\u4e0a\u7684ROC\u66f2\u7ebf \uff08\u591a\u5206\u7c7b\u8ba1\u7b97OVR\u7684Macro AUC\uff09\r\n#\r\n# \u53c2\u8003 https://scikit-learn.org.cn/view/295.html\r\n#\r\nfrom sklearn.metrics import roc_curve, auc\r\nimport matplotlib.pyplot as plt\r\nfrom sklearn.metrics import confusion_matrix, f1_score\r\nimport pickle\r\n\r\ncolors = ['aqua', 'darkorange', 'cornflowerblue', 'deeppink', 'green']\r\nplt.figure(figsize=(14, 8))\r\nax1 = plt.subplot(121)\r\nax2 = plt.subplot(122)\r\ntrain_auc = []\r\ntest_auc = []\r\nfor i, name in enumerate(best_models):\r\n model = best_models[name]\r\n train_pred = model.predict(train_df_lassoCV)\r\n test_pred = model.predict(test_df_lassoCV)\r\n train_pred_prob = model.predict_proba(train_df_lassoCV)\r\n test_pred_prob = model.predict_proba(test_df_lassoCV)\r\n\r\n # \u6ce8\u610f\u91c7\u7528\u6807\u7b7e\u91c7\u7528\u591a\u5206\u7c7b\u7684softmax\u5f62\u5f0f\r\n train_fpr, train_tpr, _ = roc_curve(Y_train_multi.ravel(), train_pred_prob.ravel())\r\n train_auc.append(auc(train_fpr, train_tpr))\r\n ax1.plot(train_fpr, train_tpr, color=colors[i], linestyle='-', linewidth=2,\r\n label=\"{} (AUC={:.4f})\".format(name, auc(train_fpr, train_tpr)))\r\n\r\n test_fpr, test_tpr, _ = roc_curve(Y_test_multi.ravel(), test_pred_prob.ravel())\r\n test_auc.append(auc(test_fpr, test_tpr))\r\n ax2.plot(test_fpr, test_tpr, color=colors[i], linestyle='-', linewidth=2,\r\n label=\"{} (AUC={:.4f})\".format(name, auc(test_fpr, test_tpr)))\r\n\r\n # \u8ba1\u7b97f1 score, sensitivity\u548cspecificity\r\n train_f1 = f1_score(Y, train_pred, average='macro')\r\n test_f1 = f1_score(Y_test, test_pred, average='macro')\r\n\r\n train_cm = confusion_matrix(Y, train_pred)\r\n test_cm = confusion_matrix(Y_test, test_pred)\r\n train_sen, train_spe = metrics_multiclass(train_cm)\r\n test_sen, test_spe = metrics_multiclass(test_cm)\r\n\r\n print(\"\u6a21\u578b {} \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\".format(name))\r\n print(\" AUC / f1 / sensitivity / specificity\")\r\n print(\"\u8bad\u7ec3\u96c6 - {:.4f} {:.4f} {:.4f} {:.4f}\".format(auc(train_fpr, train_tpr), train_f1, train_sen, train_spe))\r\n print(\"\u6d4b\u8bd5\u96c6 - {:.4f} {:.4f} {:.4f} {:.4f}\\n\".format(auc(test_fpr, test_tpr), test_f1, test_sen, test_spe))\r\n\r\nax1.plot([0, 1], [0, 1], color='gray', lw=2, linestyle='--')\r\nax2.plot([0, 1], [0, 1], color='gray', lw=2, linestyle='--')\r\nax1.set_xlim([0.0, 1.0])\r\nax1.set_ylim([0.0, 1.05])\r\nax2.set_xlim([0.0, 1.0])\r\nax2.set_ylim([0.0, 1.05])\r\nax1.legend(loc=4)\r\nax2.legend(loc=4)\r\nplt.show()\r\n\r\n```\r\n\r\n \u6a21\u578b RandomForest \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.9974 0.9480 0.9495 0.9788\r\n \u6d4b\u8bd5\u96c6 - 0.8037 0.6574 0.6667 0.8411\r\n \r\n \u6a21\u578b DecisionTree \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.9761 0.9638 0.9653 0.9846\r\n \u6d4b\u8bd5\u96c6 - 0.8125 0.7467 0.7611 0.8744\r\n \r\n \u6a21\u578b XGBoost \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.9940 0.9704 0.9691 0.9879\r\n \u6d4b\u8bd5\u96c6 - 0.7866 0.6242 0.6463 0.8411\r\n \r\n \u6a21\u578b LogisticRegression \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.8273 0.5979 0.5998 0.8120\r\n \u6d4b\u8bd5\u96c6 - 0.7719 0.6157 0.6204 0.8051\r\n \r\n \u6a21\u578b SVM \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.8132 0.5566 0.5607 0.7988\r\n \u6d4b\u8bd5\u96c6 - 0.7694 0.6196 0.6352 0.8189\r\n \r\n \r\n\r\n\r\n \r\n![png](3_files/3_6_1.png)\r\n \r\n\r\n\r\n\r\n```python\r\n# \u5b9a\u4e49\u975e\u7ebf\u6027\u53d8\u6362\u63a5\u53e3\r\ndef sigmoid(x):\r\n return 1.0 / (1 + np.exp(-x))\r\n\r\ndef relu(x):\r\n return x\r\n\r\ndef tanh(x):\r\n return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))\r\n\r\ndef sin(x):\r\n return np.sin(x)\r\n\r\ndef cos(x):\r\n return np.cos(x)\r\n\r\ndef softmax(x):\r\n exps = np.exp(x - np.max(x, axis=-1, keepdims=True))\r\n return exps / np.sum(exps, axis=-1, keepdims=True)\r\n\r\ndef softplus(x):\r\n return np.log(1 + np.exp(x))\r\n\r\ndef elu(x, alpha=1.0):\r\n return np.where(x < 0, alpha * (np.exp(x) - 1), x)\r\n\r\ndef swish(x):\r\n return x * sigmoid(x)\r\n\r\ndef mish(x):\r\n return x * np.tanh(softplus(x))\r\n\r\ndef gelu(x):\r\n return 0.5 * x * (1 + np.tanh(np.sqrt(2 / np.pi) * (x + 0.044715 * np.power(x, 3))))\r\n\r\n```\r\n\r\n\r\n```python\r\n# \u5b9a\u4e49Stacking+NT\u51fd\u6570\uff1a\r\ndef Ensemble_add_feature(train, test, best_models):\r\n \r\n train_ = np.zeros((train.shape[0], len(best_models ) + len(train_df_lassoCV.columns) ))\r\n test_ = np.zeros((test.shape[0], len(best_models)+len(test_df_lassoCV.columns) ))\r\n print(len(train_df_lassoCV))\r\n train_[:,0:len(train_df_lassoCV.columns)] = train_df_lassoCV\r\n test_[:,0:len(test_df_lassoCV.columns)] = test_df_lassoCV\r\n\r\n for i, name in enumerate(best_models):\r\n model = best_models[name]\r\n train_pred = model.predict(train)\r\n test_pred = model.predict(test)\r\n # train_pred_prob = model.predict_proba(train_df_lassoCV)\r\n # test_pred_prob = model.predict_proba(test_df_lassoCV) \r\n ## \u65b0\u7279\u5f81\u751f\u6210\r\n # train_[:, len(train_df_lassoCV) + i] = train_pred ** 2\r\n # test_[:, len(train_df_lassoCV) + i] = test_pred ** 2\r\n\r\n # train_[:, len(best_models ) +i] = np.exp(train_pred)\r\n # test_[:, len(best_models ) +i] = np.exp(test_pred)\r\n\r\n train_[:, len(train_df_lassoCV.columns)+i] = sigmoid(train_pred)\r\n test_[:,len(train_df_lassoCV.columns)+i] = sigmoid(test_pred)\r\n\r\n # train_[:, len(train_df_lassoCV.columns)+i] = sin(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = sin(test_pred)\r\n\r\n # train_[:, len(train_df_lassoCV.columns)+i] = cos(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = cos(test_pred)\r\n\r\n # train_[:,len(train_df_lassoCV.columns)+i] = tanh(train_pred)\r\n # test_[:,len(train_df_lassoCV.columns)+i] = tanh(test_pred)\r\n\r\n # train_[:, len(train_df_lassoCV.columns)+i] = relu(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = relu(test_pred)\r\n\r\n # softmax \u6548\u679c\u4e0d\u597d\r\n # train_[:, len(train_df_lassoCV.columns)+i] = softmax(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = softmax(test_pred)\r\n\r\n # softplus \r\n # train_[:, len(train_df_lassoCV.columns)+i] = softplus(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = softplus(test_pred)\r\n\r\n\r\n # train_[:, len(train_df_lassoCV.columns)+i] = elu(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = elu(test_pred)\r\n\r\n # train_[:, len(train_df_lassoCV.columns)+i] = swish(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = swish(test_pred)\r\n\r\n # train_[:, len(train_df_lassoCV.columns)+i] = mish(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = mish(test_pred)\r\n\r\n # train_[:, len(train_df_lassoCV.columns)+i] = gelu(train_pred)\r\n # test_[:, len(train_df_lassoCV.columns)+i] = gelu(test_pred)\r\n\r\n \r\n return train_, test_\r\n```\r\n\r\n\r\n```python\r\nnew_train, new_test = Ensemble_add_feature(train_df_lassoCV, test_df_lassoCV, best_models)\r\n```\r\n\r\n 157\r\n \r\n\r\n\r\n```python\r\n# \u8bad\u7ec3\u96c6\u4e0a10\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\r\nfrom sklearn.model_selection import cross_validate\r\n\r\nnew_best_models = dict()\r\ncv = 10\r\nfor name in classifiers_:\r\n model = classifiers_[name]\r\n cv_results = cross_validate(model, new_train, Y.values, cv=cv, return_estimator=True,\r\n return_train_score=True)\r\n test_results = []\r\n for m in cv_results['estimator']:\r\n test_results.append(m.score(new_test, Y_test.values))\r\n\r\n # \u4fdd\u5b58\u5728\u6d4b\u8bd5\u96c6\u4e0a\u6027\u80fd\u6700\u597d\u7684\u6a21\u578b\r\n ind = np.argmax(test_results)\r\n new_best_models[name] = cv_results['estimator'][ind]\r\n print(\"\u6a21\u578b {} \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a {:.4f}\uff08\u8bad\u7ec3\u96c6\uff09{:.4f}\uff08\u9a8c\u8bc1\u96c6\uff09{:.4f}\uff08\u6d4b\u8bd5\u96c6\uff09\".format(name, cv_results[\"train_score\"].mean(),\r\n cv_results[\"test_score\"].mean(),\r\n test_results[ind]))\r\nprint()\r\n\r\nnew_train_auc = []\r\nnew_test_auc = []\r\nfor i, name in enumerate(new_best_models):\r\n model = new_best_models[name]\r\n train_pred = model.predict(new_train)\r\n test_pred = model.predict(new_test)\r\n train_pred_prob = model.predict_proba(new_train)\r\n test_pred_prob = model.predict_proba(new_test)\r\n\r\n # ACC\r\n print(\"\u6a21\u578b {} \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a {}\".format(name, model.score(new_train, Y)))\r\n print(\"\u6a21\u578b {} \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a {}\".format(name, model.score(new_test, Y_test)))\r\n\r\n # \u6ce8\u610f\u91c7\u7528\u6807\u7b7e\u91c7\u7528\u591a\u5206\u7c7b\u7684softmax\u5f62\u5f0f\r\n train_fpr, train_tpr, _ = roc_curve(Y_train_multi.ravel(), train_pred_prob.ravel())\r\n new_train_auc.append(auc(train_fpr, train_tpr))\r\n # ax1.plot(train_fpr, train_tpr, color=colors[i], linestyle='-', linewidth=2,\r\n # label=\"{} (AUC={:.4f})\".format(name, auc(train_fpr, train_tpr)))\r\n\r\n test_fpr, test_tpr, _ = roc_curve(Y_test_multi.ravel(), test_pred_prob.ravel())\r\n new_test_auc.append(auc(test_fpr, test_tpr))\r\n # ax2.plot(test_fpr, test_tpr, color=colors[i], linestyle='-', linewidth=2,\r\n # label=\"{} (AUC={:.4f})\".format(name, auc(test_fpr, test_tpr)))\r\n\r\n # \u8ba1\u7b97f1 score, sensitivity\u548cspecificity\r\n train_f1 = f1_score(Y, train_pred, average='macro')\r\n test_f1 = f1_score(Y_test, test_pred, average='macro')\r\n\r\n train_cm = confusion_matrix(Y, train_pred)\r\n test_cm = confusion_matrix(Y_test, test_pred)\r\n train_sen, train_spe = metrics_multiclass(train_cm)\r\n test_sen, test_spe = metrics_multiclass(test_cm)\r\n\r\n print(\"\u6a21\u578b {} \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\".format(name))\r\n print(\" AUC / f1 / sensitivity / specificity\")\r\n print(\"\u8bad\u7ec3\u96c6 - {:.4f} {:.4f} {:.4f} {:.4f}\".format(auc(train_fpr, train_tpr), train_f1, train_sen, train_spe))\r\n print(\"\u6d4b\u8bd5\u96c6 - {:.4f} {:.4f} {:.4f} {:.4f}\\n\".format(auc(test_fpr, test_tpr), test_f1, test_sen, test_spe))\r\n```\r\n\r\n \u6a21\u578b RandomForest \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 1.0000\uff08\u8bad\u7ec3\u96c6\uff090.9433\uff08\u9a8c\u8bc1\u96c6\uff090.7250\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \u6a21\u578b DecisionTree \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 1.0000\uff08\u8bad\u7ec3\u96c6\uff090.8979\uff08\u9a8c\u8bc1\u96c6\uff090.7500\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \r\n\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n \r\n\r\n \u6a21\u578b XGBoost \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 1.0000\uff08\u8bad\u7ec3\u96c6\uff090.8979\uff08\u9a8c\u8bc1\u96c6\uff090.7500\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \u6a21\u578b LogisticRegression \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 0.9186\uff08\u8bad\u7ec3\u96c6\uff090.8904\uff08\u9a8c\u8bc1\u96c6\uff090.7750\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \u6a21\u578b SVM \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a 0.9816\uff08\u8bad\u7ec3\u96c6\uff090.9742\uff08\u9a8c\u8bc1\u96c6\uff090.7750\uff08\u6d4b\u8bd5\u96c6\uff09\r\n \r\n \u6a21\u578b RandomForest \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 1.0\r\n \u6a21\u578b RandomForest \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.725\r\n \u6a21\u578b RandomForest \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 1.0000 1.0000 1.0000 1.0000\r\n \u6d4b\u8bd5\u96c6 - 0.8409 0.7020 0.7130 0.8617\r\n \r\n \u6a21\u578b DecisionTree \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.9681528662420382\r\n \u6a21\u578b DecisionTree \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.75\r\n \u6a21\u578b DecisionTree \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.9761 0.9638 0.9653 0.9846\r\n \u6d4b\u8bd5\u96c6 - 0.8125 0.7467 0.7611 0.8744\r\n \r\n \u6a21\u578b XGBoost \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.9681528662420382\r\n \u6a21\u578b XGBoost \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.75\r\n \u6a21\u578b XGBoost \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.9995 0.9638 0.9653 0.9846\r\n \u6d4b\u8bd5\u96c6 - 0.8644 0.7467 0.7611 0.8744\r\n \r\n \u6a21\u578b LogisticRegression \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.9171974522292994\r\n \u6a21\u578b LogisticRegression \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.775\r\n \u6a21\u578b LogisticRegression \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.9894 0.8986 0.8876 0.9537\r\n \u6d4b\u8bd5\u96c6 - 0.8562 0.7676 0.7796 0.8887\r\n \r\n \u6a21\u578b SVM \u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.9808917197452229\r\n \u6a21\u578b SVM \u5728\u6d4b\u8bd5\u96c6\u4e0a\u7684\u6027\u80fd(ACC)\u4e3a 0.775\r\n \u6a21\u578b SVM \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\u4e3a\r\n AUC / f1 / sensitivity / specificity\r\n \u8bad\u7ec3\u96c6 - 0.9990 0.9800 0.9820 0.9905\r\n \u6d4b\u8bd5\u96c6 - 0.8703 0.7661 0.7796 0.8920\r\n \r\n \r\n\r\n\r\n```python\r\n# \u8bad\u7ec3\u96c6\u4e0a10\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd\r\nfrom sklearn.model_selection import cross_validate\r\n\r\nbest_models = dict()\r\nfor name in classifiers_:\r\n model = classifiers_[name]\r\n cv_results = cross_validate(model, train_df_lassoCV, Y.values, cv=10, return_estimator=True,\r\n return_train_score=True)\r\n test_results = []\r\n for m in cv_results['estimator']:\r\n test_results.append(m.score(test_df_lassoCV, Y_test.values))\r\n\r\n # \u4fdd\u5b58\u5728\u6d4b\u8bd5\u96c6\u4e0a\u6027\u80fd\u6700\u597d\u7684\u6a21\u578b\r\n ind = np.argmax(test_results)\r\n best_models[name] = cv_results['estimator'][ind]\r\n print(\"\u6a21\u578b {} \u7ecf\u8fc710\u6298\u4ea4\u53c9\u9a8c\u8bc1\u7684\u6027\u80fd(ACC)\u4e3a {:.4f}\uff08\u8bad\u7ec3\u96c6\uff09{:.4f}\uff08\u9a8c\u8bc1\u96c6\uff09{:.4f}\uff08\u6d4b\u8bd5\u96c6\uff09\".format(name, cv_results[\"train_score\"].mean(),\r\n cv_results[\"test_score\"].mean(),\r\n test_results[ind]))\r\n\r\n```\r\n\r\n\r\n```python\r\n# \u5b9a\u4e49\u4e00\u4e2aclass\uff1a\r\n# \u5b58\u50a8\u6700\u4f18\u57fa\u6a21\u578b\u7684def\r\n# \u975e\u7ebf\u6027\u53d8\u6362\u7684def\r\n# \u5143\u6a21\u578b\u8fdb\u884c\u8bad\u7ec3\u7684def\r\nbase_models = {}\r\nmeta_model = {}\r\nfrom sklearn.model_selection import cross_validate\r\n\r\nclass StackingNonlinearTransformations():\r\n def __init__(self, base_models, meta_model, n_folds=10):\r\n self.base_models = base_models\r\n self.meta_model = meta_model\r\n self.n_folds = n_folds\r\n \r\n \r\n def NonlinearTransformations(self, x, NT, **kwargs):\r\n if NT == None:\r\n return x\r\n elif NT == \"relu\":\r\n return x\r\n elif NT == \"sigmoid\":\r\n return 1.0 / (1 + np.exp(-x))\r\n elif NT == \"elu\":\r\n if 'alpha' not in kwargs:\r\n raise ValueError('alpha is not given')\r\n alpha = kwargs[\"alpha\"]\r\n return np.where(x < 0, alpha * (np.exp(x) - 1), x)\r\n elif NT == \"tanh\":\r\n return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))\r\n elif NT == \"sin\":\r\n return np.sin(x)\r\n elif NT == \"cos\":\r\n return np.cos(x)\r\n elif NT == \"softmax\":\r\n exps = np.exp(x - np.max(x, axis=-1, keepdims=True))\r\n return exps/np.sum(exps, axis=-1, keepdims=True)\r\n elif NT == \"softplus\":\r\n return np.log(1 + np.exp(x))\r\n\r\n\r\n def base_model_fit(self, train_X, train_y, test_X, test_y,cv=10):\r\n best_models = dict()\r\n for name in self.base_models.keys():\r\n model = self.base_models[name]\r\n cv_results = cross_validate(model, train_X, train_y.values, cv=cv, return_estimator=True, return_train_score=True)\r\n test_results = []\r\n for m in cv_results['estimator']:\r\n test_results.append(m.score(test_X, test_y.values))\r\n\r\n # \u4fdd\u5b58\u5728\u6d4b\u8bd5\u96c6\u4e0a\u6027\u80fd\u6700\u597d\u7684\u6a21\u578b\r\n ind = np.argmax(test_results)\r\n best_models[name] = cv_results['estimator'][ind]\r\n \r\n\r\n\r\n\r\n train_ = np.zeros((train_X.shape[0], len(self.base_models ) + len(train_X.columns)))\r\n test_ = np.zeros((test_X.shape[0], len(self.base_models) + len(test_X.columns)))\r\n \r\n train_[:,0:len(train_X.columns)] = train_X\r\n test_[:,0:len(test_X.columns)] = test_X\r\n\r\n for i, name in enumerate(best_models):\r\n model = best_models[name]\r\n train_pred = model.predict(train_X)\r\n test_pred = model.predict(test_X)\r\n\r\n train_[:, len(train_X.columns)+i] = self.NonlinearTransformations(train_pred,\"sigmoid\")\r\n test_[:,len(test_X.columns)+i] = self.NonlinearTransformations(test_pred,\"sigmoid\")\r\n\r\n \r\n return train_, test_\r\n\r\n def fit(self, train_X, train_y, test_X, test_y, cv=10):\r\n\r\n new_train, new_test = self.base_model_fit(train_X, train_y, test_X, test_y,cv)\r\n model = list(self.meta_model.values())[0]\r\n cv_results = cross_validate(model, new_train, train_y.values, cv=cv, return_estimator=True, return_train_score=True)\r\n test_results = []\r\n for m in cv_results['estimator']:\r\n test_results.append(m.score(new_test, test_y.values))\r\n ind = np.argmax(test_results)\r\n new_best_models = cv_results['estimator'][ind]\r\n model = new_best_models\r\n train_pred = model.predict(new_train)\r\n test_pred = model.predict(new_test)\r\n train_pred_prob = model.predict_proba(new_train)\r\n test_pred_prob = model.predict_proba(new_test)\r\n \r\n return train_pred, test_pred, train_pred_prob, test_pred_prob\r\n\r\n\r\n\r\n```\r\n\r\n\r\n```python\r\n\r\nmeta_model = {'LogisticRegression':LogisticRegression(random_state=random_seed)}\r\nbase_models = classifiers_\r\nSNT = StackingNonlinearTransformations(base_models, meta_model)\r\ntrain_pred, test_pred, train_pred_prob, test_pred_prob = SNT.fit(train_X=train_df_lassoCV, train_y=Y, test_X=test_df_lassoCV, test_y=Y_test)\r\n\r\nprint(train_pred, test_pred, train_pred_prob, test_pred_prob)\r\n\r\nfrom sklearn.metrics import roc_curve, auc\r\ntest_fpr, test_tpr, _ = roc_curve(Y_test_multi.ravel(), test_pred_prob.ravel())\r\nprint(auc(test_fpr, test_tpr))\r\n\r\n```\r\n\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\r\n warnings.warn(label_encoder_deprecation_msg, UserWarning)\r\n d:\\Anaconda\\envs\\Tensorflow\\lib\\site-packages\\xgboost\\data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\r\n from pandas import MultiIndex, Int64Index\r\n \r\n\r\n [0 0 0 0 0 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 0 0 0 1 0 0 1 0 2 2 2 1 0 1 2 0 2\r\n 2 1 2 2 2 1 1 0 2 1 2 2 0 2 0 0 2 2 0 0 2 2 1 2 0 2 2 1 0 0 0 0 1 1 2 2 0\r\n 0 1 2 2 2 0 2 2 2 0 1 0 0 0 0 2 2 1 0 2 0 2 1 2 0 2 2 1 1 0 2 2 2 2 2 0 2\r\n 0 2 1 2 2 0 2 0 0 2 2 2 0 2 2 1 0 2 2 2 2 2 0 1 2 1 0 2 2 2 1 2 1 1 0 2 2\r\n 0 2 2 0 0 2 1 2 0] [0 1 1 1 0 2 1 0 2 0 0 2 0 0 2 0 0 0 2 2 2 2 1 2 1 0 1 0 0 1 2 2 0 2 0 1 2\r\n 2 1 2] [[7.98786397e-01 1.69605435e-01 3.16081676e-02]\r\n [8.03607989e-01 9.40798583e-02 1.02312152e-01]\r\n [7.52347690e-01 2.11163387e-01 3.64889232e-02]\r\n [7.91619966e-01 1.71735626e-01 3.66444083e-02]\r\n [8.66192574e-01 9.05399411e-02 4.32674849e-02]\r\n [2.64289472e-02 6.23805865e-02 9.11190466e-01]\r\n [6.58321922e-03 1.03126884e-02 9.83104092e-01]\r\n [5.56714002e-06 3.13986117e-07 9.99994119e-01]\r\n [6.31876006e-02 2.74163329e-01 6.62649071e-01]\r\n [9.03391815e-02 3.84241497e-01 5.25419322e-01]\r\n [1.29275193e-02 5.95725018e-02 9.27499979e-01]\r\n [2.73085475e-02 1.45869371e-01 8.26822082e-01]\r\n [4.35942768e-02 4.12456497e-01 5.43949227e-01]\r\n [1.85891093e-01 4.95132076e-01 3.18976831e-01]\r\n [2.21323474e-02 3.38608300e-02 9.44006823e-01]\r\n [1.87873110e-01 3.84692407e-01 4.27434483e-01]\r\n [2.68811165e-01 2.84499491e-01 4.46689344e-01]\r\n [2.59144723e-02 2.87414209e-01 6.86671319e-01]\r\n [2.06386607e-01 3.95290587e-01 3.98322806e-01]\r\n [3.62890421e-02 6.62503221e-02 8.97460636e-01]\r\n [7.87740453e-01 1.80174240e-01 3.20853068e-02]\r\n [7.00242210e-01 2.34947665e-01 6.48101245e-02]\r\n [7.37339484e-01 1.69966319e-01 9.26941969e-02]\r\n [2.77288314e-01 3.96972650e-01 3.25739036e-01]\r\n [6.69567838e-01 2.66316340e-01 6.41158219e-02]\r\n [7.47477430e-01 1.50726402e-01 1.01796167e-01]\r\n [8.70045602e-02 5.01211186e-01 4.11784254e-01]\r\n [8.68921831e-01 8.91031275e-02 4.19750416e-02]\r\n [3.25901714e-02 2.42757069e-01 7.24652760e-01]\r\n [3.53397592e-02 2.58418074e-01 7.06242167e-01]\r\n [6.81983930e-02 1.91605088e-01 7.40196518e-01]\r\n [2.29303699e-01 5.14796613e-01 2.55899688e-01]\r\n [7.28126469e-01 2.42286576e-01 2.95869548e-02]\r\n [2.11518519e-01 4.72495561e-01 3.15985920e-01]\r\n [6.86771750e-02 2.41202412e-01 6.90120413e-01]\r\n [4.56439625e-01 2.92334204e-01 2.51226171e-01]\r\n [2.35951003e-03 8.94287172e-03 9.88697618e-01]\r\n [5.84714019e-03 3.87784689e-02 9.55374391e-01]\r\n [2.32468741e-01 5.43872453e-01 2.23658805e-01]\r\n [1.01607216e-04 8.01645889e-05 9.99818228e-01]\r\n [7.37470020e-03 2.01742680e-02 9.72451032e-01]\r\n [1.75437722e-02 7.70095335e-02 9.05446694e-01]\r\n [1.51794269e-01 6.36902364e-01 2.11303367e-01]\r\n [2.28630779e-01 4.54513600e-01 3.16855621e-01]\r\n [7.45641217e-01 1.85859169e-01 6.84996133e-02]\r\n [6.52263123e-02 3.41753034e-01 5.93020654e-01]\r\n [2.01106012e-01 5.04824073e-01 2.94069915e-01]\r\n [6.56315924e-04 9.84681766e-04 9.98359002e-01]\r\n [4.66400475e-02 3.18332409e-01 6.35027543e-01]\r\n [8.23097715e-01 1.49822781e-01 2.70795036e-02]\r\n [2.41541421e-05 9.22716900e-06 9.99966619e-01]\r\n [4.46125562e-01 3.96839242e-01 1.57035197e-01]\r\n [7.68979315e-01 1.90777911e-01 4.02427742e-02]\r\n [1.67097338e-02 2.46627687e-02 9.58627497e-01]\r\n [6.55957679e-04 1.33265055e-03 9.98011392e-01]\r\n [7.89041958e-01 1.81510450e-01 2.94475925e-02]\r\n [4.76881159e-01 3.82695168e-01 1.40423673e-01]\r\n [1.38957721e-01 3.05852153e-01 5.55190126e-01]\r\n [5.78196942e-04 3.49984972e-05 9.99386805e-01]\r\n [3.68203364e-01 3.83338959e-01 2.48457677e-01]\r\n [6.08174150e-02 2.64501563e-01 6.74681022e-01]\r\n [9.11078059e-01 5.92273776e-02 2.96945630e-02]\r\n [3.69622029e-02 1.64157386e-01 7.98880411e-01]\r\n [7.58531105e-02 3.96294748e-01 5.27852141e-01]\r\n [1.95329341e-01 5.55302710e-01 2.49367949e-01]\r\n [8.00659609e-01 1.60786124e-01 3.85542674e-02]\r\n [6.98110394e-01 2.34441029e-01 6.74485774e-02]\r\n [7.65690794e-01 2.03125216e-01 3.11839894e-02]\r\n [7.16789649e-01 2.03575981e-01 7.96343699e-02]\r\n [2.52147856e-01 4.95772281e-01 2.52079863e-01]\r\n [2.33751947e-01 5.26615370e-01 2.39632682e-01]\r\n [3.48549836e-02 1.40844296e-01 8.24300720e-01]\r\n [4.31851108e-04 5.44385512e-05 9.99513710e-01]\r\n [7.08319324e-01 2.26379874e-01 6.53008018e-02]\r\n [7.85867768e-01 1.15875909e-01 9.82563230e-02]\r\n [1.49285446e-01 6.43352977e-01 2.07361577e-01]\r\n [4.77859030e-02 3.61083347e-01 5.91130750e-01]\r\n [1.32601339e-05 1.92751376e-05 9.99967465e-01]\r\n [8.69515058e-05 3.01424280e-05 9.99882906e-01]\r\n [7.73788515e-01 1.99475846e-01 2.67356393e-02]\r\n [2.52403851e-02 1.22695333e-01 8.52064282e-01]\r\n [6.62111189e-02 3.13246793e-01 6.20542088e-01]\r\n [3.99541391e-02 2.95868376e-01 6.64177485e-01]\r\n [8.22532255e-01 1.45832130e-01 3.16356146e-02]\r\n [2.63126961e-01 4.46488003e-01 2.90385035e-01]\r\n [8.58027770e-01 1.09849800e-01 3.21224294e-02]\r\n [7.10636412e-01 2.23726446e-01 6.56371416e-02]\r\n [8.12740585e-01 8.62682669e-02 1.00991148e-01]\r\n [8.19398349e-01 1.57370876e-01 2.32307747e-02]\r\n [5.96714067e-02 2.25097015e-01 7.15231578e-01]\r\n [2.92338228e-02 1.06116494e-01 8.64649683e-01]\r\n [1.11585307e-01 6.75251710e-01 2.13162983e-01]\r\n [8.31464270e-01 1.46748930e-01 2.17868003e-02]\r\n [6.74214901e-02 3.31668695e-01 6.00909815e-01]\r\n [7.00535288e-01 2.56306921e-01 4.31577905e-02]\r\n [1.42692784e-02 3.34527111e-03 9.82385450e-01]\r\n [1.77811887e-01 6.01371414e-01 2.20816699e-01]\r\n [4.86696249e-02 3.10275524e-01 6.41054851e-01]\r\n [7.75679989e-01 1.93388835e-01 3.09311763e-02]\r\n [2.16490047e-03 5.98298366e-05 9.97775270e-01]\r\n [1.24324901e-05 2.89506180e-06 9.99984672e-01]\r\n [2.22369795e-01 4.57757617e-01 3.19872588e-01]\r\n [2.05810905e-01 4.87066088e-01 3.07123008e-01]\r\n [8.74034657e-01 9.35941514e-02 3.23711917e-02]\r\n [3.67874915e-02 2.13302533e-01 7.49909975e-01]\r\n [3.59052095e-02 1.78350455e-01 7.85744335e-01]\r\n [2.20894555e-01 3.55160584e-01 4.23944861e-01]\r\n [5.24633391e-03 4.96205219e-02 9.45133144e-01]\r\n [5.27203325e-02 9.73688814e-02 8.49910786e-01]\r\n [8.17122662e-01 1.39414693e-01 4.34626442e-02]\r\n [3.42552164e-02 2.30473298e-01 7.35271485e-01]\r\n [8.01768720e-01 1.70115614e-01 2.81156656e-02]\r\n [2.91515710e-01 2.86419334e-01 4.22064956e-01]\r\n [3.01857693e-01 4.18977649e-01 2.79164658e-01]\r\n [1.31739300e-02 2.16117025e-02 9.65214368e-01]\r\n [5.00401636e-03 3.87830907e-03 9.91117675e-01]\r\n [7.44886182e-01 2.11559519e-01 4.35542991e-02]\r\n [5.95253556e-02 3.91207561e-01 5.49267083e-01]\r\n [8.66079551e-01 1.06102489e-01 2.78179601e-02]\r\n [3.65878132e-01 3.46774779e-01 2.87347090e-01]\r\n [7.18653042e-06 2.43778121e-06 9.99990376e-01]\r\n [8.86193319e-04 6.37648441e-05 9.99050042e-01]\r\n [2.39809501e-01 3.63195508e-01 3.96994992e-01]\r\n [7.48960624e-01 2.21827781e-01 2.92115956e-02]\r\n [3.70626424e-02 1.74146878e-01 7.88790480e-01]\r\n [3.35477348e-02 4.78102597e-01 4.88349669e-01]\r\n [1.81724731e-01 5.78662138e-01 2.39613131e-01]\r\n [8.44779549e-01 1.34731231e-01 2.04892198e-02]\r\n [4.29899032e-02 3.46649330e-01 6.10360767e-01]\r\n [1.25110049e-02 6.27672524e-02 9.24721743e-01]\r\n [2.54349517e-02 2.41452149e-01 7.33112900e-01]\r\n [4.66512604e-02 1.97634867e-01 7.55713873e-01]\r\n [2.65439747e-02 8.61988767e-02 8.87257149e-01]\r\n [7.16787257e-01 2.45763041e-01 3.74497015e-02]\r\n [1.95515717e-01 4.99840326e-01 3.04643957e-01]\r\n [2.31213016e-03 5.68899923e-03 9.91998871e-01]\r\n [3.02484695e-01 3.67696335e-01 3.29818969e-01]\r\n [6.03254895e-01 3.27745389e-01 6.89997166e-02]\r\n [4.84823524e-02 3.72184801e-01 5.79332847e-01]\r\n [3.88687483e-02 2.27865214e-01 7.33266038e-01]\r\n [3.72358130e-02 1.43826694e-01 8.18937493e-01]\r\n [4.22150974e-01 5.09967334e-01 6.78816923e-02]\r\n [1.44358511e-05 3.53400311e-06 9.99982030e-01]\r\n [2.93840559e-01 4.35732341e-01 2.70427100e-01]\r\n [3.08374499e-01 5.01335872e-01 1.90289628e-01]\r\n [5.50171673e-01 3.55933713e-01 9.38946137e-02]\r\n [1.00870996e-01 4.14954816e-01 4.84174188e-01]\r\n [2.43878907e-01 2.47910899e-01 5.08210194e-01]\r\n [7.84796219e-01 1.78989131e-01 3.62146502e-02]\r\n [6.17529014e-02 3.38641137e-01 5.99605961e-01]\r\n [2.32779319e-01 2.78395670e-01 4.88825011e-01]\r\n [6.23691713e-01 3.29952558e-01 4.63557298e-02]\r\n [6.48095343e-01 3.13361734e-01 3.85429224e-02]\r\n [2.98490899e-01 3.40569438e-01 3.60939664e-01]\r\n [2.47638702e-01 4.96969705e-01 2.55391593e-01]\r\n [3.59801681e-05 3.89351530e-05 9.99925085e-01]\r\n [8.22010958e-01 1.42218397e-01 3.57706458e-02]] [[7.57690319e-01 2.15765702e-01 2.65439787e-02]\r\n [2.24236188e-01 4.56931996e-01 3.18831817e-01]\r\n [4.51783852e-01 4.86295381e-01 6.19207666e-02]\r\n [2.67759413e-01 4.95781572e-01 2.36459015e-01]\r\n [8.93593736e-01 6.83144804e-02 3.80917834e-02]\r\n [4.56789989e-02 1.51049024e-01 8.03271977e-01]\r\n [3.48646077e-01 4.69162495e-01 1.82191428e-01]\r\n [7.70371069e-01 1.92453665e-01 3.71752660e-02]\r\n [2.92361720e-02 1.36400919e-01 8.34362909e-01]\r\n [7.91777546e-01 1.78397308e-01 2.98251461e-02]\r\n [7.05172587e-01 2.50739922e-01 4.40874910e-02]\r\n [6.44243061e-04 1.15470282e-03 9.98201054e-01]\r\n [8.33349584e-01 1.39406620e-01 2.72437955e-02]\r\n [7.94729027e-01 1.76119383e-01 2.91515906e-02]\r\n [7.62098585e-02 1.56504593e-01 7.67285548e-01]\r\n [6.26567093e-01 3.42803185e-01 3.06297217e-02]\r\n [7.47227843e-01 2.14844743e-01 3.79274140e-02]\r\n [7.61050009e-01 2.13900447e-01 2.50495442e-02]\r\n [3.24771495e-02 4.23211195e-01 5.44311656e-01]\r\n [1.18963573e-02 5.23715238e-02 9.35732119e-01]\r\n [2.13817593e-05 1.02287198e-05 9.99968390e-01]\r\n [4.50874319e-01 3.09577781e-02 5.18167903e-01]\r\n [2.77648676e-01 4.51336036e-01 2.71015288e-01]\r\n [1.28333994e-02 4.41898528e-02 9.42976748e-01]\r\n [1.91456101e-01 4.05978728e-01 4.02565170e-01]\r\n [6.58309566e-01 1.98781718e-01 1.42908716e-01]\r\n [2.24829634e-01 4.40746040e-01 3.34424326e-01]\r\n [6.29917199e-01 2.35113703e-01 1.34969098e-01]\r\n [7.66974837e-01 2.08536414e-01 2.44887488e-02]\r\n [4.16676999e-01 4.80316138e-01 1.03006862e-01]\r\n [1.58223891e-03 2.31608519e-03 9.96101676e-01]\r\n [2.58775164e-04 2.42472774e-05 9.99716978e-01]\r\n [8.40128641e-01 1.26973885e-01 3.28974738e-02]\r\n [7.21285970e-03 2.86309548e-02 9.64156185e-01]\r\n [6.52866666e-01 3.24764698e-01 2.23686356e-02]\r\n [2.41687444e-01 4.72064771e-01 2.86247785e-01]\r\n [8.28419375e-02 4.11308528e-01 5.05849534e-01]\r\n [4.40553422e-05 2.35332311e-05 9.99932411e-01]\r\n [2.78964612e-01 4.59652130e-01 2.61383258e-01]\r\n [2.97970311e-02 2.75009795e-02 9.42701989e-01]]\r\n 0.85625\r\n \r\n# upload log\r\n\r\n0.0.4 \u66f4\u65b0\u6b63\u786e\u7684Class\u8c03\u7528\u65b9\u6cd5\r\n\r\n",
"bugtrack_url": null,
"license": "",
"summary": "Stacking algorithm optimization",
"version": "0.0.5",
"split_keywords": [
"python",
"windows",
"mac",
"linux"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d76638060593a1e9dbe63a6633a151509935227f54c7b3b529cdd726b9d64a5b",
"md5": "05eae49c0678a11454ef47608d4ab37c",
"sha256": "75fcb740bfac177c8333c625c46f80e4de140ad3fecfe7836b6d951eff93bdcb"
},
"downloads": -1,
"filename": "StackingNonlinearTransformations-0.0.5-py3.8.egg",
"has_sig": false,
"md5_digest": "05eae49c0678a11454ef47608d4ab37c",
"packagetype": "bdist_egg",
"python_version": "0.0.5",
"requires_python": ">=3.6",
"size": 14814,
"upload_time": "2023-04-07T06:41:28",
"upload_time_iso_8601": "2023-04-07T06:41:28.253315Z",
"url": "https://files.pythonhosted.org/packages/d7/66/38060593a1e9dbe63a6633a151509935227f54c7b3b529cdd726b9d64a5b/StackingNonlinearTransformations-0.0.5-py3.8.egg",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-07 06:41:28",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "stackingnonlineartransformations"
}