# 4.4数据规约:降低无效、错误数据对建模的影响,提高建模的准确性;少量且具有代表性的数据将大幅缩减数据挖掘所需时间;降低存储数据的成本。
# 属性规约:通过属性合并来创建新属性维数,或者直接通过删除不相关的属性来减少数据维数。
# 常见方法:
# 1、合并属性:将一些旧属性合为新属性
# 2、逐步向前选择:从一个空属性集开始,每次从当前属性子集中选择一个当前最优的属性并将其添加到当前属性子集中,知道无法选择出最优属性或满足一定阈值约束为止;
# 3、逐步向后删除:从一个全属性集开始,每次从当前属性子集中选择一个当前最差的属性并将其从当前属性子集中消去,知道无法选择出最差属性为止或满足一定阈值约束为止;
# 4、决策树归纳:利用决策树的归纳方法对初始数据进行分类归纳学习,获得一个初始决策树,所有没有出现在这个决策树上的属性均可以认为是无关属性,因此将这些属性从初始集合中删除,就可以获得一个较优的属性子集;
# 5、主成分分析:用较少的变量去解释原始数据中的大部分变量,即将许多相关性很高的变量转化成彼此相互独立或不相关的变量。主成分一般选择使贡献率达到80%的主成分个数。
# 在python中主成分分析函数位于scikit-earn下:sklearn.decomposition.PCA(n_components=None,copy=true,whiten=False)
# 其中,n_cmponents:PCA算法中所要保留的主成分个数n,也就是保留下来的特征个数。默认为None,即所有特征被保留。
# copy:表示是否在运行算法时,将原始训练数据复制一份。若为True,运行算法后原始训练数据不会 有任何改变,否则原始训练数据被改变。
# whiten:白化,使得每个特征具有相同的方差。
# 使用主成分分析降维的程序代码:
import pandas as pd
inputfile='E:/WTTfiles/自我学习/机器学习/python数据分析与挖掘实战/chapter4/demo/data/principal_component.xls'
outputfile='E:/WTTfiles/自我学习/机器学习/python数据分析与挖掘实战/chapter4/demo/tmp/dimention_reducted.xls'
data=pd.read_excel (inputfile,header=None)
from sklearn.decomposition import PCA
# pca=PCA()
# pca.fit(data)
# print(pca.components_)#返回模型的各个特征向量
# print(pca.explained_variance_ratio_)#返回各个主成分各自的方差百分比
# 以上代码计算后可以看到有8个特征根、8个特征向量,以及各自的方差百分比(也称贡献率),方差百分比越大,权重也越大,当选取前4个主成分时,累积贡献率已经达到97.3%,说明选取前三个主成分就可以。
pca=PCA(3)#选择前三个主成分
pca.fit(data)
low_d=pca.transform(data)#用它来降低纬度
pd.DataFrame(low_d).to_excel (outputfile)#保存结果
pca.inverse_transform(low_d)#必要时可以用inverse_transform()来复原函数
print(low_d)
# 数据规约:通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法
# 有参数方法是使用一个模型来评估数据,只需存放参数,而不需要存放实际数据,例如回归和对数线性模型;无参数方法就需要存放实际数据,例如聚类、直方图、抽样等
# 直方图:使用分箱来近似数据分布,如果每个桶只代表单个属性值/频率对,则称为单桶,通常,桶表示给定属性的一个连续区间
# 聚类:将数据元组视为对象,将对象划分为簇,使一个簇中的对象相互相似,而与其它簇中的对象相异,在数据规约中,用数据的簇替换实际数据。
# 抽样:用比原始数据小得多的随机样本表示原始数据集。
# 参数回归:简单线性模型和对数线性模型可以用来近似描述给定的数据。
[[ 8.19133694 16.90402785 3.90991029]
[ 0.28527403 -6.48074989 -4.62870368]
[-23.70739074 -2.85245701 -0.4965231 ]
[-14.43202637 2.29917325 -1.50272151]
[ 5.4304568 10.00704077 9.52086923]
[ 24.15955898 -9.36428589 0.72657857]
[ -3.66134607 -7.60198615 -2.36439873]
[ 13.96761214 13.89123979 -6.44917778]
[ 40.88093588 -13.25685287 4.16539368]
[ -1.74887665 -4.23112299 -0.58980995]
[-21.94321959 -2.36645883 1.33203832]
[-36.70868069 -6.00536554 3.97183515]
[ 3.28750663 4.86380886 1.00424688]
[ 5.99885871 4.19398863 -8.59953736]]