至于重心法是什么我就不多说了,我们直接来看例题:

运用图中数据运用重心法来选址:

代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdef dis(WC,data):WCX = (np.array(data['x']) * WC).sum()WCY = (np.array(data['y']) * WC).sum()x0 = WCX / WC.sum()y0 = WCY / WC.sum()d_j = ((np.array(data['x']) - x0)**2 + (np.array(data['y'])-y0)**2)**0.5T = (WC * d_j).sum()print('重心法初始选点大致位置:({},{})'.format(x0,y0))print('总费用T0:{}'.format(T))#迭代10次plt.rcParams['font.sans-serif'] = [u'SimHei']for i in range(10):WC_j = WC/d_jWCX_j = ((np.array(data['x']) * WC)/d_j).sum()WCY_j = ((np.array(data['y']) * WC)/d_j).sum()x = WCX_j / WC_j.sum()y = WCY_j / WC_j.sum()d_j = ((np.array(data['x']) - x)**2 + (np.array(data['y'])-y)**2)**0.5T = (WC * d_j).sum()print('经{}次迭代后选址点位置:({},{})'.format(i+1,x,y))print('总费用T{}:{}'.format(i+1,T))#画图,如果需要迭代次数多,建议只画第一次和最后一次plt.figure(figsize=(8,4))plt.scatter(np.array(data['x']),np.array(data['y']),[300,300,300,300,300],c = 'green',marker = '*',alpha = 0.7,label='站点')plt.scatter(x,y,[270],c = 'red',marker = 'p',alpha = 0.7,label='选址点')plt.xlabel('x坐标',fontsize=11)plt.ylabel('y坐标',fontsize=11)plt.grid(True)plt.title('重心法选址,第{}次结果示意图'.format(i+1),fontsize=14)plt.show()
if __name__=='__main__':# 读取文件data = pd.read_excel(r"C:\Users\pan15\Desktop\重心法\data.xlsx")# print(data)WC = np.array(data['W']) * np.array(data['C'])dis(WC,data)

运行结果如下图:

最后重点警告!!!如果要迭代多次最好不要一次次画图。

Python实现重心法相关推荐

  1. 灰度重心法原理与实现

    转自:https://blog.csdn.net/moses1213/article/details/44679603 灰度重心法提取激光光条纹中心其实是将光条纹截面的灰度值分布中的质心记作为光条纹的 ...

  2. python原理及代码_原理+代码|详解层次聚类及Python实现

    前言 聚类分析是研究分类问题的分析方法,是洞察用户偏好和做用户画像的利器之一.聚类分析的方法非常多,能够理解经典又最基础的聚类方法 -- 层次聚类法(系统聚类) 的基本原理并将代码用于实际的业务案例是 ...

  3. Python数模笔记-Sklearn(2)聚类分析

    1.分类的分类 分类的分类?没错,分类也有不同的种类,而且在数学建模.机器学习领域常常被混淆. 首先我们谈谈有监督学习(Supervised learning)和无监督学习(Unsupervised ...

  4. (自己编写函数)Python + Opencv 图像边缘检测(模糊算法【老师给的ppt中原理是这样的,但是还有很多不明白,有很多参数老师没说怎么算,只说了每张图片不一样】)

    实验原理 1.首先,用重心法模糊推理图像中任意一像素点的边缘隶属方向,取其最大隶属度的方向为边缘隶属方向. 2.然后,在边缘隶属方向上根据像素点附近灰度分布的特点模糊推理该点的边缘隶属度,进而实现边缘 ...

  5. Susan角点检测python实现 (边缘检测、角点检测、重心计算、非极大值抑制)

    Susan角点检测(边缘检测.角点检测.重心计算.非极大值抑制) 写在前面 黄宁然--看过你看过的算法,觉得好难. 参考文献镇楼 [1]https://blog.csdn.net/tostq/arti ...

  6. 灰度重心法提取光条纹中心

    灰度重心法提取激光光条纹中心其实是将光条纹截面的灰度值分布中的质心记作为光条纹的中心. 在一列线激光中先利用极值法求取光强最大的一点gmax,然后确定一个阀值K=gmax-g(g取10-20),在 ...

  7. python数据分析 活用pandas库_Python数据分析:活用Pandas库:Pandas for everyone

    序 iv 前言 v 致谢 xi 关于作者 xiv 第 一部分 简介 1 第 1章 Pandas DataFrame基础知识 2 1.1 简介 2 1.2 加载数据集 3 1.3 查看列.行.单元格 5 ...

  8. azw3 python数据分析 活用pandas库_Python数据分析 活用Pandas库 数据科学教程数据分析入门图书 Python编程入门数据处理...

    内容介绍 本书是Python数据分析入门书,每个概念都通过简单实例来阐述,便于读者理解与上手.具体内容包括:Python及Pandas基础知识,加载和查看数据集,Pandas的DataFrame对象和 ...

  9. python模式识别 pdf_模式识别与智能计算MATLAB技术实现 PDF 全书第三版

    给大家带来的一篇关于MATLAB相关的电子书资源,介绍了关于模式识别.智能计算.MATLAB.技术实现方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小70.6 MB,杨淑莹编写,目前豆瓣 ...

  10. python数据分析-聚类分析

    大家好,聚类分析是一类将数据所对应的研究对象进行分类的统计方法.这一类方法的共同特点是,事先不知道类别的个数与结构:进行分析的数据是表明对象之间的相似性或相异性的数据,将这些数据看成对对象" ...

最新文章

  1. [C#]网络编程系列专题二:HTTP协议详解
  2. 三流面试聊技术,二流面试聊框架,一流面试…
  3. SharePoint 补丁
  4. 设计模式:单例模式之静态内部类
  5. 字符串转Unicode码
  6. 程序员必备神卡!仅500张,价值万元0.8折抢!4个月小白变大牛!(送机械键盘)
  7. CENTOS 6.6初始化SHELL脚本
  8. 病毒周报(100125至100131)
  9. multisim仿真D触发器设计的模六计数器并在数码管显示0-5
  10. brctl 设置ip_Linux网桥配置命令:brctl
  11. get与post的区别
  12. CentOS Steam 9 安装测试
  13. Python学习-安装Anaconda及print我爱王晓静
  14. phython基础之数据类型和变量
  15. 用selenium来下载小姐姐图片并保存
  16. 优秀的加密方案-软件加密技巧
  17. 手机端抓包http/https-Fiddler的设置
  18. flex-direction容器属性
  19. 【JavaSE 第八天】
  20. jQuery怎样实现AJXA

热门文章

  1. 基于Python的信用评分卡模型建立和分析,万字阐述,收藏
  2. java计算机毕业设计易医就医购药交互平台源码+系统+mysql数据库+lw文档
  3. 抖音快手火山 热门采集/个人主页无水印视频批量解析下载工具2019-11-11
  4. 详解验证码与打码平台的攻防对抗
  5. WinForGIFSicle 1.0.0.1 免费开源版,基于GIFSicle的开源可视化批量GIF压缩工具
  6. 手机连接hp打印机打印
  7. Java代理(Proxy)模式
  8. js中如何解决跨域问题
  9. 登录Windows Server时提示”user profile service服务器登录失败 无法加载用户配置“的解决方法
  10. 测试之串口连接及调试