使用matlab分析數據質量、特徵

先貼一下參考博文:https://www.cnblogs.com/fangxiaoqi/p/11440078.html

吹一下這位大佬,感覺這個大佬寫的博客都十分認真,推測應該是同級的,哎,內心十分敬佩,若我有他十分之一功力就好了,而且文筆也很贊,經常會寫一些帶有思考性的文章,贊👍。

進入主題:

這篇文章主要寫一下數學建模中如何對數據進行預處理,主要包括缺失數據、異常數據的檢查和數據特徵的提取,希望今年參加數模的人都有個好成績吧(感覺自己好囉嗦).......

 

缺失數據和異常數據的查找:

%% 餐飲銷量數據缺失值及異常值檢測
clear;
catering_sale = '../data/catering_sale.xls'; % 餐飲數據
index = 1; % 銷量數據所在列 
%% 讀入數據
[num,txt] = xlsread(catering_sale);
sales =num(2:end,index);
rows = size(sales,1);
%% 缺失值檢測 並打印結果
nanvalue = find(isnan( sales));
if isempty(nanvalue) %  沒有缺失值
    disp('沒有缺失值!');
else
    rows_ = size(nanvalue,1);
    disp(['缺失值個數爲:' num2str(rows_) ',缺失率爲:' num2str(rows_/rows) ]);
end
%% 異常值檢測 
% 箱形圖上下界
q_= prctile(sales,[25,75]);
p25=q_(1,1);
p75=q_(1,2);
upper = p75+ 1.5*(p75-p25);
lower = p25-1.5*(p75-p25);
upper_indexes = sales(sales>upper);
lower_indexes = sales(sales<lower);
indexes =[upper_indexes;lower_indexes];
indexes = sort(indexes);
% 箱形圖
figure
hold on;
boxplot(sales,'whisker',1.5,'outliersize',6);
rows = size(indexes,1);
flag =0;
for i =1:rows
  if flag ==0
    text(1+0.01,indexes(i,1),num2str(indexes(i,1)));
    flag=1;
  else
      text(1-0.017*length(num2str(indexes(i,1))),indexes(i,1),num2str(indexes(i,1)));
    flag=0;
  end
end
hold off;
disp('餐飲銷量數據缺失值及異常值檢測完成!');

使用箱型圖判斷異常值的優點:箱形圖的繪製依靠實際數據,不需要事先假定數據服從特定的分佈形式,沒有對數據作任何限制性要求,它只是真實直觀地表現數據形狀的本來面貌;另一方面,箱形圖判斷異常值的標準以四分位數四分位距爲基礎,四分位數具有一定的耐抗性,多達25%的數據可以變得任意遠而不會很大地擾動四分位數,所以異常值不能對這個標準施加影響,箱形圖識別異常值的結果比較客觀。

 

缺失值處理:

處理缺失值的方法可以分爲三類:刪除記錄、數據插補和不處理。其中,插補最常用。

插補方法:均值/中位數/衆數插補、使用固定值、最近臨插補、迴歸方法、插值法。

推薦使用拉格朗日插值法和牛頓插值法對缺失值進行插補。

在插值前會對數據進行異常值檢測,發現的一些異常數據會定義爲空缺值,也會進行補數。

 

異常值處理:
異常值處理的常用方法有:

(1)刪除含有異常值的記錄

(2)視爲缺失值

(3)平均值修正

(4)不處理

 

數據特徵分析:

1.對比分析

2.統計量分析

3.貢獻度分析:貢獻度分析又稱帕累託分析,原理使帕累托法則,它是指任何特性羣體中,重要的因子通常只佔少數,而不重要的因子則佔多數,因此只要控制具有重要性的少數因子即能控制全局。

4.相關性分析:

(1)直接繪製散點圖:最直觀判斷線性關係。

(2)繪製散點圖矩陣

(3)計算相關係數

 

具體代碼實現看本文最上面的參考博文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章