【问题标题】:Compare accuracy of different models比较不同模型的准确性
【发布时间】:2019-07-18 08:12:21
【问题描述】:

我正在尝试构建一种方法来绘制不同 ML 模型的准确性,例如

from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier

我用过这段代码,但无法得到条形图

#Evaluating performance
results = []
names = []
scoring = 'accuracy'

for name, model in models:
    kfold = model_selection.KFold(n_splits=10, random_state=0)
    cv_results = model_selection.cross_val_score(model, X_train, y_train, cv=kfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    results.append(cv_results.mean())
    print(msg)

plt.plot(cv_results) plots a line graph

我正在尝试使用 X 轴(不同型号)Y 轴(精度)绘制条形图

【问题讨论】:

  • 所以基本上你想绘制一个条形图,其中 X 轴上的名称中的模型名称和 Y 轴上的结果的平均准确度得分?
  • 是的,我想绘制条形图来比较准确度

标签: python-3.x matplotlib plot scikit-learn


【解决方案1】:

plt.plot 会像你注意到的那样绘制线条。您需要的是plt.bar,它将绘制一个条形图。假设模型的名称存储在列表names 中,准确度存储在列表results 中,就像您的代码 sn-p 中一样,应该这样做:

plt.bar(names,results)

【讨论】:

  • ValueError: incompatible sizes: argument 'height' must be length 6 or scalar 我收到此错误。
  • 您是否检查过名称和结果是否都是相同长度的列表?如果你有 names = ['modelA', 'modelB'] 和 results = [0.78, 0.89],它会起作用。根据您的代码,我希望您的数据具有这种形状
猜你喜欢
  • 2021-11-02
  • 2018-03-20
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多