统计分析——数据的预处理
2016-09-03 16:19
267 查看
统计分析——数据的预处理
一. 数据的清洗1. 数据清洗
A 异常值处理
I 删除
II 视为缺失值
III 平均值修正
IV 不处理
B 缺失值处理
I 删除
II 不处理
III 插补方法
a. 均值(mean)中位数(medium)众数(mode)
b. 使用固定值
c. 最近临插补:找与缺失样本临近样本
d. 回归方法:ployfit
e. 插值法:interp1函数,interp2函数,interp3函数,拉格朗日插值,牛顿插值
2. 数据的平滑处理
A smooth函数
B smoothts函数
C medfiltl函数
3. 数据的标准化变换
A 标准差标准化:
I
a. Z=zscore(X);
result: z=(X-mean(X))./std(X)
b. [Z,mu,sigma]=zscore(X);
mu=mean(X) sigma=std(X)
c. [Z,mu,sigma]=zscore(X,flag,dim);
i. flag=0 样本容量为n-1
flag=1 样本容量为n
ii. dim=1 列变换
dim=2 行变换
注:均值和标准差受离群值点的影响很大,经常用中位数M取代均值,其次用绝对值差取代标准差 (W是平均数或中位数)
B 极差归一化( )
I [R,xmin,xmax]=rescore(x,dim);
dim=1 列变换
dim=2 行变换
(代码见附录)
附录
一. 拉格朗日插值函数lagrange_interp()
function [ yi ] = lagrange_interp (X,Y,xi) n=length(X); %得到已知数据长度 m=length(xi); %得到待插值数据长度 yi=zeros(size(xi)); for j=1:m %待插值数据有m个,计算每个插值结果 for i=1:n %已知的n个数据构造中间值 temp=1; %temp用于存储中间值 for k=1:n if(i~=k) %和自身标号相同的不相乘 temp=temp*(xi(j)-X(k))/(X(i)-X(k)); end end yi(j)=Y(i)*temp+yi(j); end end end
二. 牛顿插值函数newton_interp()
function yi=newton_interp(X,Y,xi) syms t; %定义自变量t,用于字符公式 if(length(X)==length(Y)) n=length(X); c(1:n)=0.0; else disp('X和Y的维数不相等!'); return; end f=Y(1); %f用来记录得到的牛顿插值公式的字符串表达式 l=1; for i=1:n-1 y1=zeros(1,n-i); for j=i+1:n y1(j)=(Y(j)-Y(i))/(X(j)-X(i)); end c(i)=y1(i+1); %c记录差分 l=l*(t-X(i)); %l记录(x-x0)(x-x1)……的值 f=f+c(i)*l; %累加得到差分公式 Y=y1; end f=simplify(f); %简化得到的牛顿插值公式 m=length(xi); %开始输出 for i=1:m yi(i)=subs(f,'t',xi(i)); % 根据公式计算需要的值 end yi=double(yi); % 转换为数值型,为返回值 end
三. 极差标准化程序rescore.m
function [R,xmin,xrange] = rscore(x,dim) %极差归一化变换 % R = rscore(X) 对X进行极差归一化变换,这里X可以是一个向量、矩阵或高维数组。 % 若X是一个向量,返回变换后结果向量R = (X–min(X))./range(X);若X是一个矩阵, % 则用X的每一列的最小值和极差对该列进行极差归一化变换,返回变换后矩阵R;若X是 % 一个高维数组,则沿X的首个非单一维方向计算最小值和极差,然后对X进行极差归一化 % 变换,返回变换后高维数组R. 例如X是一个1×1×1×4的4维数组,由于X的前三维均 % 为单一维,于是计算X的第4维方向上的最小值和极差,对X进行极差归一化变换,返回 % 的R也是一个1×1×1×4的4维数组。 % % [R,xmin,xrange] = rscore(X) 还返回X的最小值xmin = min(X)和极差xrange = range(X). % % [...] = rscore(X,dim) 用dim参数指定沿X的哪个维进行极差归一化变换,例如 % dim = 1,表示对X的各列进行极差归一化变换;dim = 2,表示对X的各行进行极差归一化变换。 % % 请参考zscore, min 和 range 函数的用法. % Copyright 2009 - 2010 xiezhh. % $Revision: 1.0.0.0 $ $Date: 2009/12/2 15:58:36 $ if isequal(x,[]), z = []; return; end if nargin < 2 % Figure out which dimension to work along. dim = find(size(x) ~= 1, 1); if isempty(dim), dim = 1; end end % Compute X's min and range, and standardize it xmin = min(x,[],dim); xrange = range(x,dim); xrange0 = xrange; xrange0(xrange0==0) = 1; R = bsxfun(@minus,x, xmin); R = bsxfun(@rdivide, R, xrange0);
参考文献
[1]MATLAB数据分析与数据挖掘实战
[2]MATLAB统计分析与应用40个案例分析
相关文章推荐
- 我是运营,我没有假期
- DB2数据库的安装
- C#实现把指定数据写入串口
- “传奇”图象数据存储方式
- 修复mysql数据库
- 浅析SQL数据操作语句
- SQLServer 数据导入导出的几种方法小结
- 简述MySQL分片中快速数据迁移
- MySQL数据备份之mysqldump的使用详解
- C#实现窗体间传递数据实例
- C#中的委托数据类型简介
- SQL Server删除表及删除表中数据的方法
- SqlServer2008误操作数据(delete或者update)后恢复数据的方法
- 给你的数据库文件减肥
- Oracle数据更改后出错的解决方法
- Oracle数据库数据丢失恢复的几种方法总结
- Ajax点击不断加载数据列表
- C#将Sql数据保存到Excel文件中的方法
- C#实例代码之抽奖升级版可以经表格数据导入数据库,抽奖设置,补抽
- SQL Server简单实现数据的日报和月报功能