这是 python 数据分析案例系列的第二篇,主要是聚类分析,实现起来较为简单。后续还会继续更新,欢迎关注交流!

在处理实际的数据分析案例时,我们面临的往往是比较复杂的研究对象,如果能把相似的样品(或指标)归成类,处理起来大为方便。

聚类分析目的就是把相似的研究对象归成类

先贴上总结的聚类分析基本步骤:

算法过程如下:

1)从N个文档随机选取K个文档作为 质心

2)对剩余的每个文档测量其到每个 质心 的距离,并把它归到最近的质心的类

3)重新计算已经得到的各个类的 质心

4)迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束

工作原理

K-MEANS算法

输入:聚类个数k,以及包含 n个数据对象的数据库。

输出:满足方差最小标准的k个聚类。

存在问题

K是事先给定的,这个K值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。(有的算法是通过类的自动合并和分裂,得到较为合理的类型数目 K,例如 ISODATA 算法。)

在 K-means 算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。说明初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果。(对于该问题的解决,许多算法采用遗传算法进行初始化,以内部聚类准则作为评价指标。)

从 K-means 算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的。

分析案例

背景

-不同商圈的分时段客流量

目标

-通过不同商圈的分时段客流量数据,挖掘出不同类别的商圈

-分析不同类别商圈的特点

算法的Python实现

数据获取与整理

对数据进行基本分析,查看数据的基本情况

对样本数据进行预处理

构建样本集

构建客流量聚类模型

可视化结果

Python代码如下

# -*- coding: utf-8 -*-

#读取数据

import pandas as pd

data=pd.read_excel(u'd:/data/example02/sample.xls',index_col=u'站点编号')

data.head()

#数据预处理

data = (data - data.min())/(data.max() - data.min()) #离差标准化

data=data.fillna(0) #处理na值

data.to_excel('d:/data/example02/standata.xls',index=True) #保存结果

####模型构建####

##系谱图绘制

import matplotlib.pyplot as plt

from scipy.cluster.hierarchy import linkage,dendrogram

#这里使用scipy的层次聚类函数

Z = linkage(data, method = 'ward', metric = 'euclidean') #谱系聚类图

P = dendrogram(Z, 0) #画谱系聚类图

plt.show()

##层次聚类算法

#参数初始化

k = 3 #聚类数

#模型构建

from sklearn.cluster import AgglomerativeClustering #导入sklearn的层次聚类函数

model = AgglomerativeClustering(n_clusters = k, linkage = 'ward')

model.fit(data) #训练模型

#详细输出原始数据及其类别

r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1) #详细输出每个样本对应的类别

r.columns = list(data.columns) + [u'聚类类别'] #重命名表头

import matplotlib.pyplot as plt

style = ['', '', '']

xlabels = [u'非上下班时段日均客流量', u'上下班时段日均客流量', u'周末日均客流量时间',

u'工作日日均客流量']

pic_output = 'd:/data/example02/type_' #聚类图文件名前缀

for i in range(k): #逐一作图,作出不同样式

plt.figure()

tmp = r[r[u'聚类类别'] == i].iloc[:,:4] #提取每一类

for j in range(len(tmp)):

plt.plot(range(1, 5), tmp.iloc[j], style[i])

plt.xticks(range(1, 5), xlabels, rotation = 20,fontproperties='SimHei') #坐标标签

plt.title(u'商圈类别%s' %(i+1),fontproperties='SimHei') #我们计数习惯从1开始

plt.subplots_adjust(bottom=0.15) #调整底部

plt.savefig(u'%s%s.png' %(pic_output, i+1)) #保存图片

聚类结果如下

欢迎关注交流

