在工程应用中,用python手写代码来从头实现一个算法的可能性非常低,这样不仅耗时耗力,还不一定能够写出构架清晰,稳定性强的模型。更多情况下,是分析采集到的数据,根据数据特征选择适合的算法,在工具包中调用算法,调整算法的参数,获取需要的信息,从而实现算法效率和效果之间的平衡。而sklearn,正是这样一个可以帮助我们高效实现算法应用的工具包。
Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一.
Sklearn 包含了很多种机器学习的方式:
· Classification 分类· Regression 回归· Clustering 非监督分类· Dimensionality reduction 数据降维· Model Selection 模型选择· Preprocessing 数据预处理我们总能够从这些方法中挑选出一个适合于自己问题的, 然后解决自己的问题.
sklearn有一个完整而丰富的官网,里面讲解了基于sklearn对所有算法的实现和简单应用。
Sklearn的安装直接在cmd命令行中输入:pip install scikit-learn
注意一点是需要自己的python版本要大于3.4
Sklearn常用算法模块sklearn中常用的模块有分类、回归、聚类、降维、模型选择、预处理。
分类:识别某个对象属于哪个类别,常用的算法有:SVM(支持向量机)、nearest neighbors(最近邻)、random forest(随机森林),常见的应用有:垃圾邮件识别、图像识别。
分类
回归:预测与对象相关联的连续值属性,常见的算法有:SVR(支持向量机)、 ridge regression(岭回归)、Lasso,常见的应用有:药物反应,预测股价。
回归
聚类:将相似对象自动分组,常用的算法有:k-Means、 spectral clustering、mean-shift,常见的应用有:客户细分,分组实验结果。
聚类
降维:减少要考虑的随机变量的数量,常见的算法有:PCA(主成分分析)、feature selection(特征选择)、non-negative matrix factorization(非负矩阵分解),常见的应用有:可视化,提高效率。
模型选择:比较,验证,选择参数和模型,常用的模块有:grid search(网格搜索)、cross validation(交叉验证)、 metrics(度量)。它的目标是通过参数调整提高精度。
预处理:特征提取和归一化,常用的模块有:preprocessing,feature extraction,常见的应用有:把输入数据(如文本)转换为机器学习算法可用的数据。
Sklearn算法模型选择
使用 Sklearn 时,先了解一下Sklearn都有什么模型方法,然后选择适当的方法,来达到你的目标。
Sklearn 官网提供了一个流程图, 蓝色圆圈内是判断条件,绿色方框内是可以选择的算法:
从 START 开始,首先看数据的样本是否 >50,小于则需要收集更多的数据。
由图中,可以看到算法有四类,分类,回归,聚类,降维。
其中 分类和回归是监督式学习,即每个数据对应一个 label。 聚类 是非监督式学习,即没有 label。 另外一类是 降维,当数据集有很多很多属性的时候,可以通过 降维 算法把属性归纳起来。
然后看问题属于哪一类问题,是分类还是回归,还是聚类,就选择相应的算法。 当然还要考虑数据的大小,例如 100K 是一个阈值。
可以发现有些方法是既可以作为分类,也可以作为回归,例如 SGD。
Sklearn聚类算法关于神经网络的分类与回归问题,小编前期的文章都分享了很多类似的文章,小伙伴们可以进入小编主页进行其他类似文章的阅读,今天我们就来看看Sklearn下面的聚类算法
聚类:将相似对象自动分组,常用的算法有:k-Means、 spectral clustering、mean-shift,常见的应用有:客户细分,分组实验结果
Sklearn官网也列举了不同的聚类算法的优缺点,可以参考如下
Sklearn聚类算法对比
Sklearn聚类算法官方列举了不同的算法,大家可以根据自己的数据特征,以及需要解决的问题,选择不同的算法,本期我们首先简单了解一下K-means算法
Sklearn聚类算法的K-means算法K-means聚类算法
聚类算法的过程:
随机选择k个中心 遍历所有样本,把样本划分到距离最近的一个中心 划分之后就有K个簇,计算每个簇的平均值作为新的质心 重复步骤2,直到达到停止条件停止:聚类中心不再发生变化;所有的距离最小;迭代次数达到设定值在python中,聚类算法集成在sklearn.cluster中
from sklearn.cluster import KMeans KMeans(n_clusters=8,init=&39;,n_init=10,max_iter=300,tol=0.0001, precompute_distances=&39;,verbose=0,random_state=None, copy_x=True,n_jobs=1,algorithm=&39;)参数:
n_clusters: 整形,默认=8 【生成的聚类数,即产生的质心(centroids)数 init: 有三个可选值:&39;, &39;,或者传递一个ndarray向量。 此参数指定初始化方法,默认值为 &39;。 (1)&39; 用一种特殊的方法选定初始质心从而能加速迭代过程的收敛 (2)&39; 随机从训练数据中选取初始质心。 (3)如果传递的是一个ndarray,则应该形如 (n_clusters, n_features) 并给出初始质心 n_init: 整形,默认=10用不同的质心初始化值运行算法的次数,最终解是在inertia意义下选出的最优结果 max_iter: 整形,默认=300执行一次k-means算法所进行的最大迭代数 tol: float形,默认值= 1e-4 与inertia结合来确定收敛条件 precompute_distances: 三个可选值,&39;,True 或者 False。预计算距离,计算速度更快但占用更多内存。 (1)&39;:如果 样本数乘以聚类数大于 12million 的话则不预计算距离 (2)True:总是预先计算距离 (3)False:永远不预先计算距离 自版本0.23起已弃用: &39;在版本0.22中已弃用,并将在0.25中删除。没有作用 verbose: int 默认为0,Verbosity mode random_state: 整形或 numpy.RandomState 类型,可选用于初始化质心的生成器(generator) 如果值为一个整数,则确定一个seed。此参数默认值为numpy的随机数生成器 copy_x: 布尔型,默认值=True 当我们precomputing distances时,将数据中心化会得到更准确的结果 如果把此参数值设为True,则原始数据不会被改变 如果是False,则会直接在原始数据上做修改并在函数返回值时将其还原 但是在计算过程中由于有对数据均值的加减运算,所以数据返回后,原始数据和计算前可能会有细小差别 n_jobs: 整形数。 指定计算所用的进程数。内部原理是同时进行n_init指定次数的计算。 (1)若值为 -1,则用所有的CPU进行运算 (2)若值为1,则不进行并行运算,这样的话方便调试 (3)若值小于-1,则用到的CPU数为(n_cpus + 1 + n_jobs) 如果 n_jobs值为-2,则用到的CPU数为总CPU数减1 从0.23版n_jobs开始不推荐使用:从0.23版开始不推荐使用,并将在0.25版中删除。 algorithm: 三种可选“auto”, “full”, “elkan”, default=”auto” 使用K均值算法。经典的EM风格算法是“full”的 通过使用三角形不等式,“ elkan”算法对于定义良好的聚类的数据更有效 但是,由于分配了额外的形状数组(n_samples,n_clusters),因此需要更多的内存。 目前,“ auto”(保持向后兼容性)选择“ elkan” 在版本0.18中更改:添加了Elkan算法以上算法中的参数虽然很多,但是绝大多数我们直接采用默认参数即可,这样在我们实际使用过程中,传递我们需要的几个参数便可。下期文章,就k-means算法我们使用几个案例来具体学习一下其算法的实际应用
聚类算法
本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除
热门信息
阅读 ()
1 注册微信号怎么注册第二个阅读 ()
2 怎么把照片变成卡通头像阅读 ()
3 手机越充越少电怎么解决