1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 《Python数据分析与挖掘实战》笔记(四):数据预处理

《Python数据分析与挖掘实战》笔记(四):数据预处理

时间:2018-11-08 05:23:31

相关推荐

《Python数据分析与挖掘实战》笔记(四):数据预处理

数据预处理主要包括数据清洗数据集成数据变换数据规约

数据清洗:删除原始数据集中的无关数据、重复数据、平滑噪声数据,处理缺失值、异常值等 ①缺失值处理 删除记录、数据插补、不处理 常用插补方法 均值/中位数/众数 根据属性值类型,取均值、中位数、众数进行插补 使用固定值 将缺失属性用常量替代 最近邻插补法 在记录中找到与缺失样本最接近的样本的该属性值进行插补 回归方法 根据已有数据和与其有关的其他变量数据建立拟合模型来预测 插值法 建立合适的插值函数f(x),未知值计算得到。拉格让日插值法、牛顿插值法。

②异常值处理:异常值是否剔除看情况,因为有些异常值可能含有有用信息 常用异常值处理方法 删除记录 直接删除 视为缺失值 视为缺失值进行缺失值的处理 平均值修正 取前后两个正常值的平均 不处理 判断其原因,若无问题直接使用进行挖掘

数据集成:将多个数据源合并存在一个一致的数据存储中,要考虑实体识别问题和属性冗余问题,从而将数据在最低层上加以转换、提炼和集成 ①实体识别:同名异义、异名同义、单位不统一 ②冗余属性识别:多次出现、同属性不同名导致重复

数据变换:对数据规范化处理 ①简单函数变换,如平方、开方、对数、差分运算 ②规范化,也称归一化,消除量纲和取值范围的差异,进行标准化处理。映射到[-1,1]或[0,1]内。 [1]最小-最大规范化,也称离差标准化。x*=(x-min)/(max-min);缺点:异常值影响;之后的范围限制在[min,max]中 [2]零-均值规范化,也称标准差规范化,处理后[0,1]。x*=(x-mean)/std [3]小数定标规范化,移动属性值小数位,映射到[-1,1]。x*=x/10^k

#-*- coding: utf-8 -*-#数据规范化import pandas as pdimport numpy as npdatafile = '../data/normalization_data.xls' #参数初始化data = pd.read_excel(datafile, header = None) #读取数据print (data - data.min())/(data.max() - data.min()) #最小-最大规范化print (data - data.mean())/data.std() #零-均值规范化print data/10**np.ceil(np.log10(data.abs().max())) #小数定标规范化#output:#0 1 2 3#0 0.074380 0.937291 0.923520 1.000000#1 0.619835 0.000000 0.000000 0.850941#2 0.214876 0.119565 0.813322 0.000000#3 0.000000 1.000000 1.000000 0.563676#4 1.000000 0.942308 0.996711 0.804149#5 0.264463 0.838629 0.814967 0.909310#6 0.636364 0.846990 0.786184 0.929571#0 1 2 3#0 -0.905383 0.635863 0.464531 0.798149#1 0.604678 -1.587675 -2.193167 0.369390#2 -0.516428 -1.304030 0.147406 -2.078279#3 -1.111301 0.784628 0.684625 -0.456906#4 1.657146 0.647765 0.675159 0.234796#5 -0.379150 0.401807 0.152139 0.537286#6 0.650438 0.421642 0.069308 0.595564# 012 3#0 0.078 0.521 0.602 0.2863#1 0.144 -0.600 -0.521 0.2245#2 0.095 -0.457 0.468 -0.1283#3 0.069 0.596 0.695 0.1054#4 0.190 0.527 0.691 0.2051#5 0.101 0.403 0.470 0.2487#

③连续属性离散化:分类算法需要离散形式,如ID3、Apriori等 离散化过程就是在取值范围内设立若干个离散花粉店,将取值范围划分为离散区间 等宽法、等频发、基于聚类分析方法

