K-最近邻(KNN)分类器

简介: 【7月更文挑战第26天】

knn 模型训练

image.png

data数据集的根目录, windows这样使用


# 加载数据
data_folder = './data'
# data_folder = 'D:/\st_dev/\data'
print(data_folder)
X, y = load_data(data_folder)

da 文件夹,da是数据集的标签, da中存放一类相似的图片数据。 用于训练

re 存放两一类相似 图片数据; re是识别后的标签。

模型文件保存项目根目录


# 保存模型
model_filename = 'knn_model.pkl'
with open(model_filename, 'wb') as model_file:
    pickle.dump(knn_classifier, model_file)

image.png

`
``js
import os
import pickle
from skimage import io, transform
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

导入UGOT机器人库

from ugot import ugot
import cv2

函数:从文件夹加载图像数据

def load_data(data_folder):
data = []
labels = []
for folder in os.listdir(data_folder):
folder_path = os.path.join(data_folder, folder)
print("正在:", folder_path) # 新增的打印语句
if os.path.isdir(folder_path):
label = folder
for filename in os.listdir(folder_path):
print("正在读取文件:", filename) # 新增的打印语句
img_path = os.path.join(folder_path, filename)
img = io.imread(img_path)
img = transform.resize(img, (50, 50)) # 调整图像大小为50x50像素
data.append(img.flatten()) # 将图像数据展平
labels.append(label)
return data, labels

加载数据

data_folder = './data'

data_folder = 'D:/\st_dev/\data'

print(data_folder)
X, y = load_data(data_folder)

将数据拆分为训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

初始化KNN分类器

knn_classifier = KNeighborsClassifier(n_neighbors=1)

训练模型

knn_classifier.fit(X_train, y_train)

评估模型

accuracy = knn_classifier.score(X_test, y_test)
print("Accuracy:", accuracy)

保存模型

model_filename = 'knn_model.pkl'
with open(model_filename, 'wb') as model_file:
pickle.dump(knn_classifier, model_file)

加载模型

with open(model_filename, 'rb') as model_file:
loaded_model = pickle.load(model_file)

函数:预测图像内容

def predict_image(img):
img = transform.resize(img, (50, 50))
flattened_img = img.flatten()
prediction = loaded_model.predict([flattened_img])
return prediction[0]

def predict_and_display_image(img):
img_resized = transform.resize(img, (50, 50))
flattened_img = img_resized.flatten()
prediction = loaded_model.predict([flattened_img])[0]
print(prediction) #调试信息

# 在图像上显示预测结果
cv2.putText(img, f'Prediction: {prediction}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2)


cv2.imshow('Image', img)
cv2.waitKey(1)
# cv2.destroyAllWindows()

初始化UGOT机器人

got = ugot.UGOT()
got.initialize('10.10.4.230')
got.open_camera()

try:
while True:
frame = got.read_camera_data()
if frame is not None:
nparr = np.frombuffer(frame, np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

        # 使用加载的模型进行预测并在图像上显示结果
        predict_and_display_image(img)

        # 在此处添加物体跟随和闭环控制逻辑
        # print('-------:', got.get_knn_result('knn_model'))

except KeyboardInterrupt:
print('-----KeyboardInterrupt')

```

image.png
image.png

目录
相关文章
|
2月前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理
|
2月前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
3月前
|
算法 Python
KNN
【9月更文挑战第11天】
56 13
|
3月前
|
算法 大数据
K-最近邻(KNN)
K-最近邻(KNN)
|
3月前
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
5月前
knn增强数据训练
【7月更文挑战第27天】
43 10
|
5月前
创建KNN类
【7月更文挑战第22天】创建KNN类。
37 8
|
5月前
knn增强数据训练
【7月更文挑战第28天】
48 2
|
5月前
|
机器学习/深度学习 数据采集 算法
Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战
Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战
|
6月前
|
机器学习/深度学习 算法
基于鲸鱼优化的knn分类特征选择算法matlab仿真
**基于WOA的KNN特征选择算法摘要** 该研究提出了一种融合鲸鱼优化算法(WOA)与K近邻(KNN)分类器的特征选择方法,旨在提升KNN的分类精度。在MATLAB2022a中实现,WOA负责优化特征子集,通过模拟鲸鱼捕食行为的螺旋式和包围策略搜索最佳特征。KNN则用于评估特征子集的性能。算法流程包括WOA参数初始化、特征二进制编码、适应度函数定义(以分类准确率为基准)、WOA迭代搜索及最优解输出。该方法有效地结合了启发式搜索与机器学习,优化特征选择,提高分类性能。