|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现
9 F$ z( m% Z( N* P/ h9 `B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');
9 j) J% u8 ~$ B8 b/ \, ZA = B;
+ |6 M/ i4 s% a* S4 h8 i[I,J]= size(A);
$ Y& `/ t5 J, l9 A; [$ k' k# Y; J$ N P" B
for j=1:J
* k0 d7 M Z+ r5 v for i=2:I % the 1st row does not contain NaN
+ }' E4 h$ W9 t7 h( U0 v, a if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型
9 B9 |/ a2 X3 Q& [6 B r disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置- o. t; m- [: V1 }% I0 U' J
end
) M( J9 X2 d- W F/ E end
' p, i9 a! W( d( M; j) S" iend
$ m8 k& X% H8 E0 X- `- n& [& t6 X% D! U( s+ Y% y( Q
python实现(https://blog.csdn.net/alanguoo/article/details/77198503)
/ H1 C1 D9 O: Z/ O9 \7 E6 a9 S; E X
import pandas as pd
% h6 ?5 i; p# a0 c
# ?3 F5 \7 ^9 N' }) q% s) ?import numpy as np
; U: T% d, V) G, A3 j1 P2 Y8 X0 c* ~2 P6 M0 ^: |- V# o, c
df = pd.DataFrame(np.random.randn(10, 6))) X; \* a. m2 X5 H: L& C4 M7 Q
+ y' a) F0 d( s- F3 y9 \! W
# Make a few areas have NaN values* @# n' Z3 @% i
' f8 k9 T- `2 W, m2 y5 a. Cdf.iloc[1:3, 1] = np.nan
! @. {, K& r/ s; r* a& ~; N1 I: {6 P
3 ?& \: ~: e# p/ G5 |5 Edf.iloc[5, 3] = np.nan* h0 }$ F2 f( [7 Q- g
1 l; n: X5 o0 Xdf.iloc[7:9, 5] = np.nan
, J5 L: N( I1 ?9 t: y7 t4 d8 Q: D* S$ a! x+ S
print(df)! J% o+ t5 a) y& k- K
, G! T& C( A- Pprint(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行* I, B$ `! M& H h$ r v
print(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列
9 r2 f& ~. \2 ]# k, P6 L
5 p: ~/ w7 f. q# ~2.异常数据查找 z-score标准化(matlab实现) ) ?" `) M; G+ ^+ w: E6 l0 M
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');* s9 E2 m- x% J; Y' `, {: D/ c" t
%将数据z-score标准化, K* _2 l8 ?" D6 }& ?/ f
A = zscore(B) p: |4 k3 C/ j$ R- p- I
disp(A)
$ ]& U y4 M, P8 F# i1 ^%获取矩阵的行数和列数,m为行数,n为列数
5 Y/ @# j6 a0 N8 J: X3 Y* e[m,n] = size(A)
& s( X0 y; {# P9 |for i = 1:n
+ B. k" c% b) m I* c %确定一个阈值,用来判断是否是异常数据
1 n1 M( I) u7 _ if abs(A(1,i))>2' `' v) P4 {/ F- Z2 Q
disp(['(1,',num2str(i),')']). N$ v) c0 A& W3 S( U" R
end4 k5 L2 Q% E1 A1 u6 U
end
1 r# m. n" w$ W5 w; U& F% Q
) C" N: |; i! j+ G$ E" Q二.聚类分析2 a' \0 q' {7 C& \8 u+ J
9 Q7 _2 w8 D/ w1.一维数据的聚类分析
- A$ ?1 O, o, L, g; D7 b2 F# {7 @- q* q+ X* |) V
参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html. |- I! [8 r( j3 w% M0 a
: h6 `) `, M' W8 Z6 f% O( vmatlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)
! g5 Q/ ?8 k: s+ M2 h% B( l# M3 g; F c2 A% X
clc;
% \$ m4 u4 W. h4 f" F, b2 ?
- A7 i) A n ^* E( O$ T& F+ t# wclear;
" i( Y7 i9 y _3 t8 u5 ?6 V$ [) I! n( R( p" t( X/ W# \: f& g
yw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵2 j9 v. G" n* d. ?/ l, o; g
8 q0 C, \. X" ?4 M
A = yw_data';
; R& y* O0 N! l& F5 p3 M+ F/ l2 @8 o0 R! a& L: l
xx=A;
4 _, u6 b% j' `! ^; S3 r7 ?$ c" V' N7 g4 h8 _6 ^
clus=4;
0 V/ S9 {) Y- P9 U
7 j3 @. W) A4 B6 C; y[idx,c]=kmeans(xx,clus);- B+ z* Q0 ]2 x5 M0 ]; Z
/ P6 p5 y! S7 {" `: v6 Ncc1=[];
* m4 l" ]* ~- V# D6 l" C3 M4 G+ M; {3 u
cc2=[];
1 m" V1 O( b/ `: ~% X$ p! Q
* J* v& a# h2 a0 g5 u- c- K: p0 J& Qcc3=[];
8 w" J9 t. c, |" @8 ^. o) z8 g+ C7 P; @1 _8 n
cc4=[];
3 J1 b8 e9 J! {( v9 r( x, J, k% ~" D: G2 d" i
[n,m]=size(xx);
( g: r( y( E5 C7 Z! E0 D, C. P; E4 K0 _6 ^2 j6 L
for i=1:n
2 Y1 E0 ?7 X+ l, I6 x: c6 o& G5 a& y
if idx(i)==1
1 l9 t) |; q+ k& J1 _: ~' j$ l4 _/ ~5 n5 a4 u# R
cc1=[cc1;xx(i)];
% N. }% X/ d, K8 h5 m$ W2 L: V) `- ]7 {/ K, v- `% n
elseif idx(i)==2$ b. D3 n+ \ v7 m0 p: l9 s% o2 ~ X
[) U0 R" j: H, j: J5 f( C cc2=[cc2;xx(i)];
7 m' r" M: W4 X( F0 G" }& t) I1 g E# v! p- S4 B: w+ p
elseif idx(i)==3
# M! \" {# u# f7 w
9 j5 U+ s% L4 U; g, J3 ^. j cc3=[cc3;xx(i)];8 I5 C% \3 k0 A; ^0 N, k
3 A: H x! t) P* h& g5 r( ~ elseif idx(i)==41 A: n) G! E2 Y2 ~
( T1 j! f, G Q+ @8 K
cc4=[cc4;xx(i)]; C3 E+ G2 U' C! O# J9 c6 f( s) }" h
; j/ R5 s5 o N. m* I2 U end
$ Q9 U" ?+ J9 |9 B% w) A. p/ K# c4 B1 {, R+ [% N- x
end
3 @. g# O' ^2 }) k/ A3 s4 Y% ]" \, E. ?
disp('第一类边界')
( V1 L$ D/ H0 q+ H: u# d( v: t ]: h0 W2 g
[min(cc1),max(cc1)]0 Y2 h! o3 c6 l8 i! I4 |
/ L4 l! N5 C6 {, ]# }disp('第二类边界'). P% J9 w1 S5 ~8 U2 @
! [$ j% U. f, U/ z. ~ H
[min(cc2),max(cc2)]- O \# \* b+ z3 H
* N/ r; W/ @) o- B; ]( F2 `disp('第三类边界')
& s" t9 ?: U: r N
# e0 h- O' }6 ~ \' w[min(cc3),max(cc3)]
/ o6 N' Z1 L2 V3 h2 F3 j
% Q, Y$ J9 h5 s( i7 z' e) Q. Pdisp('第四类边界')$ d) {) C0 `) G9 T0 {8 P
. W/ @7 ^) x" ^: V# S# v
[min(cc4),max(cc4)]
. x _; T8 u. r# d& E
0 |$ A, E& k; udisp('四类中心')' W) o) X0 Q" m
V3 m1 j* L0 Y& U- tc
# `4 n5 U2 c% R1 k f" v
" T$ z. T" U0 g `) Gh1=plot(xx,'w');grid on;hold on;
( ?1 a/ q; U7 P4 m. D6 g9 k; G. a, e- e
for i=1:n
( K, E$ A$ ?" v( u
% M4 X5 W& `0 o7 Q6 g if idx(i)==1/ F# @! J6 T Z/ K% o* h) ^0 Z6 k/ q
" v6 _' D& _# Y" M% j3 r
text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);
3 y# ~6 `0 c6 [# k3 V6 z& w. h5 d& o: ]- Z7 Z [* H
elseif idx(i)==2/ U7 g% Q% H7 H4 G
3 @7 d0 K( H5 r' S0 ^ text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);; {0 k2 N# V7 I2 s) p" b& |9 {
1 Y" i6 Y: v* w
elseif idx(i)==3* X/ f3 B8 d2 _" t
* `- G1 T" \. U* N+ k2 I5 w7 u& s% m: w1 p
text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);
. d2 B1 Z3 u u1 R- c& R( X
' V5 @5 u9 {; W$ C6 I; p5 ?7 a elseif idx(i)==4; P' E: u+ Y y0 l% b* t' E; W7 W
9 w$ r- }$ b: u$ c% N( m
text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);* S& Y( l2 F) j( d" G
1 f0 F: L1 ~7 Q" T& q+ H1 B end
5 v( ~ l, t r; [# a3 s& L! O& Z- z0 [6 f. n: P+ d- m& t
end
3 g; g" r$ u8 l- ?; S6 d, o6 ?6 ^' D# O
ylabel('一维样本数据值')
- {) W- J. u! h9 x1 W8 F4 [
+ w( j0 s7 |6 Q' v; g5 H8 F* Rxlabel('样本序列')% A% ]- u B5 p# i- w+ Q/ ]4 D
; e8 p5 g+ r7 w8 G
( k; s2 l O( v) r9 V; c& p% G+ d2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844
* b' Y, j2 z$ B3 H8 |————————————————
! G( ~6 L" }# A9 P, F" N版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。, _' ?6 W& C( }% j& W, D. L
原文链接:https://blog.csdn.net/machi1/article/details/98181621
1 X$ r) f: ]# ^. E( b+ l( u, a; q7 L
1 n6 u; {, ?0 Y4 M' e! Z/ N) b' O; w+ E( C# Y: U# t) I; F
) A1 k/ \! A. m" W+ \- i* M- C
8 b9 B! ^$ [" Q) J! f1 z
0 K. Q' J- t/ U5 O1 {) o5 a8 P) p3 u& C( `+ ]2 t1 \
: H2 T' ]+ q! [1 d+ J1 k |