python进行图像识别与分类_使用机器学习模型快速进行图像分类识别

点击上方蓝色字体“州的先生”选择关注公众号

Python编程应用实战,尽在掌握

这是《Python AI极简入门》第5篇

零、前言

在上一篇,我们介绍了使用sklearn库快速创建一个用于预测房价的机器学习回归模型,并通过平均绝对误差、均方差和R3分数有效地评估了这个预测模型的效果。

在本篇,我们继续介绍借助sklearn库创建用于进行分类预测的机器学习模型。

对分类问题进行预测同样属于监督学习的范畴,通过对已知数据的类别的标记,来实现对未知数据的类别的预测和判定。

常见的应用领域包括:垃圾邮件识别、垃圾短信识别、图像分类识别等等。

常见的应用算法则有:SVM(支持向量机)、K紧邻、朴素贝叶斯、随机森林等等。

下面,我们就通过Digits手写数字集来进行机器学习分类模型的介绍。

一、初探手写数字数据集

本篇选用的手写数字数据集同样来自有sklearn.datasets子模块,其由著名的UCI 机器学习库提供:

49ae119a040a6fc80f72a1bd98a5e59a.png

该数据集由1797个8x8图像组成。每个图像,都是手写数字。

就像上一篇导入波士顿数据集一样,我们从sklearn模块中进行导入:

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
垃圾分类是一项非常重要的环保工作,而图像识别技术能够在垃圾分类中发挥重要作用。本文将介绍如何使用Python及其相关库实现垃圾分类图像识别分类。 首先,我们需要准备一些垃圾图片数据集,可以从网上下载或者自己拍摄收集。数据集需要包括有害垃圾、可回收垃圾、厨余垃圾和其他垃圾等分类。 接下来,我们需要使用Python的图像处理库Pillow和机器学习库scikit-learn来进行图像分类。具体步骤如下: 1.导入所需库 ```python from PIL import Image import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier ``` 2.读取图片数据集 ```python def load_data(): # 图片大小 size = (64, 64) # 数据集路径 data_path = 'data/' # 分类标签 labels = {'harmful': 0, 'recyclable': 1, 'kitchen': 2, 'other': 3} X, y = [], [] for label, tag in labels.items(): for i in range(1, 201): img_path = data_path + label + '/' + str(i) + '.jpg' img = Image.open(img_path).convert('RGB').resize(size) X.append(np.array(img)) y.append(tag) return np.array(X), np.array(y) ``` 3.数据集划分 将读取到的数据集划分为训练集和测试集,一般采用8:2的比例。 ```python def split_data(X, y): X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) return X_train, X_test, y_train, y_test ``` 4.特征提取 使用灰度化、去噪等技术提取图像的特征。 ```python def feature_extraction(X): # 灰度化 gray = np.mean(X, -1) # 去噪 blur = np.array([Image.fromarray(gray[i]).filter(ImageFilter.BLUR) for i in range(gray.shape[0])]) return blur.reshape(blur.shape[0], -1) ``` 5.模型训练和预测 使用KNN算法进行模型训练和预测。 ```python def knn(X_train, X_test, y_train): # KNN分类器 clf = KNeighborsClassifier(n_neighbors=5) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) return y_pred ``` 6.结果评估 使用accuracy_score函数计算模型的准确率。 ```python from sklearn.metrics import accuracy_score accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 完整代码如下: ```python from PIL import Image, ImageFilter import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # 载数据集 def load_data(): # 图片大小 size = (64, 64) # 数据集路径 data_path = 'data/' # 分类标签 labels = {'harmful': 0, 'recyclable': 1, 'kitchen': 2, 'other': 3} X, y = [], [] for label, tag in labels.items(): for i in range(1, 201): img_path = data_path + label + '/' + str(i) + '.jpg' img = Image.open(img_path).convert('RGB').resize(size) X.append(np.array(img)) y.append(tag) return np.array(X), np.array(y) # 数据集划分 def split_data(X, y): X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) return X_train, X_test, y_train, y_test # 特征提取 def feature_extraction(X): # 灰度化 gray = np.mean(X, -1) # 去噪 blur = np.array([Image.fromarray(gray[i]).filter(ImageFilter.BLUR) for i in range(gray.shape[0])]) return blur.reshape(blur.shape[0], -1) # KNN训练和预测 def knn(X_train, X_test, y_train): # 特征提取 X_train = feature_extraction(X_train) X_test = feature_extraction(X_test) # KNN分类器 clf = KNeighborsClassifier(n_neighbors=5) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) return y_pred if __name__ == '__main__': # 载数据集 X, y = load_data() # 数据集划分 X_train, X_test, y_train, y_test = split_data(X, y) # 模型训练和预测 y_pred = knn(X_train, X_test, y_train) # 结果评估 accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 运行上述代码后,模型将对测试集进行预测并输出准确率。这样我们就实现了基于图像识别的垃圾分类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值