资讯专栏INFORMATION COLUMN

python热力地图完成的一体化案例

89542767 / 330人阅读

  热力地图的适用场景有叙述数据信息和空间的集中程度上,普遍有城市热力图、地区热力地图,叙述好几个自变量中间关联性多少程度上,文中关键为大家介绍了有关python热力地图完成的资料,必须的小伙伴可以借鉴一下


  一、数据信息无量纲处理后的(热力地图)


  1.数据信息无量纲处理后的(仅详细介绍文中需要用到的方式):min-max归一化处理


  此方法应该是原始记录开展线性变换,把它投射到[0,1]中间,此方法又被称为离差规范化。

01.png

  下式中,min是样例的极小值,max是样例的最高值。因为最高值与极小值有可能是变化规律的,与此同时也很容易受噪音(异常点、离群点)危害,因而通常适合数据信息的画面。除此之外,此方法也有二点益处:


  1)假如某特性/特点的标准差不大,如个子:np.array([[1.70],[1.71],[1.72],[1.70],[1.73]]),具体5条数据信息在个子这一特点上有存在差异的,但却很薄弱,那样不益于模型学习培训,开展min-max归一化处理后为:array([[0.],[0.33333333],[0.66666667],[0.],[1.]]),等同于放大差别;


  2)保持三元组中向0的内容。


  2.代码展示


  import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  import seaborn as sns
  from sklearn.datasets import load_wine
  wine=load_wine()
  data=wine.data#数据
  lables=wine.target#标签
  feaures=wine.feature_names
  df=pd.DataFrame(data,columns=feaures)#原始数据
  #第一步:无量纲化
  def standareData(df):
  """
  df:原始数据
  return:data标准化的数据
  """
  data=pd.DataFrame(index=df.index)#列名,一个新的dataframe
  columns=df.columns.tolist()#将列名提取出来
  for col in columns:
  d=df[col]
  max=d.max()
  min=d.min()
  mean=d.mean()
  data[col]=((d-mean)/(max-min)).tolist()
  return data
  #某一列当做参照序列,其他为对比序列
  def graOne(Data,m=0):
  """
  return:
  """
  columns=Data.columns.tolist()#将列名提取出来
  #第一步:无量纲化
  data=standareData(Data)
  referenceSeq=data.iloc[:,m]#参考序列
  data.drop(columns[m],axis=1,inplace=True)#删除参考列
  compareSeq=data.iloc[:,0:]#对比序列
  row,col=compareSeq.shape
  #第二步:参考序列-对比序列
  data_sub=np.zeros([row,col])
  for i in range(col):
  for j in range(row):
  data_sub[j,i]=abs(referenceSeq[j]-compareSeq.iloc[j,i])
  #找出最大值和最小值
  maxVal=np.max(data_sub)
  minVal=np.min(data_sub)
  cisi=np.zeros([row,col])
  for i in range(row):
  for j in range(col):
  cisi[i,j]=(minVal+0.5*maxVal)/(data_sub[i,j]+0.5*maxVal)
  #第三步:计算关联度
  result=[np.mean(cisi[:,i])for i in range(col)]
  result.insert(m,1)#参照列为1
  return pd.DataFrame(result)
  def GRA(Data):
  df=Data.copy()
  columns=[str(s)for s in df.columns if s not in[None]]#[1 2,,,12]
  #print(columns)
  df_local=pd.DataFrame(columns=columns)
  df.columns=columns
  for i in range(len(df.columns)):#每一列都做参照序列,求关联系数
  df_local.iloc[:,i]=graOne(df,m=i)[0]
  df_local.index=columns
  return df_local
  #热力图展示
  def ShowGRAHeatMap(DataFrame):
  colormap=plt.cm.hsv
  ylabels=DataFrame.columns.values.tolist()
  f,ax=plt.subplots(figsize=(15,15))
  ax.set_title('Wine GRA')
  #设置展示一半,如果不需要注释掉mask即可
  mask=np.zeros_like(DataFrame)
  mask[np.triu_indices_from(mask)]=True#np.triu_indices上三角矩阵
  with sns.axes_style("white"):
  sns.heatmap(DataFrame,
  cmap="YlGnBu",
  annot=True,
  mask=mask,
  )
  plt.show()
  data_wine_gra=GRA(df)
  ShowGRAHeatMap(data_wine_gra)


  3.效果展示

