|
一.数据预处理 1.缺失数据查找 wps实现(最简单的方法) https://zhidao.baidu.com/question/1690641178558189228.html matlab实现
. q; D8 `9 A0 ?B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75 84');
" ~) ?2 f% a; W! G2 xA = B;) X2 N1 D4 O, Y6 O
[I,J]= size(A);( M3 N6 M. @) |, D! @
8 H; O' c' _* v7 `
for j=1:J
1 i9 M) k# \4 d G for i=2:I % the 1st row does not contain NaN$ s/ ^: E- R! }$ _, B
if isnan(A(i,j)) %通过isnan函数判断该数据是否为NaN类型
& X/ t8 V- _5 h, F disp(['(',num2str(i),',',num2str(j),')']); %如果是NaN类型则打印该数据在表格中的位置
, ` N6 A/ `) }% s2 D end
7 Y) t* J; |8 `, j* k( T end" x0 F* d5 n% _2 i4 }
end4 ^* Z( F* f! E' X# r% j$ r
R3 N I1 k; J; K, q6 Bpython实现(https://blog.csdn.net/alanguoo/article/details/77198503)
3 k+ e4 k8 g" U# [# r# P: v, o6 i6 p- u4 D- T1 Q. k; Q
import pandas as pd
* C0 c& D3 i0 Z8 S3 e7 [; q& g; K$ z5 ]4 ~4 t0 L' z
import numpy as np% Y' a7 J! _% m6 {* C
) X- @+ h/ N* k8 xdf = pd.DataFrame(np.random.randn(10, 6))
. c/ N7 C3 J" v$ v1 z! F2 i
; M* k1 ]0 Y1 b! I: F" {1 ~# Make a few areas have NaN values. _+ l1 a' d- p8 x% \! e) m
, X. X, R* y8 R/ R7 m0 T( t# X$ Sdf.iloc[1:3, 1] = np.nan
4 i3 ?. a- z) Y, q& [7 O& N& V+ [
% K4 a. U' i( {8 Y" }4 rdf.iloc[5, 3] = np.nan
# O. n) w W. Z y( }# X1 V5 G3 `+ D! _. J1 @2 R
df.iloc[7:9, 5] = np.nan
+ w2 [. ?6 S& X/ J- A' V- f& { S) L+ A5 `) t* Y/ H7 s
print(df)7 z& G$ P ~, D5 P
/ J/ H" @& v3 H) \: i# e
print(df.index[np.where(np.isnan(df))[0]]) #打印缺失值的行
) t; K- _+ G3 e5 H% k7 p3 }* m' qprint(df.columns[np.where(np.isnan(df))[1]]) #打印缺失值的列
7 z: D7 G2 b) S" j! ?, s
7 W+ Q$ P6 g$ f$ [2.异常数据查找 z-score标准化(matlab实现) $ k1 s% p- E. X0 P
B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
- b& C. I9 \! B3 a%将数据z-score标准化+ O) v* a* r: a0 v- d
A = zscore(B): `- l$ a* |9 s; s, X/ r1 Z3 {
disp(A)1 o% J5 R' I1 E8 ~) O
%获取矩阵的行数和列数,m为行数,n为列数
% ] B( T1 m' y[m,n] = size(A)
2 i/ d6 ?: B3 Lfor i = 1:n
3 E2 c+ l, [% U! }1 l { %确定一个阈值,用来判断是否是异常数据2 x `0 f1 J1 ]' X* W7 u- E
if abs(A(1,i))>2' y) f2 M5 Z- Z" z0 @: @
disp(['(1,',num2str(i),')'])2 q/ `0 `. M1 F7 w L3 n. g& ]: v
end
; v' t) A, v9 o! |- F+ ~/ n9 wend+ Z& M3 ^1 ]% o, v) B1 @9 b
0 c, Q! |% m: F) K; W* M; Y, ~
二.聚类分析
' K. u* E; S* X9 ?8 v
) H, H+ Y7 f6 [) w* @6 ]1.一维数据的聚类分析
) C9 z8 M3 l4 c/ w$ W, m0 d$ E
* W5 W2 l" Q; k6 `9 x* a6 ?参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html
8 @2 |0 m$ ~0 g+ M& j4 {# l6 x8 L. ~# Y) U3 x
matlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)
3 Y1 _) u. j3 U% I$ [# g! V% T* Z8 B- {0 M- |, N
clc;
0 n0 a" Q+ Q7 I7 N( q9 G# }
3 P8 L6 }( B8 n, E$ a. ~8 Bclear;0 ^' s3 z) [0 P: k0 c
" e: a1 ~: w3 ? x j: I% Pyw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls'); %读入一维数据样本到yw_data矩阵
! \; }* k) S; s) M5 Q X4 k& L% W) a8 ]4 E, M
A = yw_data';
6 P, E$ d) \+ `4 b. P; Y
6 r" X% \# a9 lxx=A;
( }$ n& P* x: R+ g0 |1 S% F! m* V1 O
8 ]' \" z. m' [clus=4;( V4 r$ @: T$ |
/ e3 ?( N- T. M( d$ A[idx,c]=kmeans(xx,clus);
( h3 T5 _0 H# @3 T7 ^* C" r' W7 c- U0 f! P6 a( q
cc1=[];& y# E- s( w0 {) l5 Z. x; B
& i- j* v% _0 X k' t5 s0 [' h/ tcc2=[];2 K- z- v0 ?# l9 P& U& U5 R
/ f) W! ~0 o' w$ `0 ?5 vcc3=[];2 m( Q) {2 Z+ P+ ]
# _/ I& ], W9 n4 k) Q
cc4=[];% b# a: P4 ^) Y3 _0 r
- E) j% X, ~/ S- W[n,m]=size(xx);6 a/ _- i7 n4 w$ x( D
. H; M! J+ A; H" V8 mfor i=1:n
: j* T$ \9 G2 j; f) b- ^; C+ a) ?( i+ U: f
if idx(i)==14 H% r8 U% R0 U
; t$ @" ^: |) q3 x# F cc1=[cc1;xx(i)];
) i, C* _( E+ j% ?" n7 o* R% p
' S8 |! V$ i. Q j+ | elseif idx(i)==2
$ W. y+ `( b" |: k J- W5 V) q! y$ |7 K+ ^4 x8 ^8 L7 L
cc2=[cc2;xx(i)];! O% Q1 n- O! G3 U$ A# T4 h5 r
1 v2 V" m2 ~. F; V! V elseif idx(i)==3
0 W- i4 D$ }. o u! y
% A8 [* W. n4 `8 e) g* h cc3=[cc3;xx(i)];
; Y" Q u3 b* u" b7 `
/ E0 z+ ^; p# a! {* Z elseif idx(i)==4! R$ w) Q2 n' J" _
5 N* s" H/ d6 U* @
cc4=[cc4;xx(i)];
, i# g* Q+ a/ b* a! k3 F9 M1 q- R4 C6 w+ w2 w- U, r$ q9 A
end
2 W" A- l- N J' t
) M! l1 a) ]3 L* gend" k4 m+ K" y- N+ q( _+ _
+ R; B! D- j% R" k) d1 y3 pdisp('第一类边界')6 r9 x6 R. B, f! Y4 v1 s9 m
X( O( o. ^- k1 R[min(cc1),max(cc1)]: B6 g" l3 \; i I% S
$ H) }6 K# c6 C/ r% f0 j) w5 P/ Fdisp('第二类边界')
2 V& i: Y" V/ W% \8 s; l/ Q3 \8 m- ?/ ~) T1 k9 n
[min(cc2),max(cc2)]8 [: D: P8 i2 J
4 [+ Z- ^! Z9 V( r
disp('第三类边界')5 l5 R5 w, h' Z1 | ^
; r1 j4 ~9 d9 Z3 T[min(cc3),max(cc3)] ; F4 C5 V8 j6 H' p% d) k5 T# p
& `& I2 t q/ Y8 w6 i7 Edisp('第四类边界')) y; z8 p9 y* ~2 l
8 a5 @- F/ O8 X3 O[min(cc4),max(cc4)] 5 a; U2 M9 y7 Z, ~' }& w8 r$ S. D" r# S( s
$ t' }! r; w: zdisp('四类中心')& e$ x% W3 |2 E1 L5 P
$ }, y) e P! K% ac, ~" U8 L1 E" y5 }% V; h+ a" ?
3 {9 ~. P$ R( g/ i* H: vh1=plot(xx,'w');grid on;hold on; ( j: ~/ g& K6 K1 t4 Z' R' W1 W
$ f7 r4 j" }6 X) V' u' g: ^; W! Sfor i=1:n. b' @' c$ N) A
& R4 `& \( T: i8 f8 Q if idx(i)==1( q. B. _9 R. g& ~1 M3 {5 q, @( Q
* b( j, S8 `4 i; Q* g' `/ |3 Z
text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);8 l. h$ q7 N. M* |" B* e D
9 t! I; Q1 O) V6 s: i6 ?8 u2 m% d elseif idx(i)==25 o, U" }( B+ ?) F+ ^* x* L- y4 z
+ [2 i" z2 ]; B
text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);
' X+ m" {; W! ?! N4 F7 O( R" S. t7 @' r
elseif idx(i)==3* H) y3 l9 _) o% c2 W9 X
) i7 M T$ }/ x, e$ g# _ text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);4 I- z( U% s: j9 Z- \
6 G1 j0 z6 w9 U9 o; W. C# T% N
elseif idx(i)==4
$ B& T, s" d0 U+ ~ `/ Y* C2 c0 w! D3 a5 _& @2 M! D
text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);: ^7 g: `: H5 \9 U1 c
8 Q d2 _# g' c: c( @/ j end
, u' ~& a) }1 l* l3 r1 i7 \( P& {3 F$ l" A! k
end
2 \0 M1 O% M% H. w! z# Z
! h! r! v0 z# ~" i; xylabel('一维样本数据值')5 y4 T8 j: p# _, k/ u5 y+ ]( k- G
) _( W% Q+ k( G/ T
xlabel('样本序列')
* H4 b0 Q4 _0 J9 X, [6 E/ T# C4 c: `
X6 P- m7 W3 S
2.二维数据的聚类分析 参考博文:https://blog.csdn.net/zpp1994/article/details/53456306 https://blog.csdn.net/wys7541/article/details/82153844 7 M0 s/ j1 |% G- y, m. t& Z+ n
————————————————2 p M( Y' s! M( E( A3 Y
版权声明:本文为CSDN博主「马马也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。& }( \8 w1 @& r9 W
原文链接:https://blog.csdn.net/machi1/article/details/98181621
5 O/ N( U6 ~% m+ ]5 D, E$ I8 F! a/ E+ p& [3 g: o
* S a; ?) m) {& F; R" ]
; V9 I/ z K7 O/ b5 F' G$ r2 H+ @, j8 [# B
: e3 Y) e1 o0 S1 P
6 u' U6 L1 J6 U! a+ [" u q* v. F
4 g6 r% q+ e* O4 T |