|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现 1 ^" r' r) W$ _" C8 d1 K8 Y
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');* A+ m5 h; u2 A& p+ v# ^
A = B;' Q1 w1 s" ?' O$ B$ r
[I,J]= size(A);
0 ~3 i# Y4 E, a* c5 P% F& K% F, s6 ~) y
for j=1:J2 D: \) W$ M# D3 W+ G0 Z8 ~( F x
for i=2:I % the 1st row does not contain NaN
( ]- V/ K" d3 [: G9 L2 K& t3 v if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型3 [1 F' }& {* K2 b/ Z# t
disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置2 f5 {. A/ a u$ X
end
' O x K3 i8 j& a6 h end
& i8 \- E0 J: Send
: _& e% D9 d4 S; U$ J' n/ F6 ?# C5 V4 `; m4 n# R z: \
python实现(https://blog.csdn.net/alanguoo/article/details/77198503)5 M# p8 W7 R# m$ N, r7 D
9 }! c6 d) u# @9 n3 y0 Y/ z5 }
import pandas as pd
1 J+ b/ t: M6 |# N; B9 Q$ k
2 z. l! _0 e9 }: F1 dimport numpy as np
; K) C2 x, [3 \' I \ S. e" P& a9 N5 I: w% n6 p, T' Q' e
df = pd.DataFrame(np.random.randn(10, 6))4 Q% q5 b$ Y4 q4 r: _) D
5 w3 Z1 C \" ?- }. V
# Make a few areas have NaN values
( l/ Q# H1 {8 _
+ P1 e7 b+ l) Q; s6 {, p6 pdf.iloc[1:3, 1] = np.nan3 ?# R3 U( o2 D" j- n% n/ n& j
$ ^/ ?" P. i. F9 n* \
df.iloc[5, 3] = np.nan
0 T5 x) [& ]/ d& |. _) }/ y: u: ]3 V) Y! C. Q
df.iloc[7:9, 5] = np.nan
- h, B" n9 o4 v0 a
2 s3 t6 ~4 w- v% _% Dprint(df)( O/ ~& r E5 P0 M/ S0 t" W% }
4 a3 p8 t, {3 J
print(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行
- a! ^+ r7 Y: O; Xprint(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列
' i4 [7 g F. s- H& p1 i
& R+ Z' ~+ B3 F1 ~ [& x6 z$ m% w2.异常数据查找 z-score标准化(matlab实现) 5 n. ?$ l, R' G& D
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
+ }! Z6 q4 I, C0 q/ e%将数据z-score标准化
" R' a* V/ s1 f/ ~0 p8 LA = zscore(B)2 f W. a2 ]% U/ t5 i. g3 N8 o' }5 l
disp(A)% u/ a: k) K) d6 s+ F* f4 H+ i! b6 ?
%获取矩阵的行数和列数,m为行数,n为列数" _$ V2 b9 Q6 I9 x1 _
[m,n] = size(A)
2 G/ j: T% _9 U+ u, _: J* `# Ifor i = 1:n
& X) l k6 T+ F$ R3 f, B %确定一个阈值,用来判断是否是异常数据
m5 Z, x) ~0 k0 f% r if abs(A(1,i))>21 d0 H f9 b. D) e' n$ G' m
disp(['(1,',num2str(i),')'])
8 g& I6 e ]: s end& K9 P* i( f1 z0 Y8 }( }4 ?, U
end' h& |/ h: o) v: L9 |
$ M5 G9 }9 S! l
二.聚类分析
$ Q' ^6 i K6 _& T
& K' {0 E4 Q# b! O$ H% M1.一维数据的聚类分析$ Z" O& ~ x" r% i& t5 @* a
5 h( r, Q% y( T5 J$ T
参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html
& _% q0 @% g! Z: m6 A ^4 d
: _( Y. `. S8 B9 ]8 Imatlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)
1 v( c! s/ J# U
0 z; i- |/ |! Yclc;
# j) A, r6 k( ]0 ?( n
+ C" ?* S1 t" `5 Bclear;; E1 _5 ` ?$ ?7 Z$ N0 l/ E; z e3 R
, K# g8 k/ `7 l8 S% X- E/ u7 E Kyw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵
8 B# M( R0 Z* [- c
7 e5 C$ k; V/ q) |A = yw_data';
" |/ p( g4 \7 A: G% |
4 T! ^. S1 K( {# L6 s5 _: O! Jxx=A;
- k& E! P" m: L% ]$ X6 m0 ?- w( d: ~8 A3 l
clus=4;
. b* h; k3 a: K6 c; R# K0 o& Y/ w+ O9 H& V( b5 k
[idx,c]=kmeans(xx,clus);
5 `7 p3 ]2 v* V* W
0 u- \' P m1 o" K9 K% @( }cc1=[];2 {6 F& q+ N8 n+ V$ s
; z/ B8 K: h+ X0 l
cc2=[];0 H5 G7 R* r3 f( U- M; f. l3 s
. h" r" p- \) O& G t% O0 acc3=[];
- Y' j4 L( y/ u# X; n. F' e: P/ h9 w$ ]3 g0 _& `, F
cc4=[];9 e9 O M! p2 I$ A3 U8 ]" p6 w |
+ m2 M: Y+ q, ?" t! Z$ X/ r
[n,m]=size(xx);
* V1 e/ X H/ e/ W2 q6 d' p8 p2 G1 b2 D/ K: C" W: m* c b7 o% w: c
for i=1:n
& t7 \* h2 Y+ K H1 s) D5 [' X3 W O; P& L
if idx(i)==1
- E5 v; b8 h+ t% u) |3 ^6 l: g* d$ K: `* P9 C0 }
cc1=[cc1;xx(i)];+ p5 b) M! I: { [) b" H4 E" I
( @6 B8 @ G8 o0 J4 J elseif idx(i)==28 Z- m# v. {7 L% `" |
+ D: }1 G# Q/ o$ E- o
cc2=[cc2;xx(i)];: H1 H7 {+ z' x0 g
3 K p' I* C$ k9 R- m elseif idx(i)==3
6 @8 Y. _7 H1 j1 D8 z& q
$ M* u, _" K( z cc3=[cc3;xx(i)];
9 }8 ?7 e1 }, p- c8 {% j9 P) R' ?3 K$ D( u6 t
elseif idx(i)==4
# j) T, J0 \# v+ Q: p9 \$ E! h8 t6 M! P1 o2 B
cc4=[cc4;xx(i)];
6 r% g* f- ?& o2 v4 P- G+ V1 k- p# A, I W% D9 V/ w& k% R( B% y
end
0 E0 V1 E1 O. j
3 g: E! B) q. j# \! U) J iend# ?8 K+ a y/ ~; O& A
0 N# V8 d* N6 R) Sdisp('第一类边界'), @' N2 o) i/ G4 m; O
1 m% q/ q* X# z[min(cc1),max(cc1)]# X, v, @; Z9 z. b3 ^ Z3 T
; b+ f- u' j, \: [! W7 }
disp('第二类边界')4 X/ e) u& x3 U) X- X/ Y) |, w) B
* S' r( d( Y& g2 k0 x' I
[min(cc2),max(cc2)]
. p7 o$ \5 b2 A% \
$ J9 L1 J4 j4 K+ F; s" ?2 l" b7 Fdisp('第三类边界')
) V, q- K7 O% `1 S- w5 b3 `. r- Z. b8 h) |" Y, }# x, E+ C
[min(cc3),max(cc3)]
9 C) B7 `' N m& u$ I
0 A& c' M3 j* y. wdisp('第四类边界')
& g' ~+ I2 x9 y8 L0 w- t" w' p4 g) \1 s5 ~" c& N9 C
[min(cc4),max(cc4)] 0 S R, \; f- P
$ o7 V! W' J$ K3 m* y
disp('四类中心')
) b$ t Y" G: [
4 {; E2 o) I& Yc
: A, n( P* m; j9 F& C
5 o+ R* X; Y' D( z4 q. N' ah1=plot(xx,'w');grid on;hold on;
. @6 ` Z. M7 v8 L/ s) v: H, d. s7 T" v1 [# _* p
for i=1:n9 Q6 H8 ]$ d% o
4 `! K# P' ^: v( R* _( d: {' ` if idx(i)==1
- I% b4 w: q8 }9 c
{8 R( l1 s! E3 u text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);
( U9 b8 C+ f/ S9 s3 U, E& L9 u9 _6 |+ G6 C
elseif idx(i)==2
R+ g0 ?: |4 ]+ H7 r/ A5 `% Y# ?9 s4 ^0 k9 w% |5 D
text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);% f+ Z M9 Y( N9 i% I
3 K- }3 l, H: T3 q' ~: J- k* }# Z elseif idx(i)==3$ v* ^5 l5 j. [; n3 Y u! J# {# B
7 J$ z3 T" S( {$ u6 ^ text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);
: c' C# M$ T" q/ G6 P
7 J) l, H6 K/ y1 s, E# y* r7 p! F elseif idx(i)==4
' \, o4 Z/ x* m7 v( ^1 J
) c! _# {/ |; X9 u& p: E text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);- d) ?! ] F" J4 c6 C" d
! _$ Z F1 j8 t$ s end# h o& L9 k7 ?$ v$ Z
- o3 s% {+ g2 L; K8 D
end9 N; {6 J# l: \3 l2 E K
q- H; [* m1 V: a
ylabel('一维样本数据值'): D4 w' [5 c( _
8 w: X; L6 i4 |" u. t i Qxlabel('样本序列')
8 e6 @, x+ E5 e% o
& |9 ]- t9 H3 g* { A9 P5 W" l; @5 h5 _- t. d- s4 ~
2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844 ; O2 ~5 K% |; x$ g
————————————————, ~5 @4 R" U$ F a$ P2 B
版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
2 A1 o; ^4 u* t原文链接:https://blog.csdn.net/machi1/article/details/981816214 g; k" t# w3 T# B% @/ x
# F$ f% q. X5 m2 L& J; D
: Q! n# t, `5 Z9 O) N: T6 c' u& U% r% m3 {7 V$ q( ?# t9 o
! T3 y1 V) j6 x" z/ q# [1 }9 I [
3 K+ m7 W4 [( Y/ i) V
- @% s4 m: r! y* o( H6 `
|