You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

K-最近邻算法:使用JavaFX绘制决策边界

下面是一个使用JavaFX绘制K-最近邻算法决策边界的示例代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class KNNVisualization extends Application {

    private static final int WIDTH = 800;  // 窗口宽度
    private static final int HEIGHT = 600; // 窗口高度
    private static final int K = 3;       // K-最近邻算法的K值

    private List<Point> points;            // 数据点列表
    private List<Point> trainingSet;       // 训练集
    private List<Point> testSet;           // 测试集

    private Pane root;

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        // 初始化数据
        initData();

        // 创建窗口和画布
        primaryStage.setTitle("K-最近邻算法可视化");
        root = new Pane();
        Scene scene = new Scene(root, WIDTH, HEIGHT);
        primaryStage.setScene(scene);

        // 绘制数据点和决策边界
        drawPoints();
        drawDecisionBoundary();

        primaryStage.show();
    }

    private void initData() {
        points = new ArrayList<>();
        trainingSet = new ArrayList<>();
        testSet = new ArrayList<>();

        Random random = new Random();
        // 生成100个随机数据点
        for (int i = 0; i < 100; i++) {
            double x = random.nextDouble() * WIDTH;
            double y = random.nextDouble() * HEIGHT;
            Point point = new Point(x, y);
            points.add(point);
        }

        // 将前70个点作为训练集,后30个点作为测试集
        trainingSet.addAll(points.subList(0, 70));
        testSet.addAll(points.subList(70, 100));
    }

    private void drawPoints() {
        // 绘制训练集的点
        for (Point point : trainingSet) {
            Circle circle = new Circle(point.getX(), point.getY(), 5, Color.RED);
            root.getChildren().add(circle);
        }

        // 绘制测试集的点
        for (Point point : testSet) {
            Circle circle = new Circle(point.getX(), point.getY(), 5, Color.BLUE);
            root.getChildren().add(circle);
        }
    }

    private void drawDecisionBoundary() {
        // 绘制决策边界
        for (int x = 0; x < WIDTH; x++) {
            for (int y = 0; y < HEIGHT; y++) {
                Point point = new Point(x, y);
                // 使用K-最近邻算法预测该点的类别
                String predictedClass = predictClass(point);
                Color color = predictedClass.equals("A") ? Color.GREEN : Color.YELLOW;
                Rectangle rect = new Rectangle(x, y, 1, 1);
                rect.setFill(color);
                root.getChildren().add(rect);
            }
        }
    }

    private String predictClass(Point point) {
        // 使用K-最近邻算法预测数据点的类别
        List<Point> nearestNeighbors = findNearestNeighbors(point);
        int countA = 0;
        int countB = 0;

        for (Point neighbor : nearestNeighbors) {
            if (neighbor.getType().equals("A")) {
                countA++;
            } else {
                countB++;
            }
        }

        return countA > countB ? "A" : "B";
    }

    private List<Point> findNearestNeighbors(Point point) {
        // 寻找K个最近邻数据点
        List<Point> nearestNeighbors = new ArrayList<>();
        List<Double> distances = new ArrayList<>();

        for (Point trainingPoint : trainingSet) {
            double distance = calculateDistance(point, trainingPoint);
            int index = 0;
            for (double d : distances) {
                if (distance > d) {
                    break;
                }
                index++;
            }
            distances.add(index, distance);
            nearestNeighbors.add(index, trainingPoint);
        }

        return nearestNeighbors.subList(0, K);
    }

    private double calculateDistance(Point p1, Point p2) {
        // 计算两个点之间的欧式距
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

2022技术盘点之平台云原生架构演进之道|社区征文

[](https://kaliarch-bucket-1251990360.cos.ap-beijing.myqcloud.com/blog_img/20221214175418.png)- 全场景的安全架构规划:从网络边界、内部网络、各类基础设施、数据、业务应用到后期监控响应,运维管控,在各层... [](https://kaliarch-bucket-1251990360.cos.ap-beijing.myqcloud.com/blog_img/20221209181707.png)- 第一阶段:威胁建模(场景分析)梳理并绘制软件生命周期可能引发安全问题的场景;梳理平台架构存在安全风险的的...

「火山引擎」数据中台产品双月刊 VOL.04

内置加密算法,写入及查询时无需手动指定密钥。![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/24c1574b84794ea0b8870087567c5849~tplv-tlddhu82om-image.image?=&rk3s=8031c... =&rk3s=8031ce6d&x-expires=1715012430&x-signature=im5aGMkKD1cRB55%2BUkCXyXEEq%2FU%3D)## **活动推荐**### 【活动】超话数据 · 线上直播:高效分析 · 智能决策,教你复制「字节跳动」数据驱动路径![pictu...

9年演进史:字节跳动 10EB 级大数据存储实战

ZKFC 和 BookKeeper(不同于 QJM,BookKeeper 在大规模多节点数据同步上表现得更稳定可靠)。Name Node 负责存储整个 HDFS 集群的元数据信息,是整个系统的大脑。一旦故障,整个集群都会陷入不可用状态。因此 Name No... 当读取一个 packet 的时间超过阈值时,认为读取当前 packet 超时。如果一定时间窗口内超时 packet 的数量过多,则认为当前节点是慢节点。但这个问题在于以 packet 作为统计单位使得算法不够敏感,这样使得每次读慢节点...

「火山引擎」数智平台 VeDI 数据中台产品双月刊 VOL.04

内置加密算法,写入及查询时无需手动指定密钥。![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/24c1574b84794ea0b8870087567c5849~tplv-tlddhu82om-image.image?=&rk3s=8031... =&rk3s=8031ce6d&x-expires=1715012495&x-signature=XdCXvNx2Jk4ueLqfPLpJ%2Bnynoiw%3D)## **活动推荐**### 【活动】超话数据 · 线上直播:高效分析 · 智能决策,教你复制「字节跳动」数据驱动路径![pictur...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

K-最近邻算法:使用JavaFX绘制决策边界-优选内容

客户端 SDK
3.58该版本于 2024 年 3 月 12 日发布。 升级必看如果你需要将应用中使用的旧版本 RTC SDK 升级为最新版,参看:升级指南。 新增特性支持内部采集信号静音控制(不改变本端硬件)。可以选择静音或取消静音麦克风采集,而... 接口参看: 平台 Windows macOS Electron 接口 setVideoCaptureRotation setVideoCaptureRotation: setVideoCaptureRotation 根据进房时选择的业务场景自动适配音频降噪算法,满足多种场景下不同的降噪需求。支持...
2022技术盘点之平台云原生架构演进之道|社区征文
[](https://kaliarch-bucket-1251990360.cos.ap-beijing.myqcloud.com/blog_img/20221214175418.png)- 全场景的安全架构规划:从网络边界、内部网络、各类基础设施、数据、业务应用到后期监控响应,运维管控,在各层... [](https://kaliarch-bucket-1251990360.cos.ap-beijing.myqcloud.com/blog_img/20221209181707.png)- 第一阶段:威胁建模(场景分析)梳理并绘制软件生命周期可能引发安全问题的场景;梳理平台架构存在安全风险的的...
「火山引擎」数据中台产品双月刊 VOL.04
内置加密算法,写入及查询时无需手动指定密钥。![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/24c1574b84794ea0b8870087567c5849~tplv-tlddhu82om-image.image?=&rk3s=8031c... =&rk3s=8031ce6d&x-expires=1715012430&x-signature=im5aGMkKD1cRB55%2BUkCXyXEEq%2FU%3D)## **活动推荐**### 【活动】超话数据 · 线上直播:高效分析 · 智能决策,教你复制「字节跳动」数据驱动路径![pictu...
9年演进史:字节跳动 10EB 级大数据存储实战
ZKFC 和 BookKeeper(不同于 QJM,BookKeeper 在大规模多节点数据同步上表现得更稳定可靠)。Name Node 负责存储整个 HDFS 集群的元数据信息,是整个系统的大脑。一旦故障,整个集群都会陷入不可用状态。因此 Name No... 当读取一个 packet 的时间超过阈值时,认为读取当前 packet 超时。如果一定时间窗口内超时 packet 的数量过多,则认为当前节点是慢节点。但这个问题在于以 packet 作为统计单位使得算法不够敏感,这样使得每次读慢节点...

K-最近邻算法:使用JavaFX绘制决策边界-相关内容

火山引擎 DataLeap 计算治理自动化解决方案实践和思考

=&rk3s=8031ce6d&x-expires=1715012472&x-signature=TTa%2FzwAvc33noB65wT7XNJ61z1c%3D) 针对之前提及的优化场景,以下是一些具体的解决策略:- **稳定性优化**:推荐资源配额应基于任务的实际使用量,同时... **资源使用评估**:通过分析最近 3-7 天的资源使用累积指标,实时规则引擎可以评估整体的资源波动情况,为进一步的优化提供数据支持。- **稳定性与健康分策略**: **普通策略**:旨在保障系统的稳定性,通过...

火山引擎开发者社区技术年货|2022 年最受欢迎的技术文章合辑

特别是算法团队管理过程中的一些痛点。 **基于火山引擎 EMR 构建企业级数据湖仓**目前,数据湖仓开源的几个趋势是数据架构向 LakeHouse 方向发展;计算向精细化内存管理和高效执行方向发展,榨干硬件性能;多模计算,即组件边界逐渐模糊,向全领域能力扩展;以及分析实时化。其中 Delta Lake、IceBerg 和 Hudi 是大家使用较多的项目,其区别和选型也值得对比。点击👉 [**基于火山引擎 EMR 构建企业级数据湖仓**](http://mp.weix...

「火山引擎」数智平台 VeDI 数据中台产品双月刊 VOL.04

内置加密算法,写入及查询时无需手动指定密钥。 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/e67f51d95f2f489881a46d15bac16f8e~tplv-tlddhu82om-image.image?=&rk3s=80... =&rk3s=8031ce6d&x-expires=1715012495&x-signature=tMxqeQgs6TdeUM9kInKCAyiYwk0%3D) * * *## **活动推荐**### 【活动】超话数据 · 线上直播:高效分析 · 智能决策,教你复制「字节跳动」数据驱动路径...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

火山引擎 DataLeap:揭秘字节跳动业务背后的分布式数据治理思路

它帮助组织管理 他们的信息知识和作为决策依据* 维基百科对数据治理的定义:数据治理是一个涉及全体组织的数据管理概念,通过数据治理,确保在数据的整个生命周期中拥有高数据质量的能力,也是对业务目标的支持。数据... 确保治理边界清晰。> > > 难点二:业务影响大,目标对齐难。需完成存量的资产归属划分、改造生产开发体系,对增量定期人力打标,确保资产归属与权责边界清晰,因可能业务系统改造,会对业务发展造成影响。> > ...

干货|抖音集团数据治理经验:如何让计算治理自动化?

=&rk3s=8031ce6d&x-expires=1715012434&x-signature=l2yd1A4DtHDubw9EhJWqHGI%2BFzE%3D) 针对之前提及的优化场景,以下是一些具体的解决策略: ****●** 稳定性优化:**推荐资源配额... 通过分析最近 3-7 天的资源使用累积指标,实时规则引擎可以评估整体的资源波动情况,为进一步的优化提供数据支持。 **● 稳定性与健康分策略:** **普通策略** :旨在保障系统的稳定性,通过分析实...

干货 | 字节跳动数据质量动态探查及相关前端实现

比如算法建模和数据挖掘等领域。**探查可以有效的打通三个闭环:**1. 元数据管理 -> 探查 -> 数据预览探查(库表的质量报告)2. 数据监控 <-> 数据探查3. 动态探查 ->SQL-> 数据开发 -> 调试 -> 探查报告(质量分... 可以使用操作对数据进行预处理,并实时动态的展示统计分布结果。数据获取后的过程都由前端执行。**两者的对比示意图**![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/690e63613dd54c3986ad0d...

字节跳动罗旋:数据驱动让增长从玄学变为科学

使用频度也很高,每天都有大量访问。甚至有管理层手绘设计图,来讨论这些数据应该如何组织,数据产品应该如何交互。最高决策层往下,就是各业务的中层管理者们。他们除了关心某个业务板块的进展是否良好,有哪些待突破点等业务问题之外,也有很重的团队日常管理工作。很多企业,都会用数据来监测各项业务指标。但在是字节跳动,我们不仅监测业务指标数据,还把数据驱动用在日常管理工作中。比如,目标制定、OKR追踪管理、周报周会的进展同步...

火山引擎DataLeap数据质量动态探查及相关前端实现

比如算法建模和数据挖掘等领域。火山引擎DataLeap探查可以有效的打通三个闭环:**元数据** **管理 -> 探查 -> 数据预览探查(** **库表** **的质量报告)****数据监控 <-> 数据探查****动态探查 ->** **SQL**... K4%3D)## 名词解释> 全量探查:>> 基于库表的全量探查,后端引擎执行,展示探查后列的统计分布结果。>> 动态探查:>> 基于抽样的部分数据探查,展示字段明细,可以使用操作对数据进行预处理,并实时动态的展示统...

干货|数字平台的治理:以A/B测试平台在字节跳动的实践为例

(Facebook)、领英(LinkedIn)、亚马逊(Amazon)等,这些公司每年都会针对数百万用户开展超过1万次的在线对照实验。 **借鉴国外开展A/B测试的经验,2012年字节跳动在成立之初就引入这种实验方法进行算法迭... Libra主要供今日头条使用,支持推荐、广告、推送等业务的迭代。从2015年到2018年,Libra不断拓展服务边界,公司的其他头条系产品如西瓜视频等也接入Libra平台开展A/B测试。 2018年,在综合考量了全公司各项业...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询