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

江苏营销型网站公司毕节市交通建设集团网站

江苏营销型网站公司,毕节市交通建设集团网站,兰州网页制作,网站建设企业属于什么类型的公司K-means#xff08;k-均值#xff0c;也记为kmeans#xff09;是聚类算法中的一种#xff0c;由于其原理简单#xff0c;可解释强#xff0c;实现方便#xff0c;收敛速度快#xff0c;在数据挖掘、聚类分析、数据聚类、模式识别、金融风控、数据科学、智能营销和数据运…K-meansk-均值也记为kmeans是聚类算法中的一种由于其原理简单可解释强实现方便收敛速度快在数据挖掘、聚类分析、数据聚类、模式识别、金融风控、数据科学、智能营销和数据运营等领域有着广泛的应用。 K-means 是我们最常用的基于欧式距离的聚类算法其认为两个目标的距离越近相似度越大。 一、K-means基础 1.1牧师-村民模型 K-means 有一个著名的解释牧师—村民模型 有四个牧师去郊区布道一开始牧师们随意选了几个布道点并且把这几个布道点的情况公告给了郊区所有的村民于是每个村民到离自己家最近的布道点去听课。 听课之后大家觉得距离太远了于是每个牧师统计了一下自己的课上所有的村民的地址搬到了所有地址的中心地带并且在海报上更新了自己的布道点的位置。 牧师每一次移动不可能离所有人都更近有的人发现A牧师移动以后自己还不如去B牧师处听课更近于是每个村民又去了离自己最近的布道点…… 就这样牧师每个礼拜更新自己的位置村民根据自己的情况选择布道点最终稳定了下来。 我们可以看到该牧师的目的是为了让每个村民到其最近中心点的距离和最小。 1.2聚类 什么是聚类 通俗说聚类是将一堆数据划分成到不同的组中。 聚类Clustering的通俗定义将一堆数据划分到不同的组中。一种无监督学习其产生的类别是未知的。 聚类的学术定义把一个数据对象的集合划分成簇子集使簇内对象彼此相似簇间对象不相似的过程。 1.3聚类分类 在聚类算法中常用的是 K-means 和 DBSCAN但本文聚焦 K-means 。 HMM即隐马尔可夫模型HiddenMarkovModel在语音识别、机器翻译、中文分词、命名实体识别、词性标注、基因识别等领域有广泛的使用。 1.4基于划分的聚类算法 学术性的定义按照某种目标将数据划分成若干个组划分的结果是使目标函数值最大化或最小化。 通俗性的定义根据样本特征的相似度或距离远近将其划分为若干个类。 1.4.1相似度 什么是相似度即两个对象的相似程度。 相似度的原理 原理代表基于距离的度量距离小相似度大欧氏距离基于夹角的度量夹角小相似度大余弦相似度 1.4.2距离 什么是距离即两点的距离。 二、K-means原理 K-means其中K是指类的数量means是指均值。 2.1K-means原理 K-means是基于样本集合划分的聚类算法是一种无监督学习。 K-means的思想 将样本集合划分为k个子集构成k个类将n个样本分到k个类中每个样本到其所属类的中心距离最小。 K-means的假设一个样本只属于一个类或者类的交集为空集。 K-means是怎么判断类别的又是怎么判断相似的 通过K-means算法原理可知K-means的本质是物以类聚。 2.2K-means算法 K-means 的算法步骤为 选择初始化的 k 个样本作为初始聚类中心  针对数据集中每个样本  计算它到 k 个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中针对每个类别重新计算它的聚类中心 即属于该类的所有样本的质心重复上面 2 3 两步操作直到达到某个中止条件迭代次数、最小误差变化等。 K-means聚类算法的主要步骤 第一步初始化聚类中心随机选取k个样本作为初始的聚类中心。k需要提前确定)第二步给聚类中心分配样本计算每个样本与各个聚类中心之间的距离把每个样本分配给距离它最近的聚类中心初始中心的选择影响聚类结果第三步移动聚类中心 新的聚类中心移动到这个聚类所有样本的平均值处可能存在空簇第四步停止移动重复第2步直到聚类中心不再移动为止 注意K-means算法采用的是迭代的方法得到局部最优解 2.2.1. K-means如何确定 K 值 K-means 常常根据 SSE 和轮廓系数确定 K 值。 方法一尝试不同k值多选取几个k值对比聚类效果选择最优的k值。 方法二结合业务特点假定想要把文章分为兵乒球篮球综合三个类型就设定k3。 方法三根据SSE和轮廓系数SSE越小聚类效果越好轮廓系数越大聚类效果越好。 2.2.2. K-means如何选取初始中心点 K-means选择不同的初始中心会得到不同的聚类结果。 K-means 常使用 K-means 方法确定初始中心点。 K-means选择初始的聚类中心之间的相互距离要尽可能的远。 二分K-means选择误差最大的类进行二分分裂。 2.2.3. K-means如何处理空簇 聚类中心没有被分配到样本常常将其删除。 空簇问题K-means中计划聚成20类结果才聚成19类1类为空。 空簇原因聚类中心没有被分配到样本。 解决办法 法一其他簇心的均值点法二删除空族法三最远离聚类中心的点 2.3. K- means特征工程 类别特征、大数值特征都不适用于 K-means 聚类。 原因K-means是基于距离的而类别没有距离。 k-means对异常值明显比如年龄、金额等。 2.4. K- means评估 什么样的 K-means 聚类才是好的 K-means 聚类 实际应用中常常把 SSESum of Squared Errors误差平方和 与轮廓系数Silhouette Coefficient结合使用评估聚类模型的效果。 SSE误差平方和Sum of Squared Errors最小聚类效果最好。 轮廓系数Silhouette Coefficient轮廓系数越大聚类效果越好。 2.4.1. SSE SSE越小聚类效果越好。 2.4.2. 轮廓系数 轮廓系数越大聚类效果越好。 2.5复杂度 先看下伪代码 获取数据 n 个 m 维的数据 随机生成 K 个 m 维的点 while(t)for(int i0;i n;i)for(int j0;j k;j)计算点 i 到类 j 的距离for(int i0;i k;i)1. 找出所有属于自己这一类的所有数据点2. 把自己的坐标修改为这些数据点的中心点坐标 end 时间复杂度 其中t 为迭代次数k 为簇的数目n 为样本点数m 为样本点维度。 空间复杂度 其中k 为簇的数目m 为样本点维度n 为样本点数。 三、K-means应用 3.1K-means的python实现 # -*- coding:utf-8 -*- import numpy as np from matplotlib import pyplotclass K_Means(object):# k是分组数tolerance‘中心点误差’max_iter是迭代次数def __init__(self, k2, tolerance0.0001, max_iter300):self.k_ kself.tolerance_ toleranceself.max_iter_ max_iterdef fit(self, data):self.centers_ {}for i in range(self.k_):self.centers_[i] data[i]for i in range(self.max_iter_):self.clf_ {}for i in range(self.k_):self.clf_[i] []# print(质点:,self.centers_)for feature in data:# distances [np.linalg.norm(feature-self.centers[center]) for center in self.centers]distances []for center in self.centers_:# 欧拉距离# np.sqrt(np.sum((features-self.centers_[center])**2))distances.append(np.linalg.norm(feature - self.centers_[center]))classification distances.index(min(distances))self.clf_[classification].append(feature)# print(分组情况:,self.clf_)prev_centers dict(self.centers_)for c in self.clf_:self.centers_[c] np.average(self.clf_[c], axis0)# 中心点是否在误差范围optimized Truefor center in self.centers_:org_centers prev_centers[center]cur_centers self.centers_[center]if np.sum((cur_centers - org_centers) / org_centers * 100.0) self.tolerance_:optimized Falseif optimized:breakdef predict(self, p_data):distances [np.linalg.norm(p_data - self.centers_[center]) for center in self.centers_]index distances.index(min(distances))return indexif __name__ __main__:x np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])k_means K_Means(k2)k_means.fit(x)print(k_means.centers_)for center in k_means.centers_:pyplot.scatter(k_means.centers_[center][0], k_means.centers_[center][1], marker*, s150)for cat in k_means.clf_:for point in k_means.clf_[cat]:pyplot.scatter(point[0], point[1], c(r if cat 0 else b))predict [[2, 1], [6, 9]]for feature in predict:cat k_means.predict(predict)pyplot.scatter(feature[0], feature[1], c(r if cat 0 else b), markerx)pyplot.show() 运行结果如下 {0: array([1.16666667, 1.46666667]), 1: array([7.33333333, 9. ])} 备注*是两组数据的”中心点”x是预测点分组。 3.2K-means的Sklearn实现 import numpy as np from sklearn.cluster import KMeans from matplotlib import pyplotif __name__ __main__:x np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])# 把上面数据点分为两组非监督学习 clf KMeans(n_clusters2) clf.fit(x) # 分组centers clf.cluster_centers_ # 两组数据点的中心点 labels clf.labels_ # 每个数据点所属分组 print(centers) print(labels)for i in range(len(labels)):pyplot.scatter(x[i][0], x[i][1], c(r if labels[i] 0 else b)) pyplot.scatter(centers[:, 0], centers[:, 1], marker*, s100)# 预测 predict [[2, 1], [6, 9]] label clf.predict(predict) for i in range(len(label)):pyplot.scatter(predict[i][0], predict[i][1], c(r if label[i] 0 else b), markerx)pyplot.show() 运行结果如下 [[7.33333333 9. ][1.16666667 1.46666667]] [1 1 0 0 1 0] 备注*是两组数据的”中心点”x是预测点分组。 3.3. 用户聚类分群 数据集titanic.xls泰坦尼克号遇难者与幸存者名单 titanic.xls的数据集获取地址 titanic.xls 任务基于除survived字段外的数据使用k-means对用户进行分组生/死 聚类的用户分群常用在早期尝试进行用户探索。实际落地常常结合用户标签或者用户画像进行用户分群。 用户聚类分群的python代码如下 # -*- coding:utf-8 -*- import numpy as np from sklearn.cluster import KMeans from sklearn import preprocessing import pandas as pd# 加载数据 df pd.read_excel(titanic.xls) df.drop([body, name, ticket], 1, inplaceTrue) df.fillna(0, inplaceTrue) # 把NaN替换为0# 把字符串映射为数字例如{female:1, male:0} df_map {} cols df.columns.values for col in cols:if df[col].dtype ! np.int64 and df[col].dtype ! np.float64:temp {}x 0for ele in set(df[col].values.tolist()):if ele not in temp:temp[ele] xx 1df_map[df[col].name] tempdf[col] list(map(lambda val: temp[val], df[col]))# 将每一列特征标准化为标准正太分布 x np.array(df.drop([survived], 1).astype(float)) x preprocessing.scale(x) clf KMeans(n_clusters2) clf.fit(x)# 计算分组准确率 y np.array(df[survived]) correct 0 for i in range(len(x)):predict_data np.array(x[i].astype(float))predict_data predict_data.reshape(-1, len(predict_data))predict clf.predict(predict_data)if predict[0] y[i]:correct 1print(correct * 1.0 / len(x)) 执行结果 第一次执行0.6974789915966386 第二次执行0.3017570664629488 注意结果出现很大波动原因是它随机分配组(生:0,死:1(生:1,死:0。 四、K-means总结 4.1K-means的优缺点 4.1.1优点 容易理解聚类效果不错虽然是局部最优 但往往局部最优就够了原理简单实现方便收敛速度快处理大数据集的时候该算法可以保证较好的伸缩性当簇近似高斯分布的时候效果非常不错算法复杂度低聚类效果较优模型的可解释性较强调参只需要调类数k 。 4.1.2 缺点 K 值需要人为设定不同 K 值得到的结果不一样k的选取不好把握对初始的簇中心敏感不同选取方式会得到不同结果对异常值敏感样本只能归为一类不适合多分类任务不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类如果数据的类型不平衡则聚类效果不佳采用的是迭代的方法得到局部最优解对于噪音和异常点比较敏感 什么是凸集 (convex set) 凸集 (convex set) 欧几里得空间的一个子集其中任意两点之间的连线仍完全落在该子集内。例如下面的两个图形都是凸集 所以凸的数据集即数据集的样本呈现凸集分布。 相反下面的两个图形都不是凸集   所以不是凸的数据集即是数据集的样本呈现的不是凸集分布。 4.2K-means的改进 针对K-means缺点K-means有许多改进算法如数据预处理去除异常点合理选择 K 值高维映射等。 K-means改进 缺点改进1、k的选取不好把握ISODATA2、对初始聚类中心敏感k-means3、对于不是凸的数据集比较难以收敛DESCAN4、如果数据的类型不平衡则聚类效果不佳CUSBoost5、采用的是迭代的方法得到局部最优解二分K-means6、对于噪音和异常点比较敏感K-Mediods 【机器学习】K-means非常详细 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/78798251 Kmeans聚类算法原理与实现 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/152286357 4.3聚类和分类的区别 聚类和分类的区别是什么呢 最大区别是聚类是无监督的分类是有监督学习。 其中机器学习的分类按输出类别标签不同可以分为二分类Binary Classification、多分类Multi-Class Classification、多标签分类Multi-Label Classification。
http://www.pierceye.com/news/455581/

