您的位置:首页 > 其它

统计分析——数据的预处理

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个案例分析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据