数学建模程序

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:30   850   0

一.数据预处理

1.缺失数据查找

wps实现(最简单的方法)

https://zhidao.baidu.com/question/1690641178558189228.html

matlab实现

B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组红葡萄酒品尝评分','C75:L84');
A = B;
[I,J]= size(A);

for j=1:J
   for i=2:I % the 1st row does not contain NaN
      if isnan(A(i,j))  %通过isnan函数判断该数据是否为NaN类型
       disp(['(',num2str(i),',',num2str(j),')']);   %如果是NaN类型则打印该数据在表格中的位置
      end  
   end
end

python实现(https://blog.csdn.net/alanguoo/article/details/77198503)

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(10, 6))

# Make a few areas have NaN values

df.iloc[1:3, 1] = np.nan

df.iloc[5, 3] = np.nan

df.iloc[7:9, 5] = np.nan

print(df)

print(df.index[np.where(np.isnan(df))[0]])  #打印缺失值的行
print(df.columns[np.where(np.isnan(df))[1]])    #打印缺失值的列

2.异常数据查找

z-score标准化(matlab实现)

B = xlsread('C:\Users\DELL\Desktop\新建文件夹\cumcm2012a\附件1-葡萄酒品尝评分表.xls','第一组白葡萄酒品尝评分','D233:M233');
%将数据z-score标准化
A = zscore(B)
disp(A)
%获取矩阵的行数和列数,m为行数,n为列数
[m,n] = size(A)
for i = 1:n
    %确定一个阈值,用来判断是否是异常数据
    if abs(A(1,i))>2
        disp(['(1,',num2str(i),')'])
    end
end

二.聚类分析

1.一维数据的聚类分析

参考博文:https://www.biaodianfu.com/clustering-on-a-one-dimensional-array.html

matlab实现(参考博文:https://jingyan.baidu.com/article/0202781154d7ba1bcc9ce5f5.html)

clc;

clear;

yw_data=xlsread('C:\Users\DELL\Desktop\第二问得分.xls');      %读入一维数据样本到yw_data矩阵

A = yw_data';

xx=A;

clus=4;

[idx,c]=kmeans(xx,clus);

cc1=[];

cc2=[];

cc3=[];

cc4=[];

[n,m]=size(xx);

for i=1:n

    if idx(i)==1

        cc1=[cc1;xx(i)];

    elseif idx(i)==2

        cc2=[cc2;xx(i)];

    elseif idx(i)==3

        cc3=[cc3;xx(i)];

     elseif idx(i)==4

        cc4=[cc4;xx(i)];

    end

end

disp('第一类边界')

[min(cc1),max(cc1)]

disp('第二类边界')

[min(cc2),max(cc2)]

disp('第三类边界')

[min(cc3),max(cc3)] 

disp('第四类边界')

[min(cc4),max(cc4)] 

disp('四类中心')

c

h1=plot(xx,'w');grid on;hold on; 

for i=1:n

    if idx(i)==1

        text(i,xx(i),num2str(idx(i)),'color',[1 0 0]);

    elseif idx(i)==2

        text(i,xx(i),num2str(idx(i)),'color',[0 1 0]);

    elseif idx(i)==3

        text(i,xx(i),num2str(idx(i)),'color',[0 0 1]);

    elseif idx(i)==4

        text(i,xx(i),num2str(idx(i)),'color',[1 0 1]);

    end

end

ylabel('一维样本数据值')

xlabel('样本序列')

2.二维数据的聚类分析

参考博文:https://blog.csdn.net/zpp1994/article/details/53456306

https://blog.csdn.net/wys7541/article/details/82153844

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP