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

如何在Julia中为分类器在散点图上绘制拟合分类边界线

Julia 分类任务决策边界绘制方案

你当前得到不规则折线的核心原因通常是边界点未按顺序排列就直接连线,或是未做平滑拟合直接使用原始散点连线。以下是可直接落地的操作步骤:

前置依赖安装

通用方案依赖Plots.jl绘图库和Loess.jl平滑拟合库,先完成安装导入:

using Pkg
Pkg.add(["Plots", "Loess"])
using Plots, Loess

方案1:基于已有边界点拟合平滑曲线

  • 假设你已收集到所有绿色边界点的坐标,存储为一维数组x_bound(x轴特征值)、y_bound(y轴特征值)
  • 第一步先对边界点按x轴数值升序排序,解决乱序连线的问题:
sorted_index = sortperm(x_bound)
x_sorted = x_bound[sorted_index]
y_sorted = y_bound[sorted_index]
  • 第二步做局部加权回归拟合得到平滑曲线,避免原始点噪声影响:
# span参数控制平滑程度,取值范围0~1,数值越小拟合结果越贴近原始点
loess_model = loess(x_sorted, y_sorted, span=0.2)
# 生成高密度采样点用于绘制连续曲线
x_fit = range(minimum(x_sorted), maximum(x_sorted), length=300)
y_fit = predict(loess_model, x_fit)
  • 最后绘图即可得到平滑的黑色边界线:
# 先绘制原始分类散点
scatter(x_class1, y_class1, color=:orange, label="类别A")
scatter!(x_class2, y_class2, color=:blue, label="类别B")
# 绘制拟合后的决策边界
plot!(x_fit, y_fit, color=:black, linewidth=2, label="决策边界")
# 可选:绘制原始边界点做对照
scatter!(x_sorted, y_sorted, color=:green, markersize=3, label="边界采样点")

方案2:无预采集边界点时直接生成决策边界

如果没有提前采集边界点,可以直接基于分类器的预测结果生成等高线作为边界,无需手动收集点:

# 生成覆盖整个绘图区域的网格
x_grid = range(minimum([x_class1;x_class2]), maximum([x_class1;x_class2]), length=150)
y_grid = range(minimum([y_class1;y_class2]), maximum([y_class1;y_class2]), length=150)
# 计算每个网格点的分类预测结果,your_trained_classifier替换为你训练好的分类器预测方法
pred_grid = [your_trained_classifier([x,y]) for x in x_grid, y in y_grid]
# 绘制预测值为0.5的等高线,即为二分类的决策边界
contour!(x_grid, y_grid, pred_grid, levels=[0.5], color=:black, linewidth=2, label="")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:36:01