#-*- coding: utf-8 -*-#数据规范化import pandas as pddatafile = '../data/discretization_data.xls' #参数初始化data = pd.read_excel(datafile) #读取数据data = data[u'肝气郁结证型系数'].copy()k = 4d1 = pd.cut(data, k, labels = range(k)) #等宽离散化,各个类比依次命名为0,1,2,3#等频率离散化w = [1.0*i/k for i in range(k+1)]w = data.describe(percentiles = w)[4:4+k+1] #使用describe函数自动计算分位数w[0] = w[0]*(1-1e-10)d2 = pd.cut(data, w, labels = range(k))def cluster_plot(d, k): #自定义作图函数来显示聚类结果import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号plt.figure(figsize = (8, 3))for j in range(0, k):plt.plot(data[d==j], [j for i in d[d==j]], 'o')plt.ylim(-0.5, k-0.5)return pltcluster_plot(d1, k).show()cluster_plot(d2, k).show()

④属性构造

#-*- coding: utf-8 -*-#线损率属性构造import pandas as pd#参数初始化inputfile= '../data/electricity_data.xls' #供入供出电量数据outputfile = '../tmp/electricity_data.xls' #属性构造后数据文件data = pd.read_excel(inputfile) #读入数据data[u'线损率'] = (data[u'供入电量'] - data[u'供出电量'])/data[u'供入电量']data.to_excel(outputfile, index = False) #保存结果

⑤小波变换:信号分析手段,小波分析的理论和方法在信号处理、图像处理、语音处理、模式识别、量子物理等领域得到越来越广泛的应用

#-*- coding: utf-8 -*-#利用小波分析进行特征分析#参数初始化inputfile= '../data/leleccum.mat' #提取自Matlab的信号文件from scipy.io import loadmat #mat是MATLAB专用格式,需要用loadmat读取它mat = loadmat(inputfile)signal = mat['leleccum'][0]import pywt #导入PyWaveletscoeffs = pywt.wavedec(signal, 'bior3.7', level = 5)#返回结果为level+1个数字,第一个数组为逼近系数数组,后面的依次是细节系数数组

数据规约:产生更小且保持数据完整性的新数据集。意义在于降低无效、错误数据;降低存储成本;少量且具有代表性的数据大幅加快。 ①属性规约:属性合并或删除无关维,目标是寻找最小子集使子集概率分布尽可能与原来相同 属性规约常用方法 合并属性 将就属性合并为新属性 {A1,A2,A3,B1,B2,C}——{A,B,C} 逐步向前选择 从空集开始,逐个加入最优属性,直到无最优或满足条件 {}—{A1}—{A1,A4} 逐步向后删除 从全集开始,每次删除最差属性,直到无最差或满足阈值 决策树归纳 利用决策树归纳能力进行分类,删除未出现的属性,即效果差的属性 主成分分析 用少量变量解释大部分变量,保留大部分信息,将相关性高的数据转为彼此独立

#-*- coding: utf-8 -*-#主成分分析 降维import pandas as pd#参数初始化inputfile = '../data/principal_component.xls'outputfile = '../tmp/dimention_reducted.xls' #降维后的数据data = pd.read_excel(inputfile, header = None) #读入数据from sklearn.decomposition import PCApca = PCA()pca.fit(data)ponents_ #返回模型的各个特征向量pca.explained_variance_ratio_ #返回各个成分各自的方差百分比

②数值规约:通过选择替代的、较小的数据来较少数据量,包括有参数(回归、对数线性模型)和无参数方法(直方图、聚类、抽样)

Python主要数据预处理函数interpolate 一维、高维插值,如拉格朗日、样条插值等 Scipy unique 去除重复 Pandas/Numpy isnull 判断是否为空 Pandas notnull 判断是否非空 Pandas PCA 主成分分析 Scikit-Learn random 生成随机矩阵 Numpy

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。