赞
踩
今天也要加油鸭~
这是对Python数据分析和挖掘实战的读书笔记。书本分为两部分:一部分是理论,一部分是实战。
数据挖掘的基本任务:分类和预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等
数据挖掘建模过程
数据分析工具:Numpy、Scipy、Matlpotlib(数据可视化)、pandas、sklearn、keras、Gensim(处理语言)、StatsModels(统计模型分析)
数据集成
数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。
2.1 实体识别
从不同的数据源识别出现现实世界的实体,统一不同的源数据的矛盾
(1)同名异义
(2)异名同义
(3)单位不统一
2.2 冗余属性识别
数据集成导致数据冗余
(1)同一属性多次出现
(2)同一属性命名不一致导致重复
冗余属性可以用相关分析检测,用相关系数度量一个属性在多程度上蕴含另一个属性。
数据变换
对数据进行规范化处理。
3.1 简单函数变换
用来将不具有正态分布的数据变换成正态分数的数据。在时间序列分析中,对数变换或者差分运算就可以将非平稳序列转换成平稳序列。
3.2 规范化(归一化)
(1)最小-最大规范化(data - data.min())/(data.max() - data.min())
对原始数据的线性变换,将数值映射到[0,1]之间
(2)零-均值规范化(data - data.mean())/ data.std()
经过数据的均值为0,标准差为1
(3)小数定标规范化data/10**np.ceil(np.log10(data.abs().max))
通过移动属性值的小数位数,将属性值映射到[-1,1]之间
3.3 连续属性离散化
分类算法如ID3算法、Apriori算法,要求数据是分类属性形式,将连续的属性变为分类属性。
1.离散化过程
确定分类数以及如何将连续属性映射到分类值
2.常用的离散化方法
(1)等宽法
将属性的值阈分为具有相同宽度的区间,缺点在于对离群点较敏感,倾向于不均匀把属性值分布到各个区间
(2)等频法
将相同数量的记录放进每个区间
(3)基于聚类分析的方法
1.将连续属性的值用聚类算法(K-means算法)进行聚类2.将聚类得到的簇进行处理,合并到一个簇的连续属性值并做同一标记。需要用户指定簇的个数,从而决定产生的区间数
3.4 属性构造
利用已有的属性集构造出新的属性,并加入到现有的属性集合中
3.5 小波变换
具有多分辨率的特点,在时域和频域都具有表征信息局部特征的能力,通过伸缩和平移等运算过程进行多尺度聚焦分析,提供一种非平稳信号的时频分析手段。
(1)基于小波变换的特征提取方法
(2)小波基函数
是一种具有局部支集的函数,并且平均值为0
(3)小波变换
对小波基进行伸缩和平移变换
数据规约
数据规约产生更小但保持源数据完整性的新数据集;
4.1 属性规约
中间三种都是属于直接删除不相关属性(维)方法。主成分分析是一种用于连续属性的数据降维方法,构造了一个原始数据的正交变换,新空间的基底去除了原始空间基底下数据的相关性,只需要少数的新变量就能够解释原始数据的中大部分变异。
import pandas as pd
input = '../data/component'
data = pd.read_excel(input, header = None)
from sklearn.decomposition import PCA
pca = PCA()
pca.fit(data)
pca.components_ #返回模型的各个特征向量
pca.explained_variance_ratio_ #返回各个成分各自的方差百分比,越大说明向量的权重越大
#得到特征方程,查看各个成分各自的方差百分比
pac = PCA(3)
pca.fit(data)
low_d = pca.transform(data) #用它来降低维度,降维结果是low_d
4.2 数值规约
数值规约指通过选择替代的、较小的数据来减少数据量,包括有参数和无参数方法。有参数方法是使用一个模型来评估数据,只需要存放参数,不需存放实际数据,例如回归和对数线性模型;无参数就需要存放实际数据,如直方图、聚类和抽样(采样)。
(1)直方图:使用分箱来近似数据分布,让每个桶代表给定属性的一个连续值域
(2)聚类:将数据元组(记录)视为对象,它将对象划分为簇,使一个簇中的对象相互“相似”,而与其他簇的对象“相异”
(3)抽样:无/有放回简单随机抽样/聚类抽样/分层抽样
(4)参数回归:线性回归/对数线性
分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值。
1.1 实现过程
(1)分类
建立在已有类标记的数据集上,输入样本的属性值,输出对应的类别,将每个样本映射到预定先定义好的类别。
(2)预测
建立两种或者两种以上变量间相互依赖的函数模型,然后进行预测或控制。
(3)实现过程
学习步,归纳分析训练样本集来建立分类模型得到分类规则;
分类步,先有已知的测试样本集评估分类规则的准确率,对未知 类标号的待测样本集进行预测。
1.2 常用的分类与预测算法
回归分析:确定预测属性(数值型)与其他变量间相互依赖的定量关系。
import pandas as pd
data = pd.read_excel('./banloan.xls')
x = data.iloc[:, :8].as_matrix()
y = data.iloc[:, 8].as_matrix()
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
rlr = RLR() #建立随机逻辑回归模型,筛选变量
rlr.fit(x, y) #训练模型
rlr.get_support() #获取特征筛选结果
lr = LR() #建立逻辑货柜模型
lr.fit(x, y) #用筛选后的特征数据来训练模型
print('平均正确率:%s' %lr.score(x,y)) #给出模型的平均正确率
决策树:采用自顶向下的递归方式,在内部节点进行属性值的比较,并根据不同属性值从该节点向下分支,最终得到的叶节点是学习划分的类。
人工神经网络:是一种模仿大脑神经网络结构和功能而建立的信息处理系统,表示神经网络的输入和输出变量之间关系的模型。
贝叶斯网络:信度网络,是Bayes方法的扩展,支持不确定知识表达和推理领域。
支持向量机:通过某种非线性的映射,把低维的非线性可转化为高维的线性可分,在高维空间进行线性分析。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。