python - x 和 y 必须具有相同的第一维,但具有形状 (1,) 和 (6,)

标签 python matplotlib

train_auc = []
cv_auc = []
alpha_values = [1,2,3,4,5,10]
for alpha in alpha_values: 
    model = MultinomialNB(alpha = alpha)
    model.fit(X_tr_bow,Y_train) 
    y_tr_prob = batch_predict(model,X_tr_bow)    
    y_cr_prob =batch_predict(model, X_cr_bow)    
    train_auc.append(roc_auc_score(Y_train,y_tr_prob))
    cv_auc.append(roc_auc_score(Y_cv,y_cr_prob))
plt.plot(alpha, train_auc, label='Train AUC')
plt.plot(alpha, cv_auc, label='CV AUC')
plt.scatter(alpha, train_auc, label='Train AUC points')
plt.scatter(alpha, cv_auc, label='CV AUC points')
plt.legend()
plt.xlabel("alpha: hyperparameter")
plt.ylabel("roc_AUC_score")
plt.title("Roc_Auc score PLOTS")
plt.grid()
plt.show()

此代码显示错误 x 和 y 必须具有相同的第一维度,但具有形状 (1,) 和 (6,)

最佳答案

问题是您正在用列表形式的 y 值绘制单个值 alpha 。您需要使用完整的 x 值。在所有绘图命令中将 alpha 替换为 alpha_values,如下所示

plt.plot(alpha_values, train_auc, label='Train AUC')
plt.plot(alpha_values, cv_auc, label='CV AUC')
plt.scatter(alpha_values, train_auc, label='Train AUC points')
plt.scatter(alpha_values, cv_auc, label='CV AUC points')

关于python - x 和 y 必须具有相同的第一维,但具有形状 (1,) 和 (6,),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56527118/

相关文章:

python - 如何在Tensorflow中绘制精度曲线

python - 隐藏图中的 y 轴

python - 在Python中使用Selenium选择子元素

python - 如何在条形图(Python)的条形图上方写文字?

python - 在概率图中设置透明点

python - 对于一个跨 block 不执行翻译

python - 类型错误 : Plotting an array including tuples

python - 在绘图窗口中放置自定义图像 - 作为自定义数据标记或注释这些标记

python - Heroku 导入错误

python - 如何计算两个日期格式 Y/M/D h :m:s. ns 之间的差异