python商业数据分析_Python数据分析案例—商圈客流量特征分析相关推荐

  1. python数据分析软件_Python数据分析工具

    Numpy Python没有提供数组功能,虽然列表可以完成基本的数组功能,但他不是真正的数组.Numpy内置函数处理速度是c语言级别,因此尽量使用内置函数,避免出现效率瓶颈的现象. Numpy的安装: ...

  2. python酒店数据分析_Python数据分析 I 全国旅游景点分析案例,哪里好玩一目了然...

    原标题:Python数据分析 I 全国旅游景点分析案例,哪里好玩一目了然 前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作 ...

  3. python医药数据分析_Python数据分析案例-药品数据分析案例

    最近学习了python数据分析的一些基础知识,有numpy,pandas,matplotlib等,找了一个药品数据分析的小项目练一下手. 数据分析的步骤一般可以分为6个: 1,明确分析的目的 2,数据 ...

  4. python炒股模块_Python数据分析-numpy模块、pandas模块.基本操作、股票案例

    索引操作和列表同理 arr = np.random.randint(0,100,size=(5,6)) arr array([[14, 89, 71, 96, 1, 94], [30, 98, 10, ...

  5. python什么是数据分析_python数据分析是什么

    Q1:Python在数据分析方面有什么独特优势 python最大的优势在于学习门槛低,语法灵活. python也有很多开源成熟的科学计算机库,比如:Numpy,Scipy,Pandas 而且上面说的这 ...

  6. python练手_Python数据分析练手项目

    最近,我在阿里天池大数据竞赛中发现了一些练手的项目,例如,用Python"画月饼过云上中秋",虽然中秋已经过去了,但还是好奇Python是怎么画出月饼的? 先上图↓ 火龙果馅的月饼 ...

  7. python统计分析书籍_Python数据分析入门书籍推荐

    在当下这个数据驱动的时代,毫不夸张的说各行各业的商业决策和运营管理都离不开数据分析,因此数据分析已经成为当前每个人的必备技能和加分项.对于许多初学者来讲,想要入门Python数据分析常常不知道从何下手 ...

  8. python 卡方分布值_python数据分析探索变量之间的关系

    探索变量之间的关系 引言 深入探索分析数据价值有几个重要步骤:①变量的分布检验,②探索变量间的关系,③建立关系模型,④评估,⑤总结结论与建议.接下来看看数据分析的重要一环–「探索变量间的关系」. 1 ...

  9. python预测药_Python数据分析实例-药品销售分析

    学习了Python的各种基础语法和常用包后,你是否对如何使用Python在实际工作中进行数据分析一头雾水?如果是,今天这篇文章一定能带给你一些用数据分析解决实际问题的思路. 数据分析的目的决定了你的分 ...

最新文章

  1. 查看CentOS的网络带宽出口
  2. javascript常用的事件
  3. Java 守护线程概述
  4. 细说Vue作用域插槽,匹配应用场景。
  5. 春节礼品:iPhone 11 抱回家
  6. 个人计算机和家用计算机,航空百问:飞机电脑和个人电脑有什么不同
  7. oracle数据库的医院信息系统数据库升级方案,医院信息系统数据库从Oracle8i到10gR2升级的实现...
  8. 在React中处理事件
  9. python如何提高程序可读性_提高Python的可读性?
  10. Java 方法使用总结(重载、数组输出、enum和switch、foreach和迭代器、可变长度参数、重载中使用可变长度参数)
  11. 前端学java还是python_零基础应该选择学习 java、php、前端 还是 python?
  12. 6. C 语言预处理
  13. Hyper-V云解决方案-IT产业新变革
  14. Arch Linux下 让MPlayer用上CoreAVC1.7.0.0解码器
  15. ipv6的127位掩码如何表示_详解IP地址、子网掩码、网络号、主机号、网络地址、主机地址...
  16. 前端组件化埋点方案与实现
  17. Mybatis使用choose when
  18. 数据分析之Excel的基本功能(下)
  19. python积木式编程_实例讲解python函数式编程
  20. Unity [hold on busy for 老长长时间的解决方法]

热门文章

  1. 灵隐寺招聘员工:没有KPI,佛系上班,四点半下班……
  2. 【李刚-21天通关Python-03】之 运算符
  3. 海南实现旅游总收入1.06亿元人民币
  4. 一、CCD原理及实现方法
  5. java数字拼图代码_实战-Swing实现数字拼图
  6. 怪物Appr值与Data里Mon-x.wil里图像的对应关系
  7. 九年程序员生涯,我的一些经验教训
  8. 手把手带你构建dockers镜像
  9. 华为畅享8plus能申请鸿蒙吗,华为畅享8Plus
  10. Qt笔记(四十一)之qtcreator添加pri文件