02.png

  二、皮尔斯系数相关(热力图)


  1.数学知识


  利用热力图可以看数据表里多个特征两两的相似度。


  相似度由皮尔逊相关系数度量。


  两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:

03.png

  2.代码展示


  import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  import seaborn as sns
  #====热力图
  from matplotlib.ticker import FormatStrFormatter
  encoding="utf-8"
  data=pd.read_csv("tu.csv",encoding="utf-8")#读取数据
  data.drop_duplicates()
  data.columns=[i for i in range(data.shape[1])]
  #计算两两属性之间的皮尔森相关系数
  corrmat=data.corr()
  f,ax=plt.subplots(figsize=(12,9))
  #返回按“列”降序排列的前n行
  k=30
  cols=corrmat.nlargest(k,data.columns[0]).index
  #返回皮尔逊积矩相关系数
  cm=np.corrcoef(data[cols].values.T)
  sns.set(font_scale=1.25)
  hm=sns.heatmap(cm,
  cbar=True,
  annot=True,
  square=True,
  fmt=".3f",
  vmin=0,#刻度阈值
  vmax=1,
  linewidths=.5,
  cmap="RdPu",#刻度颜色
  annot_kws={"size":10},
  xticklabels=True,
  yticklabels=True)#seaborn.heatmap相关属性
  #解决中文显示问题
  plt.rcParams['font.sans-serif']=['SimHei']
  plt.rcParams['axes.unicode_minus']=False
  #plt.ylabel(fontsize=15,)
  #plt.xlabel(fontsize=15)
  plt.title("主要变量之间的相关性强弱",fontsize=20)
  plt.show()


  3.seaborn.heatmap属性介绍


  1)Seaborn是基于matplotlib的Python可视化库


  seaborn.heatmap()热力图,用于展示一组变量的相关系数矩阵,列联表的数据分布,通过热力图我们可以直观地看到所给数值大小的差异状况。


  seaborn.heatmap(data,vmin=None,
  vmax=None,cmap=None,center=None,
  robust=False,annot=None,fmt='.2g',
  annot_kws=None,linewidths=0,linecolor='white',
  cbar=True,cbar_kws=None,cbar_ax=None,
  square=False,xticklabels='auto',yticklabels='auto',
  mask=None,ax=None,**kwargs)


  2)参数输出(均为默认值)


  sns.heatmap(
  data,
  vmin=None,
  vmax=None,
  cmap=None,
  center=None,
  robust=False,
  annot=None,
  fmt='.2g',
  annot_kws=None,
  linewidths=0,
  linecolor=‘white',
  cbar=True,
  cbar_kws=None,
  cbar_ax=None,
  square=False,
  xticklabels=‘auto',
  yticklabels=‘auto',
  mask=None,
  ax=None,
  )


  3)简单介绍


  (1)热力地图键入参数指标


  data:引流矩阵数据信息,能是numpy的二维数组(array),还可以是pandas的DataFrame。假如是DataFrame,则df的index/column信息内容会各自相匹配到heatmap的columns和rows,即df.index是热力地图的行业标准,df.columns是热力地图的列标


  (2)热力地图引流矩阵块颜色数值


  vmax,vmin:各是热力地图色调选值最大和最小范畴,默认设置是依据data数据分析表中的选值明确


  cmap:从数据信息到色调的投射,选值是matplotlib包内的colormap名字或色调目标,或表示颜色的目录;改主要参数初始值:依据center主要参数设定


  center:数据分析表选值有所差异时,设定热力地图的色调核心两端对齐值;可设置center值,可以调节产生的图象色调的总体浓淡;设定center数据信息时,若是有数据溢出,则手动式设定的vmax、vmin就会自动更改


  robust:默认设置选值False;假如是False,且没设定vmin和vmax的值,热力地图色调投射范畴依据具备可扩展性的分位数设定,而不是靠极值点设定


  (3)热力地图引流矩阵块注解主要参数


  annot(annotate的简称):默认设置选值False;假如是True,在热力地图每一个格子载入数据信息;假如是引流矩阵,在热力地图每一个格子载入该引流矩阵相匹配部位数据信息


  fmt:字符串数组文件格式编码,引流矩阵上标志数的数据类型,例如保留小数点后几个数据信息


  annot_kws:默认设置选值False;假如是True,设定热力地图引流矩阵上数的尺寸颜色字体,matplotlib包text类中的文字设置;


  (4)热力地图引流矩阵块间间隔及间隔线主要参数


  linewidths:界定热力地图里“表明两组特点联系的引流矩阵一小块”间的间隔尺寸


  linecolor:分割热力地图上每一个引流矩阵一小块的线颜色,初始值是’white’


  (5)热力地图色调标尺条主要参数


  cbar:是不是在热力地图侧面制作色调标尺条,初始值是True


  cbar_kws:热力地图侧面制作色调标尺条时,有关文字设置,初始值是None


  cbar_ax:热力地图侧面制作色调标尺条时,标尺条区域设置,初始值是None


  (6)square:设定热力地图引流矩阵一小块样子,初始值是False


  xticklabels,yticklabels:xticklabels操纵每列标签名的导出;yticklabels操纵每排标签名的导出。初始值是auto。假如是True,则是以DataFrame的字段名做为标签名。假如是False,一般不加上行标签名。假如是目录,则标签名改成页面上给的具体内容。假如是整数金额K,即在图中每过K个标识做一次标明。假如是auto,则全自动选择标签的标明间隔,将标签名不重合的那一部分(或部分)导出


  mask:操纵某一引流矩阵块能否显现出来。初始值是None。假如是布尔型的DataFrame,则把DataFrame里True位置用白遮盖掉


  ax:设定做图的纵坐标,通常画众多子图的时候需要改动不同类型的子图的该值


  **kwargs:全部别的关键字参数都传达给ax.pcolormesh。


  4效果展示

