复古网站设计,php网站制作费用,咨询网络服务商怎么弄,网站建设推广哪家好诸神缄默不语-个人CSDN博文目录 文章目录 1. 导入包2. 初始化分类模型3. 训练、测试模型#xff0c;绘图#xff0c;保存指标 1. 导入包
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClass…诸神缄默不语-个人CSDN博文目录 文章目录 1. 导入包2. 初始化分类模型3. 训练、测试模型绘图保存指标 1. 导入包
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import roc_auc_score,accuracy_score,roc_curve,auc
import joblib
import matplotlib.pyplot as plt2. 初始化分类模型
classifiers {Logistic Regression: LogisticRegression(),Random Forest: RandomForestClassifier(),GBDT: GradientBoostingClassifier(),MLP: MLPClassifier(max_iter1000)
}3. 训练、测试模型绘图保存指标
在这里省略了数据处理部分总之X/Y都是np.ndarray对象。f反正你创建一个可写的文件流就行如果连这个都不会的话参考我写的这篇博文Python3对象序列化即处理JSON、XML和文件持续更新ing…。 f.close()没写根据你的需要如果想加就加。
这个逻辑是每次得到AUC最高的模型就画图其实感觉把模型权重储存下来然后再joblib.load()再画图会更合适…… 如果想对每个模型画ROC曲线叠在一张图上的话在最前面新建画布plt.figure()每个模型运行完后都运行一次plt.plot()不close()就行。
max_auc 0
max_acc 0
best_classifier
# 训练模型
for lr_name, lr in classifiers.items():lr.fit(X_train, y_train)# 预测y_pred lr.predict(X_test)y_pred_proba lr.predict_proba(X_test)[:, 1]# 评估auc_score roc_auc_score(y_test, y_pred_proba)acc accuracy_score(y_test, y_pred)if auc_score max_auc:max_auc auc_scoremax_acc accbest_classifier lr_namejoblib.dump(lr, fmodel.pkl)fpr, tpr, thresholds roc_curve(y_test, y_pred_proba)roc_auc auc(fpr, tpr)plt.figure()plt.plot(fpr,tpr,colordarkorange,lw2,labelfROC curve (AUC {roc_auc:.2f}),)plt.plot([0, 1], [0, 1], colornavy, lw2, linestyle--) # 随机猜测基线plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.05])plt.xlabel(False Positive Rate)plt.ylabel(True Positive Rate)plt.title(Receiver Operating Characteristic)plt.legend(loclower right)plt.grid()plt.savefig(roc.png)plt.close()f.write(f{lr_name} AUC: {auc_score:.4f}, ACC: {acc:.4f} \n)f.flush()f.write(fbest_classifier: {best_classifier} AUC: {max_auc:.4f}, ACC: {max_acc:.4f} \n
)
f.flush()