|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现 1 Q( [) I3 E. E! T9 F- ?
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');1 y! v& f9 D/ B0 E" }" y) J* ~1 Q4 z( I
A = B;
' N! L; ~) J& y[I,J]= size(A);$ @7 G, n# ]0 r7 u' ^5 m
9 ?) ?" J8 l3 I* Y# t5 Z
for j=1:J) S0 r' D4 @3 p: Q$ R$ @1 N' w0 A
for i=2:I % the 1st row does not contain NaN5 Q" n) _, M: e+ g
if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型# a( S" ^! `$ G- A F
disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置
& n8 D+ o6 e7 Y* S" C end ( M! d$ u9 i8 b
end
9 ?( o! } P8 B! T9 m( Dend: e* f, I$ x$ `8 J l
1 Q1 z4 g" h& T# bpython实现(https://blog.csdn.net/alanguoo/article/details/77198503)
8 D! u# q5 L$ L3 y5 T7 b& b2 e
# O7 p+ u7 }5 O/ simport pandas as pd
- n$ H; F0 J4 u4 f7 M0 M( d" r, Y
4 N7 o/ }3 A7 }1 a: E$ @import numpy as np
# ]0 s: F; ^0 C# x; v l) L( `6 E2 q. g2 v
df = pd.DataFrame(np.random.randn(10, 6)): u5 _: S( U4 E- p9 h; ]
$ g; b4 ^; E, `+ M" f
# Make a few areas have NaN values
0 F" \! R: _$ v4 w( B& V9 Y! C1 R" i. l z4 ^& {! \
df.iloc[1:3, 1] = np.nan! U( d( L9 E! z% ?) Q; H) b9 P
3 x. o2 N% U+ R' D7 cdf.iloc[5, 3] = np.nan3 F2 J$ R1 A- w& R& J; O) e
! N! h1 Z6 n* d6 x5 \
df.iloc[7:9, 5] = np.nan9 {, x1 w/ [: Z, l: R- y
1 u$ x/ i( e- Q2 N1 n) j8 d
print(df)) x( g+ z( r4 x: i- j t" }8 X) s
3 y, i+ O% o% e6 {, xprint(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行* S6 _3 u H" k8 q4 U; I# [) D# N
print(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列
% M9 F2 o# W& O
* X# D! ~/ C+ x4 z7 f' p2.异常数据查找 z-score标准化(matlab实现)
0 C: S, I v9 ]0 s: j7 F* W, aB = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
1 j; T/ C* S# v2 @- Q%将数据z-score标准化
, B8 [ E. e0 _, GA = zscore(B) o/ r! t' a8 `' |7 P0 @
disp(A)
) V- ]2 m0 ^! G/ p%获取矩阵的行数和列数,m为行数,n为列数1 ^( D; B; S) x8 m: s# I
[m,n] = size(A). J5 M" ?' b6 R" p
for i = 1:n& A& \3 _. ~/ I$ v# G* o
%确定一个阈值,用来判断是否是异常数据7 l$ w& m% _8 ^$ Y6 L
if abs(A(1,i))>2
8 r& W0 U% B' c+ w9 ]$ |. m! A" D disp(['(1,',num2str(i),')'])
5 {: f( R! j3 f9 [( _4 y! U end8 E. k* w! B* P. l
end4 i* R3 I) Y8 k( }
/ z: K( f0 t4 |" @0 ?
二.聚类分析3 i$ W$ s' Z1 c c
* A) Z6 E- _0 h8 [4 o: X1.一维数据的聚类分析! m, N" M2 Q [1 b$ h3 y7 c
1 R$ V4 v) r; Q7 O- b1 q参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html3 M0 j9 g2 M7 w% b# o5 n& i9 k$ E+ H
9 P" R. j, q5 j2 Z7 n1 Pmatlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)7 |0 n. }! A. o& }9 @% o6 n
3 h+ R" y3 Y# K
clc;3 E, M( J: j6 Z! D9 Y. ?
) I( d8 I7 Z' p, p5 I
clear;
8 O1 U2 j/ e' Q/ w3 Z' @% ?
) L) L8 O* p- F- Byw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵
. g+ [; K! s* r9 t$ g& C/ Z6 n" D9 g- R9 ^7 G7 R. X
A = yw_data';
) j- K8 [' y1 S7 m6 t2 W1 u; j \4 n/ B' K1 @% X
xx=A;5 s `' k) C) [1 S# W
. Y8 g( x( N& m2 g! E/ t, {8 S7 R% X
clus=4;6 G' L, E0 e" V: P( v3 P9 V3 x9 R
! P. n: N, I+ f/ G, y, {4 P( w& h[idx,c]=kmeans(xx,clus); N9 I0 N+ ^: r* h
4 ^$ n4 P( n: o4 v& F& |* ], w
cc1=[];. Z& z5 K, n/ d+ l3 x Z3 z
% C) z- m) z8 y! l! L
cc2=[];
: _. Y. S* v4 g% | g9 k7 K6 C0 [1 u7 Y
cc3=[];
& F9 w8 B& z# k8 r3 N9 I! j
5 Q- k5 C! S# Ccc4=[];' g8 L& C! R& d
5 n3 X1 O- d# `6 V, S3 E
[n,m]=size(xx);
) S) ~) r7 n. p2 t0 N3 C, P: ~" l+ I- [9 H" Y
for i=1:n
' P' t6 |) k, S- v& i' |8 [# O& }+ A1 @! `' M6 e/ F8 y
if idx(i)==1
1 F$ R1 a/ e' B/ f0 k
: p+ f# a) j- [8 s5 e( B8 Q0 t cc1=[cc1;xx(i)];' n3 y7 ~( E' J' b. [- R& y
( g" y& @$ d1 C8 h4 r" X elseif idx(i)==2
" H- R: J7 g$ s {, O" Z" n* L) T. k, `7 j
cc2=[cc2;xx(i)];
; M5 i) J4 j: A5 L
j% E B; e& k! ] y elseif idx(i)==3
9 |- |9 C! K7 ^4 D( v7 `% B3 W
- \1 x$ w4 u) z( A, }! h; a cc3=[cc3;xx(i)];
2 Q4 S8 I9 g9 T P3 q' g' F7 {+ }7 r* W# i8 D' T! x
elseif idx(i)==4
4 S, J0 W6 U; s" ~$ C) M6 ^+ t3 C7 Q7 V; R: t0 A! F; ~' ~8 f
cc4=[cc4;xx(i)];
5 D# D* w! C- P2 `9 W0 h5 \' L7 X" `2 H! `/ m2 Q. r
end1 C7 J! n j. p# Y0 {
* p9 H6 s5 x ~. e8 ^end
5 A4 e W: u# y# e: ^0 j/ h6 A& P8 @& h/ J
disp('第一类边界')% @% |0 S3 L# A4 k4 M+ K. e5 F
' d3 r5 @4 }* d4 ~' V) l) V& ]! x
[min(cc1),max(cc1)]3 S& D& I y( ~' X
2 {1 n$ V; O% D" vdisp('第二类边界')! o, O3 ], i& l7 H
7 \) n0 q' c" m$ K
[min(cc2),max(cc2)]
# L0 ^ z' X" g. m' `5 V
- h# M1 X( d, a7 ~disp('第三类边界')
9 _& s: X8 i' W
' }) m) j. L" \) u# A: ][min(cc3),max(cc3)]
& j5 g) P9 F5 H: K7 B" z& M
/ e4 [. V6 ~# q( ^( m8 Tdisp('第四类边界')+ [0 V& b; w& @6 [7 I+ N
0 { x* W) v3 G[min(cc4),max(cc4)] 3 Z+ D! i/ @8 B8 e
; @4 o" p8 ` f. H2 B7 `( d* Jdisp('四类中心')
9 g+ z9 f, Z5 z, {
2 X! n# j' M& A# \c* } f) L2 B* Y% c" ^6 m$ Q
+ E8 |% O+ m' A, u2 U
h1=plot(xx,'w');grid on;hold on;
2 z2 E6 C, b& ?, `, m; q9 ^/ K0 z( R
for i=1:n
8 }! K' Y4 [+ `, H0 g' D+ v' l6 S5 E0 ]1 G3 E) o" t- E
if idx(i)==1
3 B- f7 I: n3 t- q# S1 F q# }
1 p/ x- M/ ]: [4 u( i1 F text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);
7 A& E _( t5 S4 i# K/ t9 A( `- s( r [7 h; e6 w
elseif idx(i)==26 t* X$ e; s0 W/ {1 X
* g- F; r! t6 Y. e7 B$ ]$ y text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);
6 X1 P3 M0 M$ N6 W# X" Q
, \; o6 B' ?7 I! ^: J3 k! @ elseif idx(i)==3; E+ J# z( X# ?
' I: ]5 G9 E% K$ p+ b+ V text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);% Q: {1 p. p6 f$ W
" m$ q8 g( b4 R& L elseif idx(i)==4
( r# h9 ^0 p. m9 M: G/ W
: B0 b3 J: D" x5 ?: a5 c text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);
' K# `3 ]1 [5 l6 I" Z( v0 P# @' k4 S* \( }* N- a& ?- v5 j3 I
end
$ l9 P; {' ]2 Q8 S& r" p; m& a6 [% F/ G
end
% z/ {! S% W5 J4 D. q2 X2 Y; e; c7 m& t3 l
ylabel('一维样本数据值')
, q( L& y" k a/ {7 g4 l& X- s$ \2 U% o
xlabel('样本序列')# a+ x( N0 d( o: [( s
7 ?2 Y& p/ P: l" X$ u( V `' V) Y8 P. e! r- s- I
2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844 % T, g, W% L6 c3 z2 K
————————————————
7 T, m: D; S" F. l3 R/ ?版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
/ y. ]# d% p, \/ B, @原文链接:https://blog.csdn.net/machi1/article/details/981816215 |& s% v1 C( F
6 _& x* @) h; V7 c9 ?8 B
2 d& W' |5 j6 f; Y* D" J
; B6 d8 V, \' y
- Q+ G5 H% C* Y
5 B. d% z' X8 G3 {. c5 E+ s, r+ b% H% {1 @, o1 E- Y
' u" P/ p: W" R6 u" T& A: S
|