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

使用scikit-learn分类鸢尾花数据集时出现ValueError解包错误如何解决

报错原因与代码修复

核心错误原因

你调用train_test_split时仅传入了1个未定义的变量df,根据该方法的规则,传入N个数组会返回2*N个拆分结果,仅传1个数组只会返回2个值,你用4个变量接收自然触发not enough values to unpack错误。如果要拆分特征和标签两组数据,需要同时传入特征矩阵和标签数组两个入参。

代码中存在的所有问题

  • 存在大量未定义变量:datasets、sklearn、df、training_set、testing_set均未提前声明,和你导入的模块、已定义的变量不匹配
  • train_test_split参数不符合需求:你原本的逻辑是遍历不同训练集占比,但写死了test_size=0.2,且未传入正确的特征、标签入参
  • 分类器调用参数错误:scikit-learn的传统机器学习分类器fit方法没有batch_size、epochs参数,这两个是深度学习框架的训练参数,需要删除
  • 冗余代码:你拼接的labeled_data全程没有被使用,可以直接删除
  • 自定义方法逻辑错误:run_classifier传入的training、testing参数没有被使用,内部硬编码变量会导致逻辑混乱

修复后完整代码

from sklearn import naive_bayes, tree, metrics
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from random import seed
from math import sqrt
from math import pi
from math import exp

# 加载鸢尾花数据集
iris = load_iris()
iris_data = iris.data
iris_labels = iris.target

# 运行分类器
def run_classifier(classifier, X_train, y_train, X_test):
    classifier.fit(X_train, y_train)
    predict = classifier.predict(X_test)
    return predict

# 模拟不同训练集占比的准确率
def simulate():
    nb_acc = []
    tree_acc = []
    # 训练集占比从0.5到0.825,步长0.025
    training_fracs = [x/1000 for x in range(500, 850, 25)]

    for train_size in training_fracs:
        nb = naive_bayes.CategoricalNB()
        dt = tree.DecisionTreeClassifier()
        # 拆分数据集,test_size为1减去训练集占比
        X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_labels, train_size=train_size, random_state=25)
      
        nb_predict = run_classifier(nb, X_train, y_train, X_test)
        dt_predict = run_classifier(dt, X_train, y_train, X_test)
        
        nb_acc.append(metrics.accuracy_score(y_test, nb_predict))
        tree_acc.append(metrics.accuracy_score(y_test, dt_predict))
        
    return nb_acc, tree_acc, training_fracs
        
nb_acc, tree_acc, training_fracs = simulate()

print(f"Naive Bayes accuracy @ 50% training: {nb_acc[0]}")
print(f"Decision Tree accuracy @ 50% training: {tree_acc[0]}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:18:03