zoukankan      html  css  js  c++  java
  • matlab数据预处理

    %% 读取年数据 
    function [XXnum,YYnum]=dataRead()    
    [numXX,txtXX,rawXX]=xlsread('XXyear.xlsx');
    [numYY,txtYY,rawYY]=xlsread('YYyear.xlsx');
    [m,n]=size(numXX);
    XXnum=zeros(12,n);   %12为2008到2020年的年数;n为年特征数
    YYnum=zeros(12,1);   
    XXnum(1:11,:)=numXX;
    YYnum=numYY;
    end
    
    %%拉格朗日插值补全法
    function yy=lagrange(x1,y1,xx)
    %本程序为Lagrange1插值,其中x1,y1
    %为插值节点和节点上的函数值,输出为插值点xx的函数值,
    %xx可以是向量。
    syms x
    n=length(x1);
    for i=1:n
        t=x1;
        t(i)=[];
        L(i)=prod((x-t)./(x1(i)-t));    % L向量用来存放插值基函数(基函数逆序排在数组中)
    end
        u=sum(L*y1);
        p=simplify(u) % p是简化后的Lagrange插值函数(字符串)
        yy=subs(p,x,xx);    %p是以x为自变量的函数,并求xx处的函数值;
        yy=eval(yy);
    end
    
    %% 年数据补全(lagrange插值)【2008-2020】
    function XX1_bu=yeardata_pro()   %XX1为预处理后的特征年度数据
    [XXnum,YYnum]=yeardataRead;   %读取数据;
    XX0=bunan(XXnum);         %零值对缺省数值补全;
    XX1=XX0;                  %拉格朗日/均值对零值补全; 
    [m,n]=size(XX1);
    for j=1:n                 %遍历所有特征
        feature=XX1(:,j);
        xnan_index=find(feature==0);   %将feature中的nan位置存放在jnan_index中
        inan=xnan_index;               %某特征的nan的位置存放在inan中;(理解方便); 
        ynan=YYnum(inan);              %存放nan对应的函数值,也就是秦皇岛煤炭价格
    %     feature(inan)=mean(xnotnan);    %均值补全 
        for k=1:size(inan)
            inan1=inan(k);             %nan对应的行位置
            ynan1=YYnum(inan1);        %nan对应的目标值(秦皇岛煤炭价格)
            xnotnan4=XX1(inan1-6:inan1-1,j);
            ynotnan4=YYnum(inan1-6:inan1-1);
            x_bu=lagrange(ynotnan4,xnotnan4,ynan1);
            XX1(inan1,j)=x_bu;       
            feature(inan)=x_bu;
            XX1(:,j)=feature;
        end
            XX1_bu=XX1;
    end
    %% 读取全部特征数据
    function [XXnum,YYnum]=alldataRead()     %读取全部数据(年数据插值处理后)
    [numXX,txtXX,rawXX]=xlsread('XX_pro.xlsx');
    [numYY,txtYY,rawYY]=xlsread('YY.xlsx');
    XXnum=numXX(3:147,:);
    YYnum=numYY
    end
    
    function [zzz]=bunan(zzz)         %缺失值检测并填充为0
    [m,n]=size(zzz); %所有数据
    count=0; % 统计空数值;
    for i=1:m
        for j=1:n
            count=count+isnan(zzz(i,j));
            if isnan(zzz(i,j))==1
            %if (isempty(zz2{i,j})==1|isnan(zz2{i,j}==1))
                zzz(i,j)=0;
            end
        end
    end
    %%将年数据与月数据汇总
    %% 全部特征数据补全(均值补全)
    function XX1=alldata_pro()        %XX1为预处理后的特征年度数据
    [XXnum,YYnum]=alldataRead;   %读取数据;
    XX0=bunan(XXnum);         %零值对缺省数值补全;
    XX1=XX0;                            %拉格朗日/均值对零值补全; 
    [m,n]=size(XX1);
    for j=1:n                              %遍历所有特征
        feature=XX1(:,j);
        countnan=0;
        xnan=[];
        ynan=[];
        xnotnan_index=find(feature);% x是原特征中不为0的值
        xnotnan=feature(xnotnan_index);
    %     ynotnan=YYnum(xnotnan_index);        %存放正常x对应的函数值,也就是秦皇岛煤炭价格
        xnan_index=find(feature==0);   %将feature中的nan位置存放在jnan_index中
        inan=xnan_index;               %某特征的nan的位置存放在inan中;(理解方便); 
        countnan=size(xnan_index,1);   %countnan 存放nan个数;
        ynan=YYnum(inan);              %存放nan对应的函数值,也就是秦皇岛煤炭价格
        feature(inan)=mean(xnotnan);    %均值补全 
        XX1(:,j)=feature;
        XX1_bu=XX1;
    end
  • 相关阅读:
    Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源
    Spring Boot 如何给微信公众号返回消息
    Spring Boot2 系列教程(十九)Spring Boot 整合 JdbcTemplate
    Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
    Spring Boot 开发微信公众号后台
    Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
    Spring Boot2 系列教程(十六)定时任务的两种实现方式
    Spring Boot2 系列教程(十五)定义系统启动任务的两种方式
    Spring Boot2 系列教程(十四)CORS 解决跨域问题
    JavaScript二维数组
  • 原文地址:https://www.cnblogs.com/feynmania/p/12893842.html
Copyright © 2011-2022 走看看