04.png

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130259.html

相关文章

  • 京冀共建智慧供热云服务平台 全国首个供热大数据中心落户承德

    摘要:刘颖摄全国首个供热行业大数据中心即将落户承德。月日,承德市政府与北京热力集团北京供销大数据集团签署战略合作协议,共同建设承德市智慧供热云服务平台项目。在位于承德县的德鸣大数据产业园内,工作人员正在记录设备运行情况。 刘颖摄全国首个供热行业大数据中心即将落户承德。3月6日,承德市政府与北京热力集团、北京供销大数据集团签署战略合作协议,共同建设承德市智慧供热云服务平台项目。项目落地后,北京热力集...

    NikoManiac 评论0 收藏0
  • 阿里云栖大会:云服务拿下数字重庆,还要布局区块链服务

    摘要:预计明年能把重庆市主城区的所有停车位进行聚集,至年完成全市联动。另外,在未来年,阿里云将联合工信部赛迪研究院重庆南岸区政府三方打造飞象工业互联网平台。今天,阿里巴巴2018云栖大会·重庆峰会在重庆悦来国际会议中心举行,本次峰会沿用了驱动数字中国的主题,重点聚焦在IoT、智能制造、云计算、大数据、人工智能等领域的探讨,峰会主论坛的重点也是着重推进阿里云与重庆地区城市交通、企业、产业等数字化升级...

    frontoldman 评论0 收藏0
  • 高德地图 Javascript API 入门(七)

    摘要:高德地图入门七热力图插件简单例子显示地图坐标点加载热力图插件预览参数构造函数说明构造一个热力图插件对象,为要叠加热力图的地图对象,属性参考列表中的说明。 高德地图 Javascript API 入门(七) 热力图插件 简单例子 // 显示地图 var map=new AMap.Map(container,{ resizeEnable:true, center:[116....

    YuboonaZhang 评论0 收藏0
  • 构建基于LBS大数据应用

    摘要:构建基于的大数据应用,一般的实现流程为通过信息收集后进行基础数据的整理,数据挖掘机器学习,服务搭建以及数据可视化等。 移动互联网时代,大数据是关键词之一。作为推送技术服务行业的先行者,个推不断进行技术革新引领推送革命。通过挖掘用户使用场景,结合地理位置信息精确命中不同用户的各类需求。在服务大客户的过程中通过自身平台积累的海量数据发展了大数据。 目前,3.0产品最重要的技术——电子围栏...

    jimhs 评论0 收藏0
  • TOP100summit:【分享实录】链家网大数据平台体系构建历程

    摘要:本篇文章内容来自年链家网大数据部资深研发架构师李小龙的案例分享。编辑李小龙链家网大数据部资深研发架构师,负责大数据工具平台化相关的工作。导读链家网大数据部门负责收集加工公司各产品线的数据,并为链家集团各业务部门提供数据支撑。 本篇文章内容来自2016年TOP100summit 链家网大数据部资深研发架构师李小龙的案例分享。编辑:Cynthia 李小龙:链家网大数据部资深研发架构师,负责...

    Yu_Huang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<