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

电子商务网站建设课件苏州哪里做网站

电子商务网站建设课件,苏州哪里做网站,宜春做网站的联系电话,网站建设三折页目录1. 聚类原理1.1. 无监督与聚类1.2. K均值算法2. 公式推导2.1. 距离2.2. 最小平方误差3. 实例3.1. python实现3.2. sklearn实现4. 运行#xff08;可直接食用#xff09;1. 聚类原理 1.1. 无监督与聚类 在这部分我今天主要介绍K均值聚类算法#xff0c;在这之前我想提一… 目录1. 聚类原理1.1. 无监督与聚类1.2. K均值算法2. 公式推导2.1. 距离2.2. 最小平方误差3. 实例3.1. python实现3.2. sklearn实现4. 运行可直接食用1. 聚类原理 1.1. 无监督与聚类 在这部分我今天主要介绍K均值聚类算法在这之前我想提一下“无监督学习”和“聚类”。 无监督学习是指训练样本的标记信息是未知的目标是通过对无标记训练样本的学习来揭示数据的内在性质和规律的学习。 在 sklearn 官网首页中非常贴心的将任务分为了分类回归聚类三类以此我们可以看出聚类的重要性。实际上聚类就是把训练集中的样本划分为通常不相交的几个子集每个子集称为一个簇每个簇对应的名字聚类事先是不知道的需要靠使用者来把握命名。 优点 简单有效 缺点 对于K均值算法来说最明显的缺点有很多一开始定中心点数量需要人为定中心点选取初始样本是随机选的。很多K均值优化算法都是从这几个方面入手改进的。 1.2. K均值算法 对于K均值算法西瓜书的伪代码其实已经说的很明白了 简单的说就是三步 选择初始中心点最基本的方法是从数据集中选择样本。初始化后K-means由其他两个步骤之间的循环组成。将每个样本指定给其最近的中心。通过获取分配给每个先前中心的所有样本的平均值来创建新的中心。计算新旧质心之间的差值算法重复最后两个步骤直到该值小于阈值。 一般来说中心点不会是已经存在的点一般都是算出来的虚构的点。 提一下 对于高维数据我们知道存在维度诅咒这一说法所以在很多时候聚类往往会跟PCA之类的降维算法搭配。在降维算法中 TSNE 因为能将数据降维至2-3维非常适合可视化而且降维效率也高所以也很常用。 2. 公式推导 2.1. 距离 简单的说对于每个簇来说簇内相似度高簇外相似度低高内距低耦合。那么衡量距离的方法有哪些 曼哈顿距离欧式距离闵可夫斯基距离 distmk(xi,xj)(∑u1n∣xiu−xju∣p)1pdist_mk(x_i,x_j)(\sum_{u1}^n|{x_{iu}-x_{ju}|^p})^{\frac{1}{p}}distm​k(xi​,xj​)(∑u1n​∣xiu​−xju​∣p)p1​余弦相似度 cos(θ)∑i1n(xi×yi)∑i1n(xi)2×∑i1n(yi)2cos(\theta)\frac{\sum_{i1}^n(x_i\times y_i)}{\sqrt{\sum^n_{i1}{(x_i)^2}} \times \sqrt{\sum^n_{i1}{(y_i)^2}}}cos(θ)∑i1n​(xi​)2​×∑i1n​(yi​)2​∑i1n​(xi​×yi​)​等等 注p1闵可夫斯基距离为曼哈顿距离p2闵可夫斯基距离为欧氏距离。 2.2. 最小平方误差 说白了就是每个簇内每个点到中心点的距离的和最小。 E∑i1k∑x∈Ci∣∣x−μi∣∣22E \sum^k_{i1}{\sum_{x\in C_i}{||x-\mu_i||_2^2}} Ei1∑k​x∈Ci​∑​∣∣x−μi​∣∣22​ μi\mu_iμi​就是中心点数学公式表示就是 μi1∣Ci∣∑x∈Cix\mu_i\frac{1}{|C_i|}\sum_{x\in C_i}{x} μi​∣Ci​∣1​x∈Ci​∑​x 3. 实例 西瓜数据集4.0为例 密度,含糖率 0.697,0.46 0.774,0.376 0.634,0.264 0.608,0.318 0.556,0.215 0.403,0.237 0.481,0.149 0.437,0.211 0.666,0.091 0.243,0.267 0.245,0.057 0.343,0.099 0.639,0.161 0.657,0.198 0.36,0.37 0.593,0.042 0.719,0.103 0.359,0.188 0.339,0.241 0.282,0.257 0.748,0.232 0.714,0.346 0.483,0.312 0.478,0.437 0.525,0.369 0.751,0.489 0.532,0.472 0.473,0.376 0.725,0.445 0.446,0.4593.1. python实现 def mykmeans(data, k):# 计算距离def get_dis(data, center, k):ret []for point in data:# np.tile(a, (2, 1))就是把a先沿x轴复制1倍即没有复制仍然是[0, 1, 2]。 再把结果沿y方向复制2倍得到array([[0, 1, 2], [0, 1, 2]])# k个中心点所以有k行diff np.tile(point, (k, 1)) - centersquaredDiff diff ** 2 # 平方squaredDist np.sum(squaredDiff, axis1) # 和 (axis1表示行)distance squaredDist ** 0.5 # 开根号ret.append(distance)return np.array(ret)def draw(data, cluster):D_data pd.DataFrame(data)plt.rcParams[font.size] 14colors np.array([red, gray, orange, pink, blue, green])D_data[cluster] clusterD_data D_data.sort_values(bycluster)xx np.array(D_data[D_data.columns[0]]) # 取前两个维度可视化yy np.array(D_data[D_data.columns[1]])cc np.array(D_data[cluster])plt.scatter(xx, yy, ccolors[cc]) # ccolors[cc]plt.show()plt.close()# 计算质心def classify(data, center, k):# 计算样本到质心的距离clalist get_dis(data, center, k)# 分组并计算新的质心minDistIndices np.argmin(clalist, axis1) # axis1 表示求出每行的最小值的下标newCenter pd.DataFrame(data).groupby(minDistIndices).mean() # DataFramte(dataSet)对DataSet分组groupby(min)按照min进行统计分类mean()对分类结果求均值newCenter newCenter.values# 计算变化量changed newCenter - centerreturn changed, newCenterdata data.tolist()# 随机取质心centers random.sample(data, k)# 更新质心 直到变化量全为0changed, newCenters classify(data, centers, k)while np.any(changed ! 0):changed, newCenters classify(data, newCenters, k)centers sorted(newCenters.tolist()) # tolist()将矩阵转换成列表 sorted()排序# 根据质心计算每个集群cluster []clalist get_dis(data, centers, k) # 调用欧拉距离minDistIndices np.argmin(clalist, axis1)print(minDistIndices)for i in range(k):cluster.append([])for i, j in enumerate(minDistIndices): # enymerate()可同时遍历索引和遍历元素cluster[j].append(data[i])draw(data, minDistIndices) 3.2. sklearn实现 def sk(data, k):# # 肘部法取k值# data np.array(data)# SSE []# right min(7, data.shape[0])# for k in range(2, right):# km KMeans(n_clustersk)# km.fit(data)# SSE.append(km.inertia_)# xx range(2, right)# plt.xlabel(k)# plt.ylabel(SSE)# plt.plot(xx, SSE, o-)# plt.show()D_data pd.DataFrame(data)km KMeans(n_clustersk).fit(data)# print(km.labels_)print(质心)center km.cluster_centers_print(center)D_data[cluster] km.labels_plt.rcParams[font.size] 14colors np.array([red, gray, orange, pink, blue, green])D_data[cluster] km.labels_D_data D_data.sort_values(bycluster)xx np.array(D_data[D_data.columns[0]]) # 取前两个维度可视化yy np.array(D_data[D_data.columns[1]])cc np.array(D_data[cluster])plt.scatter(xx, yy, ccolors[cc]) # ccolors[cc]if D_data.shape[0] 1:plt.scatter(center[:, 0], center[:, 1], markero, s15, cblack) # 画中心点plt.show()plt.close() 4. 运行可直接食用 import random from collections import Counter import numpy as np import pandas as pd import warnings from matplotlib import pyplot as plt from sklearn.cluster import KMeans from sklearn.manifold import TSNEwarnings.filterwarnings(ignore)def sk(data, k):# # 肘部法取k值# data np.array(data)# SSE []# right min(7, data.shape[0])# for k in range(2, right):# km KMeans(n_clustersk)# km.fit(data)# SSE.append(km.inertia_)# xx range(2, right)# plt.xlabel(k)# plt.ylabel(SSE)# plt.plot(xx, SSE, o-)# plt.show()D_data pd.DataFrame(data)km KMeans(n_clustersk).fit(data)# print(km.labels_)print(质心)center km.cluster_centers_print(center)D_data[cluster] km.labels_plt.rcParams[font.size] 14colors np.array([red, gray, orange, pink, blue, green])D_data[cluster] km.labels_D_data D_data.sort_values(bycluster)xx np.array(D_data[D_data.columns[0]]) # 取前两个维度可视化yy np.array(D_data[D_data.columns[1]])cc np.array(D_data[cluster])plt.scatter(xx, yy, ccolors[cc]) # ccolors[cc]if D_data.shape[0] 1:plt.scatter(center[:, 0], center[:, 1], markero, s15, cblack) # 画中心点plt.show()plt.close()def mykmeans(data, k):# 计算距离def get_dis(data, center, k):ret []for point in data:# np.tile(a, (2, 1))就是把a先沿x轴复制1倍即没有复制仍然是[0, 1, 2]。 再把结果沿y方向复制2倍得到array([[0, 1, 2], [0, 1, 2]])# k个中心点所以有k行diff np.tile(point, (k, 1)) - centersquaredDiff diff ** 2 # 平方squaredDist np.sum(squaredDiff, axis1) # 和 (axis1表示行)distance squaredDist ** 0.5 # 开根号ret.append(distance)return np.array(ret)def draw(data, cluster):D_data pd.DataFrame(data)plt.rcParams[font.size] 14colors np.array([red, gray, orange, pink, blue, green])D_data[cluster] clusterD_data D_data.sort_values(bycluster)xx np.array(D_data[D_data.columns[0]]) # 取前两个维度可视化yy np.array(D_data[D_data.columns[1]])cc np.array(D_data[cluster])plt.scatter(xx, yy, ccolors[cc]) # ccolors[cc]plt.show()plt.close()# 计算质心def classify(data, center, k):# 计算样本到质心的距离clalist get_dis(data, center, k)# 分组并计算新的质心minDistIndices np.argmin(clalist, axis1) # axis1 表示求出每行的最小值的下标newCenter pd.DataFrame(data).groupby(minDistIndices).mean() # DataFramte(dataSet)对DataSet分组groupby(min)按照min进行统计分类mean()对分类结果求均值newCenter newCenter.values# 计算变化量changed newCenter - centerreturn changed, newCenterdata data.tolist()# 随机取质心centers random.sample(data, k)# 更新质心 直到变化量全为0changed, newCenters classify(data, centers, k)while np.any(changed ! 0):changed, newCenters classify(data, newCenters, k)centers sorted(newCenters.tolist()) # tolist()将矩阵转换成列表 sorted()排序# 根据质心计算每个集群cluster []clalist get_dis(data, centers, k) # 调用欧拉距离minDistIndices np.argmin(clalist, axis1)# print(minDistIndices)for i in range(k):cluster.append([])for i, j in enumerate(minDistIndices): # enymerate()可同时遍历索引和遍历元素cluster[j].append(data[i])draw(data, minDistIndices)if __name__ __main__:random.seed(1129)data pd.read_csv(watermelonData.csv).sample(frac1, random_state1129)# 因为西瓜数据集每列都是0到1的所以这里就不进行标准化了data_shuffled np.array(data)# 划分训练集测试集感觉不太需要测试集直接把比例拉到1data_train data_shuffled[:int(data_shuffled.shape[0]*1), :]data_test data_shuffled[data_train.shape[0]:, :]# 维度上去了就降维if data_train.shape[1]10:tsne TSNE(perplexity30, n_components2, initpca, n_iter5000, methodexact, random_state0)data_train tsne.fit_transform(data_train)choice 0while choice ! 3:print(1. 手写\n2. sklearn\n3. 退出)try:choice int(input())except:breakif choice 1:print(请输入k值)try:k int(input())except:breakprint(手写求解中...)# 参考https://blog.csdn.net/qq_43741312/article/details/97128745# 主要是发现了很多np和pd在计算的时候的用法mykmeans(data_train, k)elif choice 2:print(请输入k值)try:k int(input())except:breakprint(sklearn yyds)sk(data_train, k)else:print(退出成功)choice 3break 参考 吴恩达《机器学习》 sklearn官网 《百面机器学习》
http://www.hkea.cn/news/14557848/

