我正在尝试比较不同的机器学习算法。我使用Box图进行比较。但是,该图未显示适当的结果。这是代码:
results = []
names = []
for name, model in models:
kfold = KFold(n_splits=4, random_state=1, shuffle=True)
cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')
results.append(cv_results)
names.append(name)
print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))
# Compare Algorithms
pyplot.xticks(range(1,9),labels=names,rotation=40,ha='right')
pyplot.boxplot(results, labels=names)
pyplot.title('Algorithm Comparison')
pyplot.ylabel(("Accuracy"))
pyplot.show()
结果输出:
LDA: 0.769728 (0.008044)
KNN: 1.000000 (0.000000)
Random Forset: 1.000000 (0.000000)
CART: 1.000000 (0.000000)
NB: 0.514771 (0.004631)
SVM: 1.000000 (0.000000)
答案 0 :(得分:0)
箱形图的行为符合预期。
请看一下您的输出。其中一些模型的标准偏差为0。这意味着平均值和标准偏差可能仅从单个点计算得出。由于最后没有分布,这也意味着没有标准偏差,也没有四分位数。因此,您在绘图中只得到一条直线,仅代表平均值。