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

机器学习day2

使用KNN算法实现机器学习 给我一个苹果的图片 我能预测出这个是一个苹果

代码:

# 导入需要的库
# 读图
import os
import cv2
# 绘图
import matplotlib.pyplot as plt
import seaborn as sns
# 数组
import numpy as np
from skimage.feature import hog
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier# 设置主题
sns.set_theme(style="darkgrid")
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 获取苹果数据集
def apple_analysis(apple,no_apple):xx,yy=[],[]# 苹果图像处理# os.listdir() 列出指定目录下的所有文件和子目录名称for file in os.listdir(apple):if file.endswith(('.jpg','.png')):features = feature_engine(os.path.join(apple,file))xx.append(features)yy.append(1)  # 苹果标签为1# 处理非苹果图片for file in os.listdir(no_apple):if file.endswith(('.jpg', '.png')):features = feature_engine(os.path.join(no_apple,file))xx.append(features)yy.append(0)  # 非苹果标签为0return np.array(xx),np.array(yy)
# 特征工程
def feature_engine(path,target_size=(128,128)):# 读取图像img=cv2.imread(path)# 转换图像格式为RGBimg=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)# 统一图像大小img_resized=cv2.resize(img,target_size)# 灰度图和hsv图image_gray=cv2.cvtColor(img_resized,cv2.COLOR_RGB2GRAY)image_hsv=cv2.cvtColor(img_resized,cv2.COLOR_RGB2HSV)# HOG特征hog_feat=hog(image_gray,orientations=9,  # 将180°角度划分为9个区间 捕获苹果圆形轮廓渐变方向特征pixels_per_cell=(16, 16),  # 图像划分为16✖16像素细胞单元 平衡捕捉苹果纹理cells_per_block=(2, 2),  # 每个特征块包含2✖2个细胞单元 归一化,增强光照不变性,适合不同光线下的苹果visualize=False # 不返回特征可视化图像)# 颜色直方图hist_feat = cv2.calcHist([image_hsv],[0, 1, 2],None,[8, 8, 8],[0, 256, 0, 256, 0, 256]).flatten()# 合并特征return np.hstack([hog_feat, hist_feat])if __name__ == '__main__':# 数据准备apple_dir = "./apple/apple"non_apple_dir = "./apple/no_apple"x,y=apple_analysis(apple_dir,non_apple_dir)# 数据集划分x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=15)# 模型训练KNN_model=KNeighborsClassifier(n_neighbors=5)KNN_model.fit(x_train,y_train)# 模型评估y_predict=KNN_model.predict(x_test)print("对比:",y_predict == y_test)# 预测示例test_path='./banana.png'    # test_path='./apple.png'test_features = feature_engine(test_path)test_predict=KNN_model.predict(test_features)print(f"\nThe image is: {'Apple' if test_predict[0] == 1 else 'not Apple'}")# 可视化测试图片img = cv2.cvtColor(cv2.imread(test_path), cv2.COLOR_BGR2RGB)plt.imshow(img)plt.title(f" Prediction: {'Is Apple' if test_predict[0] == 1 else 'Not Apple'}")plt.axis('off')plt.show()

运行结果:

http://www.xdnf.cn/news/196453.html

相关文章:

  • 深入理解链表:从基础操作到高频面试题解析
  • 省哲学社科基金项目申请书(论证活页)模版框架参考
  • 013几何数学——算法备赛
  • web技术与Nginx网站服务
  • word2Vec与GloVe的区别
  • LeetCode 1482. 制作 m 束花所需的最少天数
  • 【SpringMVC】详解参数传递与实战指南
  • MANIPTRANS:通过残差学习实现高效的灵巧双手操作迁移
  • 策略模式:灵活的算法封装与切换
  • 实验研究 | 千眼狼高速摄像机驱动精密制造创新
  • 9.学习笔记-springboot(P90-P104)
  • Spring MVC 基础 - 从零构建企业级Web应用
  • 从零到一MCP详细教程——入门
  • 深度相机(一)——深度相机模型及用途介绍
  • vuex刷新数据丢失解决方案-vuex-persist
  • 软考-软件设计师中级备考 6、数据结构 图
  • springboot 实现敏感信息脱敏
  • 昆明理工大学2025年891计算机专业核心考研真题解析
  • react中有哪几种数据结构?分别是干什么的?
  • 易基因:何川团队开发新m6A测序方法 可温和条件下高分辨率/低背景噪声检测m6A修饰|Nature子刊
  • MCU通用输入输出端口(GPIO)设计指南
  • 在另外一台可以科学下载的电脑用ollama下载模型后,怎么导入到另外一台服务器的ollama使用
  • 龙虎榜——20250428
  • 前端excel导出
  • 北重数控滑台加工厂家:汽车零部件试验铁地板-安全性能的测试方法
  • dameng-mcp-server达梦MCP服务
  • Web基础和HTTP协议
  • cuDNN 安装、版本查看及指定版本删除操作指南
  • 网络准入控制系统推荐:2025年构建企业网络安全的第一道防线
  • 运维打铁:域名详解及常见问题解决