|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现 4 D4 K7 P, ~& K4 T5 X" _
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');
8 X. y. D: H; Z+ }; ?; d/ h7 m8 K' [A = B;
- w; h0 f: x3 J4 N7 h[I,J]= size(A);
5 \4 P# v6 n' O- D% \& ~
! u7 ]9 L5 I; q! p8 _0 `; V/ P' afor j=1:J
3 I9 y q7 }) O( ~, I3 S8 ? for i=2:I % the 1st row does not contain NaN8 n9 m3 `5 J' ?; g: {3 T5 q
if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型: a: R5 r. R; T4 A4 {
disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置8 ^8 [. O0 j0 a* v0 a4 \& p
end
" l* l6 Z) |) l7 h end ~; b5 C0 |, b. A
end
' ~! R: h7 Z+ m/ B( c# p9 q6 ?. C" M0 Z0 _; T! I. Z8 O' e. U
python实现(https://blog.csdn.net/alanguoo/article/details/77198503), ~- c9 \; }5 ~
% L1 |1 s. ~2 w
import pandas as pd$ W3 i. q, o6 u: h- V; l t
) G+ u z$ t3 {2 {8 himport numpy as np ~ V4 k( K, c" A
7 t$ [. A5 [! \. F
df = pd.DataFrame(np.random.randn(10, 6))
/ o5 y2 Z$ w+ a9 }& |0 S
& t* K7 o0 m7 F" [" h# Make a few areas have NaN values, W9 E% {! C( a9 y
% P! m) p. X" P. O5 p0 vdf.iloc[1:3, 1] = np.nan. z- P& `- k" M& L& n' P
. z# \/ s! J+ j* e0 |# H0 U9 o c
df.iloc[5, 3] = np.nan8 a. D3 b9 G$ J& F! Q
' b- m) ]0 c3 B/ J' j- m8 B- Bdf.iloc[7:9, 5] = np.nan y7 o: F( _$ |: \) F; O
: f# x p M: F$ q* Z2 V
print(df)
; w$ D+ i( g# N$ Y" r! p
) P0 B0 w. y" n& {print(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行8 A% B% F/ E1 q/ l8 h
print(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列# {1 u. ?, F6 x3 d' G+ D+ p( j
4 W% z5 e1 f. t- ~
2.异常数据查找 z-score标准化(matlab实现)
) {0 k/ u* S% qB = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
) w& m7 D3 l( l7 x3 z# I7 r%将数据z-score标准化2 c3 A9 W- ^$ m- q6 _6 c
A = zscore(B)
3 x& w2 E9 E/ h5 _2 Fdisp(A): S/ H. }* v/ X
%获取矩阵的行数和列数,m为行数,n为列数. D! Z I/ X5 T
[m,n] = size(A)& q5 y2 \2 a! M( T' c0 q2 d! h: O; |
for i = 1:n& T: k2 S" e* q- j; q- g
%确定一个阈值,用来判断是否是异常数据" z4 p0 `6 v3 a% k( K
if abs(A(1,i))>2
% ~/ n _& p/ l* f9 ~! l9 p; I disp(['(1,',num2str(i),')'])
: n- T7 S2 l6 l2 E, G0 P) { end k; b$ l# S9 }& M) U
end
# ] P0 k- t' _% c6 j8 j- `- {4 U+ W/ T1 l" g& ?. d p8 w
二.聚类分析
8 g% f5 D5 ?0 [& n5 l0 A* Z& J W4 T
1.一维数据的聚类分析
~- A8 M4 {& W: ?8 r
3 ^3 d- ~7 t: I4 [3 X参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html# o8 |/ L8 |0 S- s# h; ^) n( \
- [" Y$ r# ~' B8 L
matlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)
$ e- u- l& Y, C6 T2 a' J% L
9 ]' Z/ @6 C0 Kclc;
; \/ I' E( V, W1 |1 q) e# [
, g3 l) _( w# |( L' X& K7 H4 E4 Cclear;
* v9 N0 u* p1 l. A0 m
7 N! m# v: H, p1 ]& t# G4 Syw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵
0 }/ S1 s& ^8 o- R, e. v8 R
% V9 N0 Z% i' W: |: FA = yw_data';; t8 k' |) h n$ k
0 Q H% f; ?8 o. F. }
xx=A;
* |1 i* y ^8 G% g( U- k) Z8 @! M& S9 j" n+ y5 ]# B2 L+ g+ I
clus=4;" q p1 t# z# |. D" e; f3 q
0 M/ H$ Q( `. P- C
[idx,c]=kmeans(xx,clus);
" E7 i* K; X w! j( y* x& i3 ]: E* R
cc1=[];; ]! m- m7 |" n# _( X6 N- Y# ^; N
1 q: y2 d1 y! o, f( s
cc2=[];
) d4 p# H3 |3 S, ?% H* ~6 e9 R
8 s' X% [, @, V5 mcc3=[];
+ |. z/ O- }3 _ J/ m2 S, i) d0 m( o$ W+ E- I: z( K0 m
cc4=[];
% A& E( i3 `7 J+ h% O( ^) z* B; ~
[n,m]=size(xx);1 n! e: J! J) B- h
4 G, k# I" V$ G( j' f# afor i=1:n; z, P v0 Q. i7 U
+ Q6 [2 T6 M" [; R* M$ x1 t5 `9 I: l# w
if idx(i)==1
, [) }" O, [0 y" k9 g2 [0 T8 K. N& h* z
cc1=[cc1;xx(i)];1 ?% B' W: q5 d. r8 j8 W3 \
, C9 Q8 S" D* @
elseif idx(i)==28 c, ~/ ?' |: X4 M# S( X' P% J
0 \" {! f& f, [/ \& D: t& X7 p
cc2=[cc2;xx(i)];1 I! q0 v& E' h% M, q/ F
4 D' b+ M8 z; ^* p. z1 A+ j2 Q1 }- e elseif idx(i)==3
, v$ L2 f6 `- J+ o5 U r( L+ B, \5 z( [% O
cc3=[cc3;xx(i)];# b; _# N' {, Z+ g& J0 J
. n5 q1 I) E: v3 a6 S# k6 E* E- ]
elseif idx(i)==4! ~: F+ C7 n m5 t" M) _; a
* X" W/ a7 x8 f* z+ c
cc4=[cc4;xx(i)];
, G- O/ f2 l; P9 _6 _- U3 `$ x6 H
# D t2 I7 O, r2 H end
, ^6 q; _% P2 I$ t5 N) a, D& L i7 I& n# I% v6 X
end
$ P8 |+ Y5 y! S( M7 {0 a0 l) w$ S
- h5 }/ n* }: |# U" k O/ n: T4 U7 fdisp('第一类边界')
& h) t6 m+ A; J& Y) r% a1 S6 v* l8 y) n2 Q% c
[min(cc1),max(cc1)]
: H5 Q; n% Y' M9 Z; ^; O W' {8 H; i+ G8 @' j1 C% s; F
disp('第二类边界')
0 `1 I) v, T+ K, r1 V# _/ T9 q( n7 C1 E6 b0 d1 ]' f n* D
[min(cc2),max(cc2)]$ i& w; V: T# q* b# q& R
, J2 i, Z& q. ]$ h+ q; _' Sdisp('第三类边界')
\, U% f2 |7 \7 ]: S0 T# J% J" ?
2 m% {& v) d/ Q, f0 p[min(cc3),max(cc3)]
1 p& g6 ]7 V, n/ N
0 k8 s& a: |1 [+ k- r3 J4 Wdisp('第四类边界')% r" |+ d3 |7 b0 {0 S" J( C
3 S8 _" R" Q1 W) f5 u/ G% ]( ~
[min(cc4),max(cc4)] & N# g7 P+ L0 r5 P) r
. u6 \9 {* _4 x% s
disp('四类中心')
2 H0 |# q! U4 a( h: H+ ?% E4 C' B4 @8 D$ V- x
c! o* }9 l, S" l3 [) V# S: I9 K7 s& n
6 ?, X$ M+ t* K9 r2 _) w2 dh1=plot(xx,'w');grid on;hold on; 4 Q1 a% \& S n/ M
& X' I* H- R- Z* T/ Ufor i=1:n
0 \' @* V$ h" P# N2 T8 x. K. i+ X2 J5 B: G6 b
if idx(i)==1& K% y! c& I: d5 q
v, d4 _: E* m( q( ] text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);% y) @% }% G* d3 b! o- L$ g
0 L+ t) T3 |7 I& Z: ^8 |
elseif idx(i)==2
/ D. c) G9 l4 x4 h2 U4 U( _
+ o3 s. h, N* |. G0 `; z) F* R text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);. |+ I+ b u) {! X8 q
% F/ B. C3 {5 B. H' @
elseif idx(i)==3" g- T2 p9 K$ W+ b$ W( d, r5 m
2 T& ~) r+ p W j8 [* K& N+ N+ n/ g; L
text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);& j, U* H9 d: R8 t5 j
' i) C4 w* `$ s6 m4 I. C# @ elseif idx(i)==4
+ o, k! t% |/ J! O& {5 L9 ?; W0 n9 {% I V4 p
text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);
1 ~! V5 c0 X) N; C7 {' p; R+ F# y- Q
end5 f d/ \2 H' ~9 a" p
8 c- m8 D$ {. [" E7 w0 ^end
' d! T# u- H q! V! t G7 Q4 X; A6 {/ ?! j. q
ylabel('一维样本数据值')
8 Y7 f0 F4 r; t5 g+ y; [: U, P" R; ?1 }
xlabel('样本序列')% r( v ?; B4 S2 e! x' ?
* k( A H; E5 q! ^5 I# | z7 g$ t- ?; N* v5 H- s0 d% W0 S
2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844 ; I$ r! G3 n. q( H& M8 M
————————————————4 d1 G3 T2 I S5 t) p0 C; [. G1 W
版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 s# X" y" r/ `
原文链接:https://blog.csdn.net/machi1/article/details/981816219 X; W/ }0 @% `, f+ G3 n
- L8 S8 Q8 o9 M: r: T* W) f% `' p) Y5 b1 B% G
+ c( t/ z8 O8 H/ h; K/ }! K- T0 C, g$ S& J/ G( [& X
! A6 U6 e3 e' ^- g" s) w, X
# a) |2 m2 s2 l6 A6 P( Q
9 x( I6 O& s2 ]" Q b/ J" y K |