python - 如何自动选择列表中的最大值。append - python

标签 python machine-learning max

我正在做一个机器学习项目,我需要选择分类器的最高 cv_results 值。在计算所有值并将其存储在单个变量 cv_results 中后,如何自动选择分类器的最高值?

models = []
models.append(('LR', LogisticRegression()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC()))

maxval = models[0] # initialize max to first element
results = []
names = []
storeresults = []
for name, model in models:

kfold = model_selection.KFold(n_splits=10, random_state=seed)
cv_results = model_selection.cross_val_score(model, X_tr, Y_tr, cv=kfold, scoring=scoring)
results.append(cv_results)
names.append(name)
msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std()
print(msg)

maxval = max(results)
#print(maxval)
print('The best classifier is ' , maxval)

我的输出是:

LR: 0.552291 (0.021477)
SVM: 0.897305 (0.015317)
KNN: 0.884636 (0.016431)
NB: 0.609434 (0.026586)

The best classifier is  0.654986522911 NB

它应该是 SVM,但我该如何做到这一点?

名称后的第一个数字是结果的平均值,括号中的数字是标准差。当我在我的spyder python中运行时,它将选择NB(朴素贝叶斯)而不是SVM(支持机器向量)。

最佳答案

max_cross_val_score = max(cv_results.mean()) 
max_cross_val_score_classifier = models[cv_results.mean().index(max_cross_val_score)]

最佳分类器是 max_cross_val_score_classifier,其中 max_cross_val_score 作为最大交叉验证分数。

关于python - 如何自动选择列表中的最大值。append - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50362165/

相关文章:

java - 如何使用 math.max 和 math.min 省略高分和低分

save - YII + beforeSave() + 从表行中获取最大值

web - 所有主要浏览器允许的最大 HTTP 重定向次数是多少?

python - WTforms 表单未提交但未输出验证错误

python - 使用 python wikitools 解析维基百科 stub

machine-learning - 使用最近邻算法对图像进行分类时,常用的特征是什么?

R:使用cv.glm计算弹性网预测误差

python - 不要跳过 pandas.read_excel() 中的空白行

python - 如何检查 header 是否包含字符串 "example@example.com"?

text - 查找文本中与给定关键字相似度最高的子字符串