概念
- 聚类分析:是按照个体的特征将它们分类,让同一个类别内的个体之间具有较高的相似度,不同类别之间具有较大差异性
- 无分类目标变量(Y)——无监督学习
K-Means划分法、DBSCAN密度法、层次聚类法
K—mans
k:聚类算法当中的个数
means:均值算法
K-Means:使用均值算法把数据分成K个类的算法
算法目标:
是把n个样本点划分到k个类中,使得每个点都属于离它最近的质心对应的类,以之作为聚类的标准
质心
是指一个类,内部所有样本点的均值
计算步骤
第一步:取得K个初始质心:从数据中随机抽取k个点作为初始聚类的中心,由这个中心代表各个类
第二步:吧每个点划分进相应的类:根据欧式距离最小原则,把每个点划分配进距离最近的类中
第三步:重新计算质心:根据均值等方法,重新计算每个类的质心
第四步:迭代计算质心:重复第二步和第三部,迭代计算质心
第五步:聚类完成:聚类中心不再发生移动
fit_transform是fit和transform的组合。
我们知道fit(x,y)在新手入门的例子中比较多,但是这里的fit_transform(x)的括号中只有一个参数,这是为什么呢?
fit(x,y)传两个参数的是有监督学习的算法,fit(x)传一个参数的是无监督学习的算法,比如降维、特征提取、标准化
然后解释为什么出来fit_transform()这个东西,下面是重点:
fit和transform没有任何关系,仅仅是数据处理的两个不同环节,之所以出来这么个函数名,仅仅是为了写代码方便,
所以会发现transform()和fit_transform()的运行结果是一样的。
注意:运行结果一模一样不代表这两个函数可以互相替换,绝对不可以!!!
transform函数是一定可以替换为fit_transform函数的
fit_transform函数不能替换为transform函数!!!理由解释如下:
sklearn里的封装好的各种算法都要fit、然后调用各种API方法,transform只是其中一个API方法,所以当你调用除transform之外的方法,必须要先fit,为了通用的写代码,还是分开写比较好
也就是说,这个fit相对于transform而言是没有任何意义的,但是相对于整个代码而言,fit是为后续的API函数服务的,所以fit_transform不能改写为transform。
--------------------- 本文来自 陈士林 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/appleyuchi/article/details/73503282?utm_source=copy