大家好,今天来介绍sklearn库的功能的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
Sklearn库
Python Scikit-learn:一组简单有效的工具集。依赖Python和NumPy、SciPy、matplotlib库。是开源和可复用的
Sklearn是Scikit-learn的简称,是基于Python的第三方模块,集成了常用的机器学习方法,在进行学习任务时,并不需要实现算法,只需要简单的调用库中提供的模块就能完成大多数的机器学习任务
Sklearn是在NumPy、SciPy、matplotlib的基础上开发而成,因此宴好安装前需要先安装依赖库
安装顺序:NumPy库、晌旁铅SciPy库、matplotlib库、Sklearn库
目录
Python机器学习应启樱用
一、 Sklearn库
二、 无监督学习
三、 有监督学习
sklearn导入自己的图片
sklearn库主要是用于机器学习算法的实现和数据处理,不支持导入图片这类功能。亩培因此,如果需要导入自己的图片,需要使用其他的库来实现,如Pillow、OpenCV等。
Pillow是Python的一个图像处理库,可以实现图像的读取、编辑、保存等功能,对于sklearn库无法处理的图像数据,可以使用Pillow来将其转换为sklearn可处理的数据格式。比如,可以将图像转换为灰度图像、二值图像或者RGB图像,然后将其转换为numpy数组格式,再输入到sklearn算法中进行训练和预测。
OpenCV是一个开源的计算机视觉库,主要用于图像和视频处理。它支持多种编程语言,包吵哗括Python。使用OpenCV可以实现图像的读取、处理、显示等功能,还支持图像的特征提取和匹升耐行配等高级功能。通过OpenCV,我们可以将图像转换为numpy数组格式,然后输入到sklearn算法中进行训练和预测。
综上所述,虽然sklearn库不支持导入自己的图片,但是我们可以使用其他的图像处理库来实现,将图像转换为numpy数组格式,再输入到sklearn算法中进行训练和预测。
1、scikitlearn和tensorflow的区别
1、scikit-learn和tensorflow的区别
功能不同
Scikit-learn(sklearn)的定位是通用机器学习库 ,而 TensorFlow(tf)的定位主要是深度学习库 。一个显而易见的不同:tf并未提供sklearn那种强大的特征工程,如维度压缩、特征选择等。究其根本,我认为是因为机器学习模型的两种不同的处理数据的方式:
传统机器学习:利用特征工程(feature engineering),人为对数岁握据进行提炼清洗
深度学习:利用表示学习(representation learning),机器销雀猛学习模型自身对数据进行提炼
sklearn更倾向于使用者可以自行对数据进行处理 ,比如选择特征、亏桥压缩维度、转换格式,是传统机器学习库。而以tf为代表的深度学习库会自动从数据中抽取有效特征,而不需要人为的来做这件事情,因此并未提供类似的功能。
1、scikit-learn和tensorflow的区别 https://www.jianshu.com/p/0837b7c6ce10
使用 sklearn 库中的 KMeans 实现彩色图像聚类分割
sklearn 库是最为常用且经典的机器学习库,里面封装了许多机器学习算法,此篇文章使用此库中的 KMeans 算法,从而实现图像的聚类分割。
本文不讲理论,只谈应用。
除了 sklearn 库之外,还需要一些图像处理的库,我引入了如下几个库:
我使用了 pylab 库来读入图片:
此时读入的 img 是一个三维 numpy 数组,其形状为 (height, width, 3) ,其中3是指通道数,即 RGB 三个通道。
但是, KMeans 传入的参数必须是二维数组,故,还需要将其打散为二维:
在此构建时,只需要使用最简单的方法即可:
参数有很多,我在构建的时候除了 n_clusters 都使用的默认值:
然后,使用 fit() 进行训练山滚:
聚类之后,有很多参数,比较重要的,以及此处需要用到的主要有俩:
聚类完成之后,需要将每个像素点重新填色,将同一类的像素点均填为此类聚类中心的颜色。
在此之前,首先需要得到图片的高度和宽度:
首先用 image.new() 重新创建一个图片,其语法如下:
然后需要用 putpixel() 方如渗法来填充像素,但是在此之前,还需要处理几个小细渣唯脊节:
RGB图中,每个通道都是 0-255 之间的整数,但是, kmeans.cluster_centers_ 中元素类型却是 float64 ,故在填充之前,还需要小小处理一番,将元素变为 int32 类型的。
直接转变类型不太合适,因为 kmeans.cluster_centers_ 毕竟是类似于一个属性值的东西,而且这个名字太长,换一个简短的也是好的。故重新复制一份再使用 astype 更改数据类型即可。
上面便提到, kmeans.labels_ 是一个一维数组,但是图片是二维的,所以将其恢复过来即可:
然后便可以 填充像素 了:
这里需要注意 putpixel() 方法,其的两个参数:
最后保存图片即可:
我使用了王者荣耀大乔的图片来做测试:
本文地址:https://gpu.xuandashi.com/73410.html,转载请说明来源于:渲大师
声明:本站部分内容来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场!