数据变换、可视化
数据变换前的准备工作:字段过滤、数据探索、相关性分析、建模筛选
- 在数据变换前,我们需要先对字段进行筛选,然后对数据进行探索和相关性分析,接着是选择算法模型(这里暂时不需要进行模型计算),然后针对算法模型对数据的需求进行数据变换,从而完成数据挖掘前的准备工作。
数据变换通过数据平滑、数据聚集、数据概化和规范化等方式将数据转换成适用于数据挖掘的形式。
常见变换方法:
-
数据平滑:去除数据中的噪声,将连续数据离散化,可采用分箱、聚类和回归的方式进行数据平滑。
-
数据聚集:对数据进行汇总
-
数据概化:将数据由较低的概念抽象成为较高的概念,减少数据复杂度。
-
数据规范化:使属性数据按比例缩放,将原来的数值映射到一个新的特定区域中。常用方法:最小—最大规范化、Z—score 规范化、按小数定标规范化等。
-
Min-max 规范化:将原始数据变换到[0,1]的空间中。新数值=(原数值-极小值)/(极大值-极小值)。
scikit-learn中调用:preprocessing.MinMaxScaler()
-
Z-Score 规范化:新数值=(原数值-均值)/ 标准差
优点:算法简单、不受量纲影响、结果易于比较
缺点:需要数据整体平均值和方差、结果没有实际意义,仅用于比较
scikit-learn中的调用:preprocessing.scale()
-
小数定标规范化:通过移动小数点的位置来进行规范化。小数点移动多少位取决于属性A的取值中的最大绝对值。
numpy方法实现:j = np.ceil(np.log10(np.max(abs(x))))
scaled_x = x/(10**j)
-
-
属性构造:构造出新的属性并添加到属性集中。
数据可视化视图根据其目的可分为:
- 分布
- 时间相关
- 局部/整体
- 偏差
- 相关性
- 排名
- 量级
- 地图
- 流动
数据可视化工具:
- 商业智能分析软件
- Tableau
- PowerBI
- FineBI
- 可视化大屏
- DataV
- FineReport
- 前端可视化组件:基于web渲染的技术。典型的渲染技术:Canvas、SVG和WebGL。canvas和SVG是HTML5中主要的2D图形技术,WebGL是3D框架。
- canvas适用于位图。
- SVG指可缩放矢量图形,使用XML格式定义图形。相当于用点和线来描绘了图形,相比于位图来说文件比较小,而且任意缩放都不会失真。
- webGL是一种3D绘图协议,能在网页浏览器中呈现3D画面技术,并可交互。
- 常用的可视化组件: Echarts、D3、Three.js和AntV。
- 编程语言
- matplotlib
- seaborn
可视化视图按照数据间关系可分为比较、联系、构成和分布。
- 比较:比较数据间各类别的关系,或者是它们随着时间的变化趋势,比如折线图;
- 联系:查看两个或两个以上变量之间的关系,比如散点图;
- 构成:每个部分占整体的百分比,或者是随着时间的百分比变化,比如饼图;
- 分布:关注单个变量,或者多个变量的分布情况,比如直方图。
按照变量个数可分为单变量分析和多变量分析。
- 单变量分析指一次只关注一个变量。
- 多变量分析可在一张图上可以查看两个以上变量的关系。
常用视图:散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图、二元变量分布和成对关系。
-
散点图:适合展现两个变量之间的关系。
import numpy as np import matplotlib.pyplot as plt import seaborn as sns # 数据准备 N = 1000 x = np.random.randn(N) y = np.random.randn(N) # 用Matplotlib画散点图 plt.scatter(x, y,marker='x') plt.show() # 用Seaborn画散点图 df = pd.DataFrame({ 'x': x, 'y': y}) sns.jointplot(x="x", y="y", data=df, kind='scatter'); plt.show(