|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现
( S% @; Z: I# r4 OB = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');* U# l/ C0 J' G5 J' g" y5 r
A = B;
/ z$ g6 w) o) K: { D9 n6 V8 h[I,J]= size(A);
3 S9 y! Y! ^ E; ]
9 _4 |1 O" }0 } @for j=1:J, g8 d+ X5 Z0 {7 Y; g
for i=2:I % the 1st row does not contain NaN2 y# z4 M$ I% F0 v
if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型
4 A5 f# Z# R6 u1 A! C disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置0 _* y8 \3 f; H
end
1 Y8 z6 }4 \, w# ` end7 c, I6 T) X$ ~( L9 f8 L6 i# o; }
end
& V3 u% ]' h( e* ^) I" }+ Z0 W6 q3 A3 r, u1 |8 c
python实现(https://blog.csdn.net/alanguoo/article/details/77198503)4 \0 y( H1 c* A# ?7 O/ x
/ O* M2 c$ u! m
import pandas as pd
' U% y5 W8 F6 s$ `4 {5 E0 M j/ E! R5 q. {# M
import numpy as np
, h$ C& R( o' i% q9 C
+ m/ g+ p2 n8 d% Ldf = pd.DataFrame(np.random.randn(10, 6))
6 }# r. u3 |$ M0 @. n/ e" D- S V1 ?
# Make a few areas have NaN values! p" T0 D' ]5 p& b2 `
5 }5 \1 Z7 s9 C1 Ydf.iloc[1:3, 1] = np.nan p4 l$ P8 X6 Z9 K
1 k& I0 i4 @# F
df.iloc[5, 3] = np.nan6 t9 G; D" K8 {5 q4 G9 q4 R2 R0 K# ], @
6 s @8 y/ E% ]* Pdf.iloc[7:9, 5] = np.nan& v/ B0 c2 _ ]# E
. v( w, Q% j3 Z/ Q, `
print(df)
8 l# ~( C* G" Q& n$ i# ?1 x" b' S" Y8 M/ t6 s6 r
print(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行
, F; ^6 p0 m2 N, `. ?. Fprint(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列
- w7 ~# U4 A+ v% T) j! |7 A( |2 G0 U. B# w: D
2.异常数据查找 z-score标准化(matlab实现) 6 q# t0 U$ m4 Q; ^" _
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
/ x1 V8 r, ?4 G%将数据z-score标准化& v; @0 h* q' m& x4 k5 d' Z& L& e+ ^
A = zscore(B)
) s; k. E) Z$ Y* ?8 P$ f$ ~disp(A)" Q- F( U& r( a* c. N2 L! E7 p. c" D
%获取矩阵的行数和列数,m为行数,n为列数+ b, Q! D. x b8 ?; ?0 V3 {
[m,n] = size(A)
3 g9 v; b0 ? @' Y4 T! s0 K2 M {for i = 1:n! p# h o# h( V% O
%确定一个阈值,用来判断是否是异常数据4 `& F. t& f E/ M3 z {
if abs(A(1,i))>2( a! j& ~3 g. J$ s3 t$ p
disp(['(1,',num2str(i),')'])
2 E& [! F' c3 X end. `* Z: y/ V* f
end
" M! l+ N, Q7 A" u" ~- z. w1 R6 o) M" E) j; T) A4 K/ ~8 @, [6 p
二.聚类分析/ g: C8 Z. W, s1 J
- Z+ [. I9 u5 s0 y1.一维数据的聚类分析
" F3 D( _: R# E1 W3 {2 P% ?9 f0 W2 x& t/ i) ~2 _+ O6 p& `- G
参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html, j# \3 k8 K9 `. m# V; V
3 e; g' `; ]) z: y) _matlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html). z7 c3 j. m: W2 M5 k
3 L! n, l4 l) @$ G, z4 |5 i& t( S; Lclc;
7 u7 L1 M% ^+ q$ D, e% Q, l
5 W, ^7 |0 b G# }9 C5 l* ^) A4 Eclear;0 o4 X. B" O9 R. \) t: x
7 ]: Q7 m4 g3 L) b. } {yw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵) @7 h% Q( V! \, U$ D; h- R3 ?
5 s: _* |. J, `- A" d/ I6 mA = yw_data';/ Y* ?+ @9 O. r) }) P4 q/ [% {
3 Q7 S" Z* q$ \& n0 K0 [) D
xx=A;
4 {0 L$ c3 f9 p
4 _1 y+ x0 L* s- O$ G/ N# jclus=4;
) q' Q8 k' S5 c- V6 I4 j7 ^9 L8 o* H+ {
[idx,c]=kmeans(xx,clus);6 T) ]& i* p- c
" z6 f7 a# w+ z; x2 X/ {cc1=[]; e$ l8 o8 i! t2 o) q7 G
" [3 ~: c! f* e6 D! R/ A0 r& b
cc2=[];
" {" Z& S x4 m8 R$ E
j4 [6 w$ }& acc3=[];; o* ~( i3 _- l# P1 I' \
" u. E S# W& J9 ~& tcc4=[];
9 z# k4 y3 h$ K) _& U, D! t/ Z! d& a1 G2 A: E
[n,m]=size(xx);, s: X0 w' U) P( _2 \
' a' t" [* w: m4 \ C! Q" z
for i=1:n
o i' S. Y, c0 O0 _
5 j6 j( X% w6 B; l, u- K' P1 T if idx(i)==1: S) Y, C* g% a( t
: k0 ?9 { r) \
cc1=[cc1;xx(i)];
# j# d7 B& ^. s$ V# r: A) P3 G* |! `0 y+ x
elseif idx(i)==2
% S: r! n6 O) I$ Z* |# F7 j8 j3 C" C9 i+ F6 n% d
cc2=[cc2;xx(i)];( n: [; f& j; z! j; h! `% S2 B
+ V+ |: T- e/ W, H3 }$ `
elseif idx(i)==3
7 n6 L; H# }2 k- W( c. \
0 {) _% R$ {) I! ? cc3=[cc3;xx(i)];& f0 x, C4 w# Y. y8 A8 p$ ^# k
5 v" n( H; T, Z1 W elseif idx(i)==4
7 k& i4 | ~% S7 r% j7 i- F$ J" c$ y* z9 \: j
cc4=[cc4;xx(i)];6 l* r- k! w3 p
* E2 a9 e5 b' C6 h- N5 E
end
0 M" G( T: R( p8 y5 Y" ^! w
( d* f; \$ w8 K' `end
% \ D. _1 n/ a" q+ v* Q3 I
3 A" J) p4 C' }. K- Ddisp('第一类边界')
6 w5 z5 K+ d0 q- c; }1 `. z! c, p; U! C- Y+ q& a/ M8 O" S
[min(cc1),max(cc1)]" N. H. g) j% x8 V, T& [$ J
( G& e8 U+ d: f8 p: _+ wdisp('第二类边界') t2 y# O4 E" B% A3 W
5 V }: ^& [% M' I9 z$ z[min(cc2),max(cc2)], H: d8 P5 @9 [: i
' K. a/ N4 n/ V2 J( |& ]6 x9 ]! P4 Idisp('第三类边界')9 W# i! [' {& u! Q* f
/ a. _+ T6 k6 Q2 t( \& a[min(cc3),max(cc3)]
: E4 R1 ?/ V9 W- {: V w9 s: q b" c; A; o! N0 A
disp('第四类边界')+ E4 X. N! T/ k. M* h1 c3 Q
2 y9 U/ @/ P# ?5 c; o1 L j
[min(cc4),max(cc4)] " A8 D, ^! j; ^! q" s Z
# q9 r2 [8 S# u: F, ]( sdisp('四类中心')
' a: ^! N2 f# B! ^4 S+ X/ |6 N: T7 C5 C: o! h' C$ h& U5 ^$ m
c7 s1 `9 R8 k4 H/ H
6 h9 x0 d2 \3 x7 t( U
h1=plot(xx,'w');grid on;hold on; 7 x2 b: U! A5 `$ A
) j" D( s' \( s( F2 v9 Rfor i=1:n) u5 [* h- T8 U; X$ i& \2 N
. y; B& J# e- h if idx(i)==1
8 F1 F) \$ }0 r( b& y' m6 Y
" i9 j% L$ p8 k9 `; W% F# z text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);
1 I7 n/ \# D0 `# p$ Q8 Z4 E+ }5 ]5 E. ?3 l& ? z
elseif idx(i)==2
/ j( v4 D2 \3 T W. k: M( E% d5 c% ~. `: O, H( A5 d
text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);
' e0 U, l# J5 @& f, D* n! `- D& t; c
elseif idx(i)==3
% ^6 _/ Z* A3 U' J/ O5 h% I1 @
# k7 w( \: I& g" P text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);
& G ^/ B5 @- V1 i, M% v! M3 m; k' h- I y
elseif idx(i)==4
: K' V, v+ N! b$ ~* l+ r% q& P
& y! }- ?. h) C9 J g% S2 A; Y text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);$ E- y [& e: m: R# m6 v
* x* ?6 b9 w4 d, J end
, M* a- @2 ~6 }* C$ u% v) j+ R E: w% e/ A4 U
end
9 X* V+ @9 D, S! i" |# m
) U! G4 \. c, Z7 e# D+ @; n, sylabel('一维样本数据值')
2 X, v9 y0 R7 j& _
- `; Q0 D: I$ L3 p4 c3 @8 {xlabel('样本序列')
- V( o* V# C1 _' ]% m3 c- [
; r5 w% H$ p% h2 u+ H
) n# T& J8 }1 z9 {$ p$ Z( N2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844
( z' N; o3 |8 s$ i. N————————————————/ m7 g' r9 ]0 s
版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
& z0 |' d' W+ N7 L7 s, m原文链接:https://blog.csdn.net/machi1/article/details/98181621! ~0 `' `) @) b' \0 l
6 G3 o( y' P7 W4 y' ^ @3 k+ s/ s; K4 Y2 W6 S# l
. u$ C( c7 j, |* N
, G# W$ }& _" ]5 @3 V" K6 e' Z/ ^% r" F' t' i( e2 ?0 O2 |+ E
0 X' f8 F! f: y0 s
& Z/ ?& y; E$ N. |2 t |