一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现 0 f2 k2 z0 z c/ l, b# K" ]4 K
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');
& q& i- B% J6 ~7 F6 b0 GA = B;
! F3 I" p! T$ O% z# k+ b[I,J]= size(A);! D, w1 B2 @5 J; z$ s- i
. |0 B" j$ |, Mfor j=1:J4 j/ D+ m" G- q8 a# {: p; G1 C* H
for i=2:I % the 1st row does not contain NaN
- y. ]* P4 o- s/ e if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型- O7 R; R% f- \, B- Q; _
disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置* Q+ v' I- c8 a2 v$ d1 @! e0 ^& h" @
end 7 Y* a6 p# Y* i% ?% b# B5 d: K
end
$ Z7 ~+ W6 e9 s6 t6 `. C; cend
: _% l' \9 Q- z& h) `4 }, K/ @' S u6 w: X; Y
python实现(https://blog.csdn.net/alanguoo/article/details/77198503)( @4 H, U2 \4 F& O
; Q/ _0 y D+ s4 ?' G3 F% u
import pandas as pd5 o; p/ f: B$ Q7 r' ]/ h7 |
! N- W" ~5 e! ~7 e8 I5 I$ K q; oimport numpy as np- |' Q o! |! i* o8 o! P& S0 ]
, Y3 Y, A e1 I$ m; B
df = pd.DataFrame(np.random.randn(10, 6))
; K! i. |+ E8 _+ a6 M' W& q0 L0 T7 S( R4 U( a4 C
# Make a few areas have NaN values' g2 H1 i' `1 O5 k* z/ S2 ]0 _! A
* Y: @9 m% ?0 d1 _4 |df.iloc[1:3, 1] = np.nan
6 t1 \8 X" k. q w9 ~* u2 M
: l. ]. A6 W5 Edf.iloc[5, 3] = np.nan2 Y! N/ i; @3 C+ R" ~
& B# J/ S; N; |# zdf.iloc[7:9, 5] = np.nan# K" ], F% ?' j4 h2 U
8 n( E' `# X4 dprint(df)+ h! g4 D$ }) h2 R1 B6 k
4 [' _: ~5 ^3 O6 k
print(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行
+ [2 k5 @1 w8 R- Fprint(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列& V" \+ O8 h. H: B: s+ n
" K7 s2 F4 q5 U G5 Z& L2 c, K
2.异常数据查找 z-score标准化(matlab实现) ' W/ S3 q/ e/ c3 f. n
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
V4 q. {) ~4 i- v%将数据z-score标准化7 ?* i5 _6 E" h' b. O
A = zscore(B)( e; {5 b) a) r: P4 G! D
disp(A)
& B' m$ J$ |7 ^4 {%获取矩阵的行数和列数,m为行数,n为列数
; S9 [2 n; \2 b7 J! v, f/ n t[m,n] = size(A)/ n6 V- }, U4 H
for i = 1:n
5 r& f( g @0 l& U. e %确定一个阈值,用来判断是否是异常数据
8 K! ^( y. a8 Q if abs(A(1,i))>2
r- P: x6 Y, a# H; v3 k/ \ disp(['(1,',num2str(i),')'])" ]8 d" ?+ V3 D" s$ o
end
# P1 N9 M2 X* A. K3 X3 J" t. tend
$ r% q g. @9 |( t& s
. `2 F6 N: K+ A! Z+ R u. Y7 B二.聚类分析
& M* V7 U, E, h! |; E% s3 S5 G6 F: F1 c. d, a; A( b5 {
1.一维数据的聚类分析
a9 K4 u8 N- _9 W* z6 A" A' Y$ d0 \: a/ ~% F6 P( {" v( i
参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html' A* \6 l7 \* @' _6 P
& L3 U; q( w: F6 L3 ^8 ?2 kmatlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)$ t1 H) H2 ]1 N5 z" Z& @
0 I6 w; F( F0 h: V5 q' ^# O
clc;. M7 y2 E7 Y' K/ ?5 r9 L
) _& _9 U( f9 J ?) H
clear;( Q0 c, l( t. p: e3 t# ?( |( e
; x! `; p5 c$ C7 }; S5 y
yw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵! W: i% n" S9 M/ l1 }" v& l
0 W4 ~* G7 n1 k& r
A = yw_data';
4 `- f: ^' [3 x3 b( Q, h' e9 U" [6 p% p0 u" U! V* N( s, [2 [
xx=A;
5 K8 v4 R3 `, c. U& ]) k" C$ ~1 n8 }, q) j5 ~4 i
clus=4;/ I3 q4 O$ k, x
' o: J f0 ~- X# ?[idx,c]=kmeans(xx,clus);! i* Y( j* y/ H) T- _# T
) O* L: p M/ S3 ]8 ?cc1=[];
* W+ d0 \8 w% N) Z- u, {: [) u2 K$ W0 u2 ]
cc2=[];
! z4 ^7 y: T- O( U+ S; E9 i6 s: g; }! z. W
cc3=[];
C, X% O5 y( l) M( f: h7 P( X r$ O) Y6 O
cc4=[];
( B, r0 Z: a5 q, @( k9 C' w( W+ F, v- v# q/ k) s C& h
[n,m]=size(xx);
) u' Q2 @5 v# t9 u/ k
2 F- C# ^9 R4 h/ Ifor i=1:n
u3 {1 t: T C1 k' g" F7 l9 m, d t
* m3 ^9 y, l3 r if idx(i)==15 M9 T9 y$ c9 u! J! g3 F
2 I$ G- |( T# K+ N' r
cc1=[cc1;xx(i)];
3 p* J! Q. B! n) H9 T L3 \' k$ U4 e2 @) S' s4 [/ W9 z9 X3 c
elseif idx(i)==2 y3 \4 o W" e& e' }. l
) S3 g# K3 U0 g" D cc2=[cc2;xx(i)];
1 o3 V; R* A% r$ v- d0 W; S) t8 X9 m1 c: M
elseif idx(i)==3
6 F9 k# T3 o0 c) n
" ?, s" \% l/ r# ~6 w! z v cc3=[cc3;xx(i)];
- R" Q5 [7 y% O( F) r: ?. E, Y- ^- @- ^
elseif idx(i)==4( b7 d. f4 |" v& Z/ l! ^. b
0 {( L+ ^8 @3 }' _
cc4=[cc4;xx(i)];
1 Z0 M8 e8 l# u& j$ b7 z2 ~+ o: [* E& R- T5 ?' |+ {
end
0 `( u4 X& j5 I: }( \
, N/ ^5 O$ C+ ^6 E8 B- h/ fend+ T p8 l/ k0 h0 {/ D. ^
2 j! y* z x: b' K1 \3 g+ v& h. Jdisp('第一类边界')! w2 @* `6 A2 C) v$ M L
5 K P& {0 @4 I- M. k/ g$ G0 U[min(cc1),max(cc1)]6 H* w5 p$ G1 M0 t+ o a) Z4 o
; ^" s# m: y8 A3 W$ Q7 Y, Ndisp('第二类边界'): d& B! S. O I! J
. t7 Y2 M$ C4 n* c" n
[min(cc2),max(cc2)]) C b2 {7 Q% ^# R
8 _& n& |4 P5 w. d+ m" z: S+ Kdisp('第三类边界')1 _2 v2 J$ z/ @9 i
. G3 V/ u+ [' ^6 T; L# v5 k
[min(cc3),max(cc3)] ; R0 Y! N. C! T) Y
& \( T( Z( T. |: j0 f/ @' o5 [& T2 Idisp('第四类边界'): S2 y; o/ r- z' i, W$ a3 @
z9 m* @ j1 [7 p9 m
[min(cc4),max(cc4)] ' t6 L' u2 p" F, Q
; y+ L2 Y* X. C5 L& }- [# Rdisp('四类中心')
& R+ e J/ Z/ Z! M* q3 G+ F7 R- \9 [) K
c. W+ D$ m4 Z& E( Y: m
8 n' n2 o+ P1 f# M/ u. _" Z
h1=plot(xx,'w');grid on;hold on;
; {' U5 R+ R; T4 E
4 x# ]- }2 ], a2 @* x) Mfor i=1:n+ ]9 N0 b4 |3 D+ o2 g4 U% ]- E
5 h7 C1 \, T5 @7 r3 U if idx(i)==1
9 h! M1 [: a3 ]( Q t, p3 s% @# b) a- V: L6 k" n
text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);
0 C5 m* ^+ ~" q- U7 L6 D
7 O5 M2 m- R: K8 h# x elseif idx(i)==2" N5 H \1 L2 f. e
* E( ?3 C: Y4 Q7 m f; q6 O+ Y
text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);
t2 Y# F2 B" ~# I# t* ]4 V7 o; l! D) Q0 o a: w/ P
elseif idx(i)==35 z; ^6 |( z. _8 I( l' V
9 |* W# |# I% B) k text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);3 O. o9 N9 b+ ]) i9 p) t
7 W( w. c2 H) K" d$ i+ n; X/ g- B8 e elseif idx(i)==4& f/ p) |& e- H% }" r
# J" b0 a( Q) {4 W1 j; U
text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);
0 E2 S x9 a$ P+ \( |7 \7 |1 }+ i( Q; G8 T$ A
end# M. e- t! ]; n4 k: |
7 C7 n/ i4 k, n. a% P
end
9 N% b; n d( E9 N' x9 K$ k' ?2 A6 r; U0 M. m
ylabel('一维样本数据值'). f4 P- Z8 D% v1 ~5 W
6 H4 L4 O3 F6 n/ S1 b' p [xlabel('样本序列')
1 h, x& X" Y' m/ d+ I6 f" G2 ]: v) c
. D* n) }) ^; N' w* s8 Z9 }; O ^% S/ `* V2 U0 ]. b
2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844 . j. {/ s* v# K; H/ L; p. f
————————————————
! O" x& y8 A4 O$ {; U版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
7 L/ \/ t" W9 B# ^9 e/ |6 s* e原文链接:https://blog.csdn.net/machi1/article/details/98181621
: E' T& S# X% s2 l; ?0 t" p) @
$ q% e' O0 D1 V0 ?3 v/ P. {5 o; ?0 ]" \2 i% |% r$ [0 W
" M- s, Q) U( Z3 F0 E. ?0 b7 Y
4 p; K5 _9 w+ H1 ~4 E) a5 U: a! i" P9 `& V& x& \/ g: K
- t+ O% A" Q6 V* }$ @" x8 O* [# X# J3 z& S1 o
|