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

使用KNN算法预测连续变量报错:ValueError如何解决?

问题场景与错误分析

数据集

Number of plantsTotal kg
9007.565
144017.808
234025.373
90010.340
90010.610

尝试使用KNN算法基于植株数量预测总产量,编写的代码如下:

from sklearn.neighbors import KNeighborsClassifier

df = pd.read_csv(r'final2.csv')

X = df.drop('Total kg', axis=1)
Y = df[["Total kg"]]

X=X.values
Y=Y.values

knn = KNeighborsClassifier(n_neighbors=1)
  
prediction = knn.fit(X,Y)

运行后报错:

ValueError: Unknown label type: 'continuous'


解答

KNN完全可以处理连续变量的预测任务,你只是用错了模型类型:

  • KNeighborsClassifier是分类模型,仅适用于离散标签的分类任务(比如判断花的品种),而你的目标变量"Total kg"是连续数值,属于回归预测任务。
  • 要处理连续变量预测,应该使用sklearn中的KNeighborsRegressor,这是专门为回归任务设计的KNN模型。

修正后的代码

from sklearn.neighbors import KNeighborsRegressor
import pandas as pd  # 补充缺失的pandas导入

df = pd.read_csv(r'final2.csv')

X = df.drop('Total kg', axis=1)
Y = df["Total kg"]  # 用单层方括号获取一维Series即可,无需转二维数组

# 初始化回归模型
knn_reg = KNeighborsRegressor(n_neighbors=1)
knn_reg.fit(X, Y)

# 示例预测:输入900株的数量,得到预测产量
sample_input = [[900]]
predicted_total_kg = knn_reg.predict(sample_input)
print(predicted_total_kg)

额外说明

  1. KNN回归的核心逻辑是取邻近样本的均值(或加权均值)作为预测结果,天然适配连续变量的预测需求。
  2. 原始代码漏导入pandas,运行时会触发NameError,修正代码中已补充。
  3. 目标变量无需手动转成values,sklearn可以直接处理Pandas的DataFrame/Series类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:01:19