def plotConfMatrix(y_test, y_predict, modelType): #Confusion matrix conf = np.zeros((11,11), dtype=int) titles = ["Cello", "Church Organ", "Clarinet", "Flute", "Guitar", "Harp", "Marimba", "Perldrop", "Piano", "Synlead3", "Violin"] for hit in range(len(y_test)): conf[y_test[hit]][y_predict[hit]] += 1 # Plot confusion matrix fig, ax = plt.subplots(figsize=(8,8)) sn.set(font_scale=1.5) sn.heatmap(conf, annot=True, fmt='d', ax=ax, cmap="YlGnBu", xticklabels=titles, yticklabels=titles) ax.set_ylim(len(conf),0) plt.xlabel('Predicted') plt.ylabel('True') plt.title('Confusion Matrix with sklearn for ' + modelType) plt.show()
时间: 2024-01-02 22:04:49 浏览: 141
这段代码是用来绘制混淆矩阵(confusion matrix)的,它接受三个参数:y_test表示测试集的真实标签,y_predict表示测试集的预测标签,modelType表示模型的类型。代码首先初始化一个11*11的全零矩阵conf,然后遍历每个测试样本,将真实标签和预测标签对应的位置加1,最后使用seaborn库绘制热力图来展示混淆矩阵。其中xticklabels和yticklabels用来设置横纵坐标的标签,即每个类别的名称。最后通过plt.show()函数将图像显示出来。
相关问题
df_new = df.drop(columns=["姓名", "位置","球队"]) # 去除非数值型数据 X_train,X_test,Y_train,Y_test=train_test_split(df_new,Pie1_array,test_size=0.2,random_state=180) # 定义模型 def basic_logosticregression(X_train, X_test, Y_train, Y_test): model = LogisticRegression(random_state=0, solver='lbfgs') model.fit(X_train, Y_train) Y_train_pre = model.predict(X_train) Y_test_pre = model.predict(X_test) train_predict_proba = model.predict_proba(X_train) test_predict_proba = model.predict_proba(X_test) confusion_matrix_result = metrics.confusion_matrix(Y_test_pre, Y_test) print('混淆矩阵结果:\n', confusion_matrix_result) plt.figure(figsize=(8, 6)) sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues') # plt.xlabel('预测的标签') # plt.ylabel('实际的标签') print("逻辑回归") print("score_train: " + str(model.score(X_train, Y_train))) print("score_test: " + str(model.score(X_test, Y_test))) basic_logosticregression(X_train,X_test,Y_train,Y_test) Pie_array = np.array(df['球员贡献度']) df_new = df.drop(columns=["姓名", "位置","球队",'球员贡献度']) data=df_new.values.tolist()
这段代码中,首先使用 `df.drop` 方法去掉了数据框 `df` 中的非数值型数据,然后使用 `train_test_split` 方法将数据集划分为训练集和测试集。接下来定义了一个逻辑回归模型 `basic_logosticregression`,并在其中使用 `LogisticRegression` 方法进行训练和预测。最后,将球员贡献度从数据框中提取出来,再次使用 `df.drop` 方法去掉非数值型数据,并将数据转换为列表。
需要注意的是,这段代码中并没有显示 `Pie1_array` 的定义,因此无法确定该变量的含义和类型,难以对代码进行更深入的分析。同时,该代码中的逻辑回归模型没有进行参数调优,可能会影响模型的性能。如果需要对模型进行更深入的分析和优化,可以参考一些相关的教程或者进行自行探索。
def bayers(X_TRAIN, Y_TRAIN, X_TEST, Y_TEST): print('======================开始Bayes模型训练:======================') # 训练保存模型 nb = BernoulliNB() model = nb.fit(X_TRAIN, Y_TRAIN) # 训练模型 joblib.dump(filename=BAYERS_PATH, value=model) # 开始预测 y_predict = model.predict(X_TEST) # 计算精准率、召回率、F1分数 precision = precision_score(Y_TEST, y_predict) recall = recall_score(Y_TEST, y_predict) f1mean = f1_score(Y_TEST, y_predict) print('精确率为:%0.5f' % precision) print('召回率:%0.5f' % recall) print('F1均值为:%0.5f' % f1mean) path = './picture/bayers.png' title = 'Bayers Confusion Matrix' # 绘制混淆矩阵 plt_confusion_matrix(path, Y_TEST, y_predict, title) # 计算AUC和ROC fpr, tpr, thresholds_keras = roc_curve(Y_TEST, y_predict) Auc = auc(fpr, tpr) print("AUC : ", Auc) FPR.append(fpr) TPR.append(tpr) AUC.append(Auc)
这段代码定义了一个名为 "bayers" 的函数,该函数接受四个参数:X_TRAIN、Y_TRAIN、X_TEST 和 Y_TEST,用于训练和测试朴素贝叶斯模型。函数首先创建一个 BernoulliNB 类型的朴素贝叶斯分类器,并使用 X_TRAIN 和 Y_TRAIN 训练该模型。接着,使用 joblib 库将训练好的模型保存到文件系统中。然后,使用测试数据 X_TEST 对模型进行预测,预测结果保存在 y_predict 变量中。函数接着计算精度、召回率和 F1 分数,并输出这些评价指标。接着,函数使用 plt_confusion_matrix 函数绘制混淆矩阵,并将混淆矩阵保存到指定的路径中。最后,函数计算 AUC 和 ROC,将它们保存到 FPR、TPR 和 AUC 列表中,并输出 AUC 值。
阅读全文