python数据分析(10)——挖掘建模(5)离群点检测
1. 离群点的类型
2. 检测方法
3. 代码
```python
- - coding: utf-8 - -
使用K-Means算法聚类消费行为特征数据
import numpy as np import pandas as pd
参数初始化
inputfile = 'consumption_data.xls' #销量及其他属性数据 k = 3 #聚类的类别 threshold = 2 #离散点阈值 iteration = 500 #聚类最大循环次数 data = pd.read_excel(inputfile, index_col = 'Id') #读取数据 data_zs = 1.0*(data - data.mean())/data.std() #数据标准化
from sklearn.cluster import KMeans model = KMeans(n_clusters = k, n_jobs = 4, max_iter = iteration) #分为k类,并发数4 model.fit(data_zs) #开始聚类
标准化数据及其类别
r = pd.concat([data_zs, pd.Series(model.labels_, index = data.index)], axis = 1) #每个样本对应的类别 r.columns = list(data.columns) + [u'聚类类别'] #重命名表头
norm = [] for i in range(k): #逐一处理 norm_tmp = r[['R', 'F', 'M']][r[u'聚类类别'] == i]-model.cluster_centers_[i] norm_tmp = norm_tmp.apply(np.linalg.norm, axis = 1) #求出绝对距离 norm.append(norm_tmp/norm_tmp.median()) #求相对距离并添加
norm = pd.concat(norm) #合并
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 norm[norm <= threshold].plot(style = 'go') #正常点
discrete_points = norm[norm > threshold] #离群点 discrete_points.plot(style = 'ro')
for i in range(len(discrete_points)): #离群点做标记 id = discrete_points.index[i] n = discrete_points.iloc[i] plt.annotate('(%s, %0.2f)'%(id, n), xy = (id, n), xytext = (id, n))
plt.xlabel(u'编号') plt.ylabel(u'相对距离') plt.show() ```
参考文献
- 基于股票数据流和投资者情绪的股价预测系统的设计与实现(华南理工大学·陈泽铭)
- 基于redis的分布式自动化爬虫的设计与实现(华中科技大学·曾胜)
- 音视频数据获取与同源性分析关键技术研究(电子科技大学·范清宇)
- 基于云计算的用户网络行为挖掘分析系统的研究与设计(湖北大学·皮健夫)
- 基于业务插件化的电商大数据采集系统(浙江工业大学·李天琦)
- 基于股票数据流和投资者情绪的股价预测系统的设计与实现(华南理工大学·陈泽铭)
- 基于业务插件化的电商大数据采集系统(浙江工业大学·李天琦)
- 制造业数据交互式分析平台的设计与实现(西安电子科技大学·杨妍)
- 基于业务插件化的电商大数据采集系统(浙江工业大学·李天琦)
- 基于业务插件化的电商大数据采集系统(浙江工业大学·李天琦)
- 运营商网络监测数据分析管理系统设计与实现(西安电子科技大学·成天旸)
- 基于商品名称的电商平台商品自动分类的研究与实现(西南交通大学·黄超)
- 数据分析流程编排系统设计与实现(大连理工大学·闫欣)
- 基于商品名称的电商平台商品自动分类的研究与实现(西南交通大学·黄超)
- 生物农药智能推荐系统的设计与实现(电子科技大学·彭亚飞)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码向导 ,原文地址:https://m.bishedaima.com/yuanma/35401.html