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

如何使用MC1数据集绘制KNN决策边界图(附待调试代码)

如何修复MC1数据集KNN决策边界绘图代码

你的代码存在4个直接导致运行失败的问题,逐一修正即可正常出图:

  • 错误1:X, y = data_set 是无效写法,pandas DataFrame不支持直接解包为特征和标签,必须通过iloc/loc明确指定列范围切分。
  • 错误2:导入的RadViz、make_moons全程未调用,属于冗余代码,不会直接导致报错但会干扰逻辑判断。
  • 错误3:DecisionViz是二维可视化工具,仅支持传入2个特征绘制平面决策边界,如果你传入超过2个特征会直接触发维度错误。
  • 错误4:切分数据前没有做特征维度校验,高维特征直接传入标准化、训练流程会在绘图步骤才暴露问题,难以定位。

修正后可运行代码

下面的代码默认你的MC1数据集最后一列为Y/N格式的分类标签,取前2个数值特征绘制决策边界,如果你需要用指定的两个特征,修改iloc的列索引即可:

from sklearn.model_selection import train_test_split as tts
from sklearn.preprocessing import StandardScaler
import pandas as pd
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from yellowbrick.contrib.classifier import DecisionViz
from yellowbrick.style import set_palette
set_palette('flatui')

# 读取本地MC1数据集
data_set = pd.read_csv('MC1.csv')

# 切分特征、标签:示例取前2列作为绘图特征,最后一列为分类标签
X = data_set.iloc[:, :2].values
y = data_set.iloc[:, -1].values

# 校验标签取值,对应调整classes参数
print("数据集标签类别:", np.unique(y))

# 特征标准化
X = StandardScaler().fit_transform(X)

# 拆分训练、测试集
X_train, X_test, y_train, y_test = tts(X, y, test_size=.4, random_state=42)

# 初始化KNN决策边界可视化器
viz = DecisionViz(
    KNeighborsClassifier(n_neighbors=5),
    title="KNN Nearest Neighbors Decision Boundary (MC1)",
    classes=['N', 'Y']  # 顺序和打印出的标签类别保持一致即可
)

viz.fit(X_train, y_train)
viz.draw(X_test, y_test)
viz.show()

额外注意事项

如果你需要保留全部特征的信息,不要直接截取两列,可以先用PCA将特征维度降到2维,再把降维后的特征传入可视化流程。
如果运行时出现类别不匹配报错,根据控制台打印出的实际标签值,调整classes参数的内容和顺序即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:39:55