|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现
1 L+ ]& c3 E/ MB = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');$ }* D% ^ ^* B: L: O
A = B;& A6 P7 A" Q- d# B1 K
[I,J]= size(A);
" ^( p4 Q& @9 \" v h Q
, t8 x/ u6 ~% ofor j=1:J9 x: z+ i% r0 x
for i=2:I % the 1st row does not contain NaN0 l6 o$ k- I1 K+ c- a
if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型; |5 C* N/ ]& Z3 Q% p5 }$ s/ U
disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置
0 p' x7 l9 }7 q7 Q* l, { end M0 f) F0 t' [9 r
end
4 l1 \* L* a. a! U) j# Q; l3 f4 o) Fend! W7 m/ m: U. D' N
6 p" V4 r# \0 X* y# [" mpython实现(https://blog.csdn.net/alanguoo/article/details/77198503) q$ Q/ A! o2 d$ F" \9 I
# t: v4 M( A4 O' G; S- J
import pandas as pd+ D) f& g0 w/ q8 c
4 L1 u' J# T0 R: j; q; O$ uimport numpy as np
: t( a W& k+ m& s
- k2 }" c8 s: j, a/ Q8 Cdf = pd.DataFrame(np.random.randn(10, 6))
% J/ d" B! S3 v$ s5 l0 t
; N2 u! g5 k- U5 A8 ~ v# Make a few areas have NaN values& D1 m3 t- c% q3 G
' ^" i/ X: W0 P$ _df.iloc[1:3, 1] = np.nan9 J9 }# X5 M2 I% M8 q
T/ V; i. r& Zdf.iloc[5, 3] = np.nan' |6 U2 Q( E# @4 d8 U3 K, g
5 @, Z( E0 o0 I) ]; a2 z! ddf.iloc[7:9, 5] = np.nan; ]) C$ w1 s6 g# G7 i
. b/ u: e! }; z* i
print(df)
: {6 W- X" C/ E0 _: ?2 V4 x7 B: ]# Q8 [) z4 Z$ C( e( j- j
print(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行 B7 f; w1 n: |7 a6 R/ Y
print(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列
3 V6 n/ p) I& j$ ]
( D2 Y/ A* X% K$ U2.异常数据查找 z-score标准化(matlab实现) . i# l+ U: o4 W1 s5 Y3 i
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');% m( G8 D5 ^/ o! y8 v# F2 Y
%将数据z-score标准化0 G8 h! i- a/ z" m& d) y5 e
A = zscore(B)1 H, N9 R4 p+ R/ H' V: _
disp(A). s8 @( F0 U f9 a; v$ S$ r( I
%获取矩阵的行数和列数,m为行数,n为列数3 v' S( \5 w% e" [( H
[m,n] = size(A)
, A/ m+ o6 }6 L; f9 [. Xfor i = 1:n8 ?+ p0 s: ?6 ]! E# y
%确定一个阈值,用来判断是否是异常数据5 W& V. Q4 Q1 Q) g7 K
if abs(A(1,i))>2
& O3 ^* ]) W+ G# \ disp(['(1,',num2str(i),')'])! n3 w" y7 V2 O
end. d& L2 m3 t% ?) I& V# l" F1 f
end
& K* j8 y% @& h% _7 e" N3 l) b3 h- {1 @0 c. d, w
二.聚类分析) F3 k* C( j L
. r6 q; R" ?+ ?! b" ^( T1.一维数据的聚类分析, ]! o( Q% N, @4 F$ X$ ]
$ c% Q! b3 q8 C' [7 M. b参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html5 l" i. G! {6 G2 [( U+ x
& W# m" N: g: omatlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)6 j$ F% M% N, i( a0 u
9 k2 W3 A9 V) Z4 h- W! ? Vclc;
) S! `/ j: A4 G: `) y
$ m4 b4 |6 I* k& Wclear;' o+ h( Q5 e0 I# } {# d
6 L2 I+ M8 y" S1 M% C" |/ P- oyw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵
% ]6 B3 `5 k1 P- z) I; O v- O1 X7 [* p3 e+ y' H2 M
A = yw_data'; y0 d: e- c" [
& c7 w, D( ?% J4 ^7 r7 U- v5 _3 E
xx=A;. M1 d: u" K$ v! }5 f1 i, o
. l% U; H/ @9 s/ V- ~ @& _# S, U8 ]clus=4;6 ?7 P: J0 Z* {/ q
/ r3 M2 |) L& C) z4 p[idx,c]=kmeans(xx,clus);2 n) U5 g/ ]) W8 b: @+ p V
. \) M! O, x, _: m4 ], C/ z
cc1=[]; D/ p {1 T) d0 v5 o
7 W" ]2 w) \ c) k0 N( K' D% e; D8 G
cc2=[];
, O4 H! f+ \+ [( T. u" b* e3 |1 |7 g* G: h
cc3=[];& |$ ^" Y1 Z0 g2 T7 X5 D" K
9 s* z" B- l/ Z) s% I+ ?
cc4=[];. @3 a8 m' n% J# K7 a4 V
5 A. {& D6 }* }" D7 o
[n,m]=size(xx);+ n; \8 z- P) { n9 k# H# H
7 W; S6 C, G9 @
for i=1:n# m+ V8 j5 X0 A! x( T: v9 f
\5 a9 Q4 d1 |2 h/ D9 Q5 f if idx(i)==1
( p* d; I# ^! X: @) A2 q) a$ K2 Q1 Q- i% \ |
cc1=[cc1;xx(i)];
2 K3 G3 V; Q8 C3 r! R, }0 w- n
' Q/ c$ N2 H9 L" L6 X$ j elseif idx(i)==2
Q6 y' y4 D' r7 T6 Q
' @. m, C+ v9 p+ c cc2=[cc2;xx(i)];
: x( L) S' D8 |: V8 T# s( w( H0 L/ g
elseif idx(i)==3
( ?# U4 R1 N7 O
1 Z# _) O6 a! K7 c cc3=[cc3;xx(i)];0 M1 L+ D, P, _/ ?. h7 c q$ R
" X, T/ y: R9 U0 d5 `' W
elseif idx(i)==4* t# p7 @- w8 b' N3 R3 U0 q# l5 [
+ Z, U6 \$ O* r% X, H# N6 W1 E3 X0 M cc4=[cc4;xx(i)];9 U. n( u' a+ z! k+ G! ?6 l
* v. _6 l U6 _, E I
end8 d# `' N: D5 a7 W8 l
/ j0 U, J6 [8 M. Y( Wend9 }/ T+ F8 r7 {2 U
' y3 O7 Y2 x& |( X1 R1 @disp('第一类边界'), V3 Q- }" ^0 W0 U& w
' t, e! J0 b- @[min(cc1),max(cc1)]: P5 o9 v7 \( ]
/ a5 {8 z, n. {0 f/ Qdisp('第二类边界')
6 w5 v k' ~' J q" E3 Y7 i! @. l) x
[min(cc2),max(cc2)]
4 X" H! G) t6 P0 I1 ^4 o* U. R5 [% Q- v
disp('第三类边界')
# X5 j( O/ C# ?1 I
9 J- ~6 }% m; b# X2 s+ z! h[min(cc3),max(cc3)] 2 ~6 Q% ~" ^1 t! M( D" M) L% S3 i
8 }* V: L0 J" o. V! rdisp('第四类边界')1 s8 ]# Q3 {" Q- X
0 ?: Q1 B) b t[min(cc4),max(cc4)] $ v) w0 }" t5 L- C8 g& m* k# |0 F7 [/ c
8 }- A: m3 k! k/ S$ O; E( H! idisp('四类中心')
4 c: e% T0 d+ f* ]% X+ o" O2 q% ^1 g5 l! |6 ^: D
c
, V5 o$ M9 l# L7 t6 k0 m
# V0 P( Y+ }9 f+ U9 b9 u" \. k/ y+ Hh1=plot(xx,'w');grid on;hold on;
9 s% X M8 ]% |+ e( [- ~
/ d& i9 a& [: |# D V( ~. `/ zfor i=1:n
9 b! [$ U- |% } C
; R6 S( j. n* b, I3 y if idx(i)==1, j% h; t o6 d- U
4 a5 y% W S" e, K$ o. H% J- S2 z text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);
1 }3 @9 v6 x! X- B* `; P( @# [, o7 t/ V2 o
elseif idx(i)==2% G" j, Y b' D" B; F, V
; l" v9 `1 V9 A2 Q6 l O9 t# F text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);# ~! h6 A" u. [3 K" a0 N' n
/ d$ U; r6 [" V2 s elseif idx(i)==3* q9 }& _6 F% F8 n
4 `* W1 \7 e, f
text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);3 r7 ?- _1 t( U1 X9 \$ r
9 k% D4 m! f: ~& V7 x* Q- E% |
elseif idx(i)==4- G8 R1 D* d3 x: E2 w4 L
8 x8 L# L- O, w text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);3 u5 `4 |; X/ I, P3 _+ T6 ~
- `& k/ ~7 c, d D& X
end4 q# I0 E4 z7 U! k7 x4 e
' L. |: B% ^/ q8 O
end
( ]+ Z) I3 m+ {6 I9 U' v2 s8 {
z. `* ^' s" q0 b, e9 ]ylabel('一维样本数据值')$ X7 B, F0 O1 j, o ^* l
* k+ ?* | u3 A( G& [- }3 D
xlabel('样本序列')
& D0 [2 x1 g$ c5 H
7 o* T+ ]! J6 W) X
- ~7 {9 ~1 y7 R8 D2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844
( t1 R6 G% O0 B [# U* h* v7 [————————————————
, N" g+ o- X% Q1 h1 }版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ F* l. P5 @# c; G% e2 L- i
原文链接:https://blog.csdn.net/machi1/article/details/981816214 i4 [& B7 Y/ z! ]9 r7 E
) ]+ v8 R9 l- m3 _7 E3 r
4 A, o' u7 ~) e$ r! r2 T, q+ v# z/ h% G4 K: F5 U5 ~, P3 N" D
" @$ c8 D% u5 ]2 h- H
4 ^+ v6 Q- T" Y6 _ t; m) ^
/ J" ~8 a0 H! |! [5 J9 }# H
# Z: B3 M* w Q/ a/ k/ L9 T- M |