|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现
6 |/ F1 x3 n) R: O4 c" j9 [B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');
+ m6 G' G$ t% b, Y: F) }$ |: yA = B;: b8 C" M: n" N8 l9 @" P$ u ]
[I,J]= size(A);; l5 J1 }6 [" a7 J% W
4 Y6 \6 v, l! q" X0 A3 ]+ |& F
for j=1:J
& k1 F# o$ U) V7 [ for i=2:I % the 1st row does not contain NaN
; M2 Q: g# S. i7 s if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型. v- a$ [$ y0 Y" Z7 B( o
disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置
0 E: G' W- h7 D& c end 8 w+ J7 k3 f9 I8 @ G
end: n5 S: W5 Y' }6 f" P, Q
end
5 O/ ?- r8 A# M3 u+ J3 \% B$ K0 q M6 c: z( u# ]# T6 F
python实现(https://blog.csdn.net/alanguoo/article/details/77198503)' D2 ~2 y m d7 M$ X! [( N' Q
: R$ t- Z- X: L1 `" |0 k6 Himport pandas as pd' F; Q4 A& s8 f. _* k2 b
, Y, ?* ~2 Y5 a# u# c; W5 }, qimport numpy as np
/ N' i7 y: Z& b# T( F3 h- C
* g/ \8 N) [# O- D5 Idf = pd.DataFrame(np.random.randn(10, 6))
. l- O3 i. Y- y6 v! k: p+ M9 {; u5 f0 g8 |
# Make a few areas have NaN values. S3 F! A( w1 @( U
% n$ i) J ~+ Q' m7 c
df.iloc[1:3, 1] = np.nan+ J. h: w1 I/ i% Q8 S, B
7 ?6 F% l$ Z# @, c' i
df.iloc[5, 3] = np.nan
0 Z- v. M2 i' q
" R1 P8 \5 A4 K/ qdf.iloc[7:9, 5] = np.nan
1 a' g8 B" H) p% y! V* N, z8 U* ?% B4 Q
print(df)
8 h- l# X! o" q5 d1 t& f$ E8 G
4 r1 b- B3 a; C* ]print(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行
( ?/ L8 L6 U2 U# ]; {print(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列. X0 I9 i! t( b7 ^0 c0 Y
/ H, r6 q: ]* }* `; d2 Z2.异常数据查找 z-score标准化(matlab实现)
, D1 g: G% t7 U' L" P9 C: f/ GB = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
2 J# S! P6 V, q& u%将数据z-score标准化; l+ }8 m/ m4 i# ^: t- x
A = zscore(B)
0 a! z) K& o7 g) K; ?disp(A)' ^ ?2 g6 U1 k" L0 w
%获取矩阵的行数和列数,m为行数,n为列数# C4 a, H! T2 }2 b- a8 t6 K& l: V
[m,n] = size(A)
7 I1 m1 t% [( w- }* W) P( x1 jfor i = 1:n
8 |7 l! ~- c4 _9 m! R- l# P+ A %确定一个阈值,用来判断是否是异常数据/ [( ?, l' y% ?; Z( |+ N
if abs(A(1,i))>22 l& y( ]5 Y! u0 T' T; o2 ?
disp(['(1,',num2str(i),')'])& e: K( g9 K, Z3 N8 y
end1 r7 D' g* n) G$ a$ D( h
end8 _, s: L d ~4 T" |
) }) R1 l& j5 B. n7 o$ e/ ]) v二.聚类分析
7 e) l! i: U6 j! n+ j% Q' ~# |& D# y; X- |' |; O% |$ E: ]
1.一维数据的聚类分析
( j& s3 d' R1 i% y% O7 R& }, n4 @- P0 _) b. ` ~
参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html
. r$ J! W* A4 _8 C" X
: L( g- U$ B$ _; j9 n: W" vmatlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)7 Z f1 l2 T% C# `
" h6 _8 f, ~6 N4 i7 Z, N" C4 Z( K
clc;& k( |8 S* d% ~% V
) V0 y5 V2 \) H- zclear;# ^* l4 I% w- s* ]: f# x3 P
# }2 {& W" e' s9 M0 f- p& E: g& cyw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵
8 |: p; ]6 x' l- d- U8 F' ^" m& d& ]$ r- K1 W* c
A = yw_data';3 `/ L3 V, E! ]) \: }
' L" J5 s5 E I/ A& E; l
xx=A;$ l4 C, @( B7 W0 g
" A0 l( a! C, H- z# n0 u2 Zclus=4;
) R' ?8 Z" e# l8 o- _3 b
; D6 F8 Z4 z) i[idx,c]=kmeans(xx,clus);
& b8 ^. u7 R7 H( T: H) d) T# r8 w. e! x$ } b+ H
cc1=[];
0 n9 r+ k8 {8 F( w
/ u( x0 P+ L' x; p0 a( ccc2=[];
2 T; J) w5 ~' b Y/ K9 s& p7 G5 V2 l2 G" S( N7 Z& e
cc3=[];
6 x' \; ?$ H. c h# B# I6 M
/ L4 d; E! n" ?" [6 M+ S/ {cc4=[];3 x6 A& d8 o- Y3 l# r! T
( O, j* Z9 A% f0 Q; w$ n[n,m]=size(xx);9 s }. T/ T7 g) P8 c4 b
& A& Q4 F" y: M1 n3 N+ E# X# dfor i=1:n: b3 `% }0 [8 ~1 k: H) q; k1 H
, d* Z0 k( ?0 O" j if idx(i)==1/ c6 V) w' R! f5 T) h
, u- m* ]/ W( t cc1=[cc1;xx(i)];
& E3 b8 U7 X0 @
. ]. |8 S5 ^) E$ z+ b: | elseif idx(i)==2
1 y7 }# o0 K; z* S8 X5 L" ~1 {& E. x4 Z* I! [) P
cc2=[cc2;xx(i)];4 L# L0 `% ~4 }- p6 K
/ K/ T' T; D7 Y3 a* f" X3 ? elseif idx(i)==3
) e y& ?4 z4 C4 g! r' x' g7 f
7 R0 M8 u/ }4 [5 u cc3=[cc3;xx(i)];
1 @- R% _5 H- C {* f5 T' ^( r! R$ j( w$ b) w& y$ o) i$ n9 M% j
elseif idx(i)==4* O/ u- o J' V5 i
+ M. d7 C4 U. v" J
cc4=[cc4;xx(i)];( S# `9 V# t4 n5 [( n ^
0 s& V3 x _. Y, w' Z
end
2 M5 R; X- }1 p$ M: a0 p' B& a% c, G5 T1 W4 y
end- o8 w* o2 k8 h( \. a4 R2 q9 `
& ?5 l3 H6 A; e9 ?" N: N
disp('第一类边界')+ p9 p4 {9 _* G
. r8 Y% J! Z4 n1 s F[min(cc1),max(cc1)], M; d; h8 `: a @) ]# a
1 I% r4 H, z. I+ }( l' ] o( r% Ddisp('第二类边界'): I, |7 ~5 x* M5 i$ h4 k
: `4 l! f* p. F" Q[min(cc2),max(cc2)]
4 ^+ f. p+ Y! v) @* C) N) P- W+ h2 v; y1 l+ F
disp('第三类边界')
1 H3 O* V: M2 x4 [0 a B; Y R/ i% G2 X+ f& i% d
[min(cc3),max(cc3)] 1 k ^+ y9 z! _0 O
$ Q2 A2 o' w( n$ Odisp('第四类边界')
; _9 ~( c2 ^2 w3 R h8 s; L) Q+ D/ d _7 I7 T$ s- L1 f- z
[min(cc4),max(cc4)] 9 a, b6 A9 D7 |/ v2 u" }
, i. d' h3 X; ]
disp('四类中心')
9 N/ r; B/ @ n
% b; _- z0 ~" b" Q& c2 cc/ l( L- u" t9 m8 K+ |/ D
, Z6 M- _/ r' Z0 Y* ~. Th1=plot(xx,'w');grid on;hold on;
3 e3 w0 J* Z8 b' C
% A) ?, c I0 _$ p/ P9 Cfor i=1:n
! |: e+ g' w1 _" r% `7 ]* I& v0 J" H2 ^% m+ {/ f
if idx(i)==1
' [, S/ l" \# A
: P* L# q5 z$ a$ y text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);1 K- E! H3 ?8 m) d" _
! m) R& o& [9 z7 U5 N5 Y8 W; R
elseif idx(i)==2$ Q3 X2 q+ w3 {) G% X' p3 f* [" c+ h
6 e+ n2 z( W: }( \; K text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);
& u. U) Z( g$ x
. h8 \4 K% L# F- [! J6 D1 f7 d elseif idx(i)==3
& D( {, k0 D3 f% g* E0 s; e
0 m3 T$ q4 |% M9 x: P: P% S$ ] text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);" O B6 @* N% p! v {6 g$ y% O, V/ O
" T4 w; z! r; k
elseif idx(i)==4
# N% K" b7 U8 q; n
/ ~& B( T! P% e+ M1 T) E text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);4 y$ }0 @ A$ m+ h
# [! h5 v' N: I, A! I. A' ^6 N
end1 D5 ~# }; r2 ?2 S
- N' Z, b% v% k
end6 y9 Z, \" h* I8 O3 W% `( Y/ i
+ ^: D! W4 }, t
ylabel('一维样本数据值')% D; X, O6 K3 V. `3 R7 N3 w" H; F
2 c- w3 g |$ p1 v- qxlabel('样本序列')$ p5 g% F1 f! Y6 [; \& @
# ]8 n6 x- A( g
; f Z. S& Z9 O# G! Q* i2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844
5 P Z( Y8 G; f: v' S( Y A& F* M————————————————
; |; K7 j% k6 l版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。6 H" a J1 Y# m: y6 ^/ H
原文链接:https://blog.csdn.net/machi1/article/details/98181621
: D' H. b9 ~* B9 v) O) m2 a0 S# b8 e$ m* r0 n/ S
' n: I5 O) E; S0 J. T+ u6 i4 G
4 g8 ]3 l& k0 e. M1 ~; D! [* A/ `' y. _9 M% A, D
: G; e: [ H7 ]% E( x
8 c! Z+ r9 ~ u; f4 \: \
: a5 A9 ?& T; ^# A; U! U/ \
|