相关文章:

  • 天津网站开发工资水平建设网站如何写文案
  • 做a漫画在线观看网站注册个免费网站
  • 杭州网站设计网页长安东莞网站推广
  • 福州网站建设软件怎样上传自己的网站
  • wordpress手机站如何做wordpress 查询文章
  • 企业专业网站设计公wordpress打开慢
  • 网站制作方案怎么做青岛住房和城乡建设部网站
  • 织梦系统做的网站忘记登录密码百家 主题 wordpress
  • 营销推广软文婚纱摄影网站seo方案
  • 上海网站制作网站建设汶川县建设局网站
  • 东莞seo网站推广怎么做能够让网站流量大
  • 郑州网站建设做推广吗灰色关键词排名方法
  • 在线推广企业网站的方法有哪些网站推广到海外怎么做
  • 怎么用视频做网站首页php网站开发职位
  • 网站平台怎么做typecho跟wordpress
  • 网站建设找什么公司微网站建设流程
  • 如何制作数据库网站哔哩哔哩推广平台
  • 免费建立手机网站网站建设下载模板之后怎么修改
  • wordpress 网站暂停做社区生意的网站
  • 渭南做网站的公司商业网站后缀名
  • 凡科建站电话邙山网站建设
  • 哪些网站可以做ppi小程序源码什么意思
  • 做公司网站都需要哪些东西产品画册设计公司
  • 网页优化与网站优西安开发网站建设
  • 大连建设监察执法网站免费icp备案服务码
  • 潮州做网站京东网站建设步骤
  • 遂宁模板建站公司懂福溶州做戒网站
  • 百度网站下拉排名农村电商平台发展现状
  • 移动端网站开发与网页开发区别wordpress首页文章显示
  • 有什么网站是layui做的wordpress 微信咨询菜单