You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python动态选择最优模型?基于多模型准确率的自动筛选执行

实现基于准确率自动筛选并执行最佳机器学习模型的方案

咱直接上实操方案,思路很清晰:先给你那6个模型做交叉验证评估,算出各自的平均准确率,挑出分数最高的那个,然后只训练和用它干活就行。

步骤1:补全必要导入与模型列表

首先得把需要的库和你的模型都准备好,把你没写完的两个模型补进去就行:

# 导入需要的库
from sklearn.model_selection import cross_val_score, train_test_split
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
# 替换成你剩下的两个模型,比如朴素贝叶斯、SVM
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

# 固定随机种子保证结果可复现
seed = 7

# 你的模型列表,补全剩余两个
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))  # 换成你的第5个模型
models.append(('SVM', SVC()))        # 换成你的第6个模型

步骤2:评估所有模型的交叉验证准确率

遍历每个模型,用交叉验证算出平均准确率,同时记录下来:

# 存储模型名称和对应的平均准确率
model_scores = []
model_names = []

# 假设你已经有预处理好的特征X和目标变量y
# 先划分训练集和测试集(如果之前没做的话)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=seed)

# 逐个评估模型
for name, model in models:
    # 10折交叉验证,计算平均准确率
    cv_results = cross_val_score(model, X_train, y_train, cv=10, scoring='accuracy')
    mean_acc = cv_results.mean()
    model_scores.append(mean_acc)
    model_names.append(name)
    # 打印每个模型的结果,方便对比
    print(f"{name} | 平均准确率: {mean_acc:.4f} | 准确率标准差: {cv_results.std():.4f}")

步骤3:筛选并训练最佳模型

找出准确率最高的模型,然后用它来训练和预测:

# 找到准确率最高的模型的索引
best_model_idx = model_scores.index(max(model_scores))
best_model_name = model_names[best_model_idx]
# 从模型列表中取出对应的模型实例
best_model = dict(models)[best_model_name]

print(f"\n✅ 最佳模型确定:{best_model_name},交叉验证平均准确率: {model_scores[best_model_idx]:.4f}")

# 用全部训练数据训练最佳模型
best_model.fit(X_train, y_train)

# 在测试集上验证效果
y_pred = best_model.predict(X_test)
test_acc = accuracy_score(y_test, y_pred)
print(f"最佳模型在测试集上的准确率: {test_acc:.4f}")

一些小提醒

  • 记得把代码里的X、y替换成你自己的特征数据集和目标变量
  • 如果你的任务是回归而非分类,把scoring='accuracy'换成对应的回归指标,比如'neg_mean_squared_error'
  • 交叉验证的折数cv可以根据你的数据量调整,数据少的话可以用5折,数据多的话10折更稳定
  • 如果你的模型已经做过超参数调优,直接把调完参的模型实例放进models列表就行,不用用默认参数

内容的提问来源于stack exchange,提问作者sangeetha sivakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:03:18