|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现 ) |* c5 C( G8 V" C+ j6 n( z
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');
+ w1 \' `% h l+ G& y4 \: mA = B;
- r7 ]% f( U' G+ J2 R$ H' W[I,J]= size(A);
- N8 u1 B. h- x- [$ Y' P5 d( H8 U: o) E3 x5 S9 G+ ]0 _
for j=1:J2 I6 \% j" b3 q2 X
for i=2:I % the 1st row does not contain NaN
' h4 N% w# ^# _7 c' Q if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型
! j% e$ X w7 ?6 h disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置
! c& W1 `) b4 G( J end
e& d9 u/ q. {' F% y end; w6 P/ B1 m7 F0 I/ M( `1 j2 _4 z% n
end4 T5 z6 n& X5 R8 ^5 s+ w1 w- C9 O+ [
$ g6 d8 }7 D( v& e n8 @python实现(https://blog.csdn.net/alanguoo/article/details/77198503)
5 O( V0 ]! l: e, V5 r) e1 @) [! _* ]- s! \7 | l( j
import pandas as pd
Z; ]9 c2 {9 L- h0 A- }4 e+ k. W- P+ X, O/ ^; m
import numpy as np
0 ^* b7 z6 b6 }* I4 }$ Q9 ?) X. q7 Y0 y9 i9 P' ]( `
df = pd.DataFrame(np.random.randn(10, 6))
/ E: k! x5 b! e' Q0 z& |3 |0 M. L- a) M( c9 d* L0 w1 Z
# Make a few areas have NaN values
1 P; W1 @6 }& t; W$ Z2 A, v( l `! t) t) u
df.iloc[1:3, 1] = np.nan( `2 U, V- S6 F, ]* k
- _ Q$ ^6 a0 s. d5 N% {df.iloc[5, 3] = np.nan f/ s* m( ?! t3 G, u
) L" k1 J; W- q. V% W* ?df.iloc[7:9, 5] = np.nan. \1 \" J1 G: U4 g
+ t1 O- ?' B: E4 t- G6 _print(df)
( _! T% O4 @$ K* l ]" a- { @5 R% q# A( U+ ], {6 o
print(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行
9 }& ]9 f Z5 S; Z" D7 c4 @print(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列
& I2 U# n: J/ V5 k" S/ I7 ^# D- N4 ?" h; t& @
2.异常数据查找 z-score标准化(matlab实现) 9 w. d" L4 |: r1 q% ]& R' }7 R( X
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
) T: U" G& f8 |5 D9 Y# A%将数据z-score标准化4 _/ {$ e2 [& s+ A9 n% F( z, z! k8 B
A = zscore(B)# R$ S( V% x5 O! c! f
disp(A)
0 b( l) l) f0 h, \( ?%获取矩阵的行数和列数,m为行数,n为列数8 T# y, N) s& K' U5 ~
[m,n] = size(A)
p3 I: p( F+ M, E) l' S1 G qfor i = 1:n
7 [5 ~$ F9 u! C# T+ k3 k %确定一个阈值,用来判断是否是异常数据
$ {& W! |8 K/ U if abs(A(1,i))>2& r/ n$ t$ |# z
disp(['(1,',num2str(i),')'])0 f0 m$ } E1 _7 \7 E; B/ L( A
end! R: r+ l" `% }6 ~: W- R5 h
end
5 o" D1 L! E' }2 C+ n
! j0 q* i) z) w! ^二.聚类分析1 z3 p1 D8 s, }6 T# ]
: s$ \8 \' o) O3 R1 h% Q" d' I
1.一维数据的聚类分析
% B; {2 `( P A, }" A+ B; e8 A8 ~4 E: M2 S- e$ H. x8 H
参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html
/ U( `: s5 _5 Q& v: v4 x2 ^ `- o- c" Y" A: g/ f
matlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)
8 |7 W* A+ w4 a- ~4 Y, r
% `; N+ w; j y+ j+ v9 Z- Uclc;
4 V, P" j! q) m6 X9 v- u; j
. u/ V2 f5 x8 o, D! u, s2 sclear;
* }/ w+ W; E- P7 |3 S- h9 K
% b/ }# p" X' A) Y! Kyw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵
- N/ r# _; q& o4 q! L2 r2 ^ S) B$ n
A = yw_data';
) n6 E/ I2 O1 d. F& g; @1 X2 e4 D& Z v. y( ?# b8 p/ W+ M
xx=A;
$ _7 I7 y: F$ F* L7 K9 G/ W* _! G I) B. }
clus=4;5 y; \6 a9 s: V! C8 \4 D) L( j2 M
( c* R7 x4 | A& |( G. Q
[idx,c]=kmeans(xx,clus);% ^& y' f1 K- a; t& F+ U
+ M8 N+ P0 Q; v& `
cc1=[];
' u, S/ z5 z$ r6 i+ f- r% [. n$ j; }9 s: `7 F
cc2=[];, Q/ y0 f4 u- m' t* L; \0 M- g( b
; D. [0 U! z* T% b3 y2 c1 z
cc3=[];
+ _& K' U5 H8 J; x1 P" t! B# S3 e/ g* G9 ^
cc4=[];* r) s2 q x# Y: R( d
2 {$ k* V) u& e- T# |: Z: s[n,m]=size(xx);) P. ^. D% q y7 a; N( K
* {7 p8 j7 z4 D( ~for i=1:n
; ^7 F% a, S" o1 b, V" ?" Z
, y/ M5 F$ O! s0 e0 p3 K9 f if idx(i)==1
9 J7 L" C8 t1 ?+ _9 k! ^
% i, J! m9 \% q cc1=[cc1;xx(i)]; S$ {: C/ a7 k- x4 c
6 l/ y1 _0 R; L: F; v& t
elseif idx(i)==2, e0 c5 w4 k" ]8 Z
5 E& `: ^! l) Y; ] cc2=[cc2;xx(i)];
/ P) q$ O$ T X$ `; u6 q; W. H. @0 `- Q8 N
elseif idx(i)==3
9 L' R) o9 q" M. ~+ T' S9 @) k: k6 R3 \9 W. m) R9 _
cc3=[cc3;xx(i)];- s" |# p4 \9 a
( |, z2 k/ C) `( ?# w
elseif idx(i)==4
2 \0 A: \2 V: K/ {9 q3 Y0 P
8 u+ s, I* s2 G" @' y* ^/ s0 r6 E cc4=[cc4;xx(i)];
. B) o0 j" |' I, P; i
% a2 ~8 W) K( v! V. v7 Q end8 D4 T( t: G0 o: }. Z/ s
+ d5 D4 ^: G* h
end* U- g2 {. k2 Z
& n8 M0 G' @, M; `disp('第一类边界')
' k7 l! ]4 v# }# v6 b' G# J2 E( f# U# L0 o% I- w# Q
[min(cc1),max(cc1)]
; J/ r3 H/ L, p9 q9 O) r# T) |/ u" U! b! z y9 v d
disp('第二类边界'), s0 b3 S( G* p+ n; s) n" @
! T" Z( i* W; ?! N% M) U[min(cc2),max(cc2)]5 e# }3 N v5 |
3 r+ o3 o+ n4 p! \* R6 L/ Zdisp('第三类边界')1 x# b0 [7 U1 }. n$ z% X/ ]. P s
) Q( d% Z+ V1 v h* R; `
[min(cc3),max(cc3)] 3 c/ e, f. f9 t; z3 F* K
' ^. a6 W8 W" T3 ?5 n4 }+ T& l
disp('第四类边界'): G! i' B) I- t. k! l
7 w. o; |+ B) n; P% m
[min(cc4),max(cc4)] 4 S4 d# c) i* c- D) v$ e
4 S7 M: M8 n( M" U; a9 z
disp('四类中心')
: }) z( y) G3 l
! M$ |# z& @7 ]+ q+ kc( y- \, Y7 ?$ {# [
( @5 O4 Z# s8 t
h1=plot(xx,'w');grid on;hold on; # C7 |0 a/ n# Z' U! ]7 F
+ z0 r6 K/ B( G+ t# s
for i=1:n
m2 P. \# ^. q1 A9 ?3 y+ C9 X4 x
% ~" d' ]# d: m if idx(i)==1+ \2 {/ j5 n9 C) O2 @( |2 U
2 F E9 u. u& b r* m Q text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);& Y. P, M' \' A
7 c4 Z7 j2 e( e! P( `5 l
elseif idx(i)==2
' F3 {! C3 G8 L* u
" [; Z$ J0 O1 w text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);
' s) q" Z0 P$ M5 b3 h6 I8 m# G8 {7 w. U
5 D1 C# h2 v" P+ u# k elseif idx(i)==3
$ c/ ~6 d/ v) F: D0 `9 ^& O
! U7 `. Q* E1 ^9 \4 A+ t text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);
3 r9 K! b( D6 n, m) z% v: }0 q+ r# ?% r4 r5 k
elseif idx(i)==4
6 \; X' ~1 P+ {: E: }
$ n" T. A+ X- D6 O, [" r text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);2 c- p( i* S& m, _# f9 w; Q
- e: O8 T2 b) n G end( D+ W+ @$ C! I7 r2 j
* L1 o1 @+ o# h1 ^
end* g: o* o+ v; O7 D) P {
1 W- [- G6 o, N' L: j# Gylabel('一维样本数据值')
, P$ Z4 {% ?6 @4 N
/ i/ D1 c0 z ~9 }xlabel('样本序列')$ c6 _: d; j9 G6 I
9 P) ]2 _4 }9 l6 A% d4 g
5 B" {) u. Q. f9 W4 M O, d2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844 # n4 ~; o, ^% g7 y5 I0 C
————————————————2 `# ?/ K% m( W2 o
版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
. w7 _9 D$ _. r% d原文链接:https://blog.csdn.net/machi1/article/details/98181621
* c8 X7 K7 U F: E
: n' x: M5 _9 r" X- |
* y* ?8 G7 }" V' c) B9 Y! v$ a6 D1 c3 ?. m
9 N2 O K5 s5 U) z( R, O1 {1 x/ h0 D# L
# d9 {7 f9 x3 C$ n" V- e. k8 i6 l: S2 Y' {
|