当前位置: 首页 > article >正文

基于最近邻数据进行分类

完整代码:

import torch
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

# 生成一个简单的数据集 (2个特征和2个分类)
# X为输入特征,y为标签
X = np.array([[1, 2], [2, 3], [3, 4], [5, 7], [6, 8], [7, 9], [8, 10], [3, 6], [4, 5], [6, 4]])
y = np.array([0, 0, 0, 1, 1, 1, 1, 0, 0, 1])

# 数据转换为 PyTorch 张量
X_tensor = torch.tensor(X, dtype=torch.float32)
y_tensor = torch.tensor(y, dtype=torch.long)

# 打印数据
print("Features:")
print(X_tensor)
print("Labels:")
print(y_tensor)

# 使用 sklearn KNN 分类器,调整邻居数量为 5
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X, y)

# 预测
y_pred = knn.predict(X)

# 计算准确率
accuracy = accuracy_score(y, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")

# 可视化数据
plt.figure(figsize=(6, 4))
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='bwr', marker='o', edgecolor='k', s=100)
plt.title("KNN Classification Example")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()

# 测试:给定新的输入数据进行预测
test_data = np.array([[5, 6], [2, 3]])
test_prediction = knn.predict(test_data)

print(f"Predictions for test data {test_data} are {test_prediction}")
  • 生成数据:创建了一个具有 2 个特征和 2 个类别标签的数据集。X 是输入特征,y 是标签。
  • 转换为 PyTorch 张量:虽然这里我们不需要在 KNN 算法中使用 PyTorch,但我们将数据转换为 PyTorch 张量,显示如何与 PyTorch 数据结构进行交互。
  • KNN 分类器:使用 sklearn.neighbors.KNeighborsClassifier 创建并训练 KNN 模型。我们将 n_neighbors 设置为 5,即选择 5 个最近邻。
  • 预测与准确率:使用训练好的模型对所有数据进行预测,并计算准确率。
  • 可视化:使用 matplotlib 将数据点可视化,数据点的颜色根据标签进行区分。
  • 测试预测:我们对新的测试数据点 [5, 6][2, 3] 进行预测。
  • 结果:
  • Features:
    tensor([[ 1.,  2.],
            [ 2.,  3.],
            [ 3.,  4.],
            [ 5.,  7.],
            [ 6.,  8.],
            [ 7.,  9.],
            [ 8., 10.],
            [ 3.,  6.],
            [ 4.,  5.],
            [ 6.,  4.]])
    Labels:
    tensor([0, 0, 0, 1, 1, 1, 1, 0, 0, 1])
    Accuracy: 90.00%
    Predictions for test data [[5 6]
     [2 3]] are [1 0]


http://www.kler.cn/a/524418.html

相关文章:

  • 17 一个高并发的系统架构如何设计
  • ORA-04031 错误
  • 马尔科夫模型和隐马尔科夫模型区别
  • RK3588平台开发系列讲解(ARM篇)ARM64底层中断处理
  • BOM对象location与数组操作结合——查询串提取案例
  • MySQL(单表访问)
  • 蓝牙技术在物联网中的应用有哪些
  • xclode版本
  • AI大模型开发原理篇-1:语言模型雏形之N-Gram模型
  • 【Pandas】pandas Series cummax
  • JavaScript_03 超简计算器
  • 深入理解指针(2)
  • Apple M1 ARM MacBook 安装 Apache TVM
  • VScode 插件开发 国际化帮助工具
  • [C语言日寄] 源码、补码、反码介绍
  • 【后端】Flask
  • IDEA常用快捷键
  • 算法基础学习——二分查找(附带Java模板)
  • 消息队列篇--通信协议篇--应用层协议和传输层协议理解
  • wx044基于springboot+vue+uniapp的智慧物业平台小程序
  • FastStone Image Viewer图像处理软件安装步骤(百度网盘链接)
  • 51单片机(STC89C52)开发:点亮一个小灯
  • 工作总结:git篇
  • C++并发编程指南05
  • 当贝 F7 Pro 与皮影戏:跨时空的光影对话,点亮家庭娱乐生活
  • 简单的排序算法