相关文章:

  • 宁波网站设计相信荣胜网络做网站软件 手机
  • 多用户商城系统是什么做网站优化给业务员提成
  • 自己做的网站怎样链接数据库免费追剧的app下载
  • 网站里面的超链接怎么做晋城市 制作网站
  • 制作个人免费网站展示设计网页装wordpress
  • 微信服务号菜单链接网站怎么做的wordpress commer
  • 做注册任务的网站有哪些网站设计的标准
  • 站长之家站长工具综合查询wordpress菜单选项
  • 网站开发是程序员吗盗版系统网站怎么建立
  • 桂林网站建设找骏程免费发布信息的网站
  • 做运动户外的网站都有哪些网页设计与网站建设...
  • 茶类网站建设方案百度信息流怎么投放
  • 在北京做兼职哪个网站好郑州营销型网站建设哪家好
  • 常州app网站在线做数据图的网站有哪些问题
  • 网站建设的报价方案wordpress用户系统插件
  • 网站内容优化做网站有哪些注意事项
  • 免费制作二维码网站发外链的平台有哪些
  • 西安网站建设公司有哪些wordpress添加标签云
  • 网页设计制作手机网站wordpress素材类主题
  • 学院网站建设项目范围变更申请表工业设计公司怎么收费
  • 微信制作宣传网站有哪些内容sem推广培训
  • 哈尔滨网站推广优化公司盐山网站建设价格
  • 四川省住房和城乡建设厅网站lnmp wordpress主题
  • 网站优化招聘做网站的皮包公司
  • 贵阳专业做网站长沙微信群
  • 百度统计网站速度诊断myeclipse做网站更改名字
  • 微云怎么做网站南京网站建设王道下拉??
  • 做影视剧组演员垂直平台网站做桌面端还是网站
  • 静态网站中切换图片怎么做莱芜搜狗推广提供
  • 网站开发的收获体会合肥市门窗工程在哪个网站接活做