常用的matlab操作

检验矩阵某一列是否有正态分布的规律

qw= unique(data2(:,5),'stable'); % 去重
a=1
b=1
for i=1:length(qw)
    ps(i)=length(data2(data2(:,5)==qw(i),5));       %频数矩阵
    if mod(i,120)==0  %每隔50算总和
        l(a)=sum(ps(b:i))
        b=i
        a=a+1
    end
end
l(a)=sum(ps(b:i))
%bar(l)
[h,p]=lillietest(l)        %检验是否符合正态分布(h=0符合,p>0.05)

通过经纬度算出距离,并求每一行最小值

city=[114.07,22.62
    113.23,23.16
    113.11,23.05
    113.75,23.04];            %广东省gdp最好的4座城市
for i=1:4          %计算已完成任务离这几座城市的距离
    distance(:,i)=6370.*acos(cosd(traget1(:,2)-city(i,2)).*cosd(traget1(:,1)).*cosd(city(i,1))+sind(traget1(:,1)).*sind(city(i,1)));
end
distance1=min(distance,[],2) ;      %找出最小值

%距离公式:6370*acos(cosd(经度a-经度b)*cosd(纬度a)*cosd(纬度b)+sind(纬度a)*sind(纬度b));

数据读取,处理,保存

data=xlsread('1.xls');
j=data(:,1);
w=data(:,2);
fprintf('经度范围在%d-%d之间\n',min(j),max(j))
fprintf('违度范围在%d-%d之间\n',min(w),max(w))
price=data(:,3);                    %得到价格
traget1=data(data(:,4)==1,1:2);     %得到任务完成或者未完成的经纬度
traget0=data(data(:,4)==0,1:2);
low=data(price<75,1:2);     %将价格区间划分成2块
high=data(price>75,1:2);
csvwrite('test.csv',traget1) 

数据去重,类别均衡化

%样本去除重复数据
%sample=unique(data,'row','stable'); %‘sorted’则是返回排序后的矩阵

[~,id]=unique(data(:,4:5),'row','stable');      %对特定区域去重
sample=data(id,:);

%样本类别要均衡一下
plus_sample=sample(sample(:,11)==1,:);
minus_sample=sample(sample(:,11)==-1,:);
plus_sample=plus_sample(1:length(minus_sample)+0,:);   %完全1:1感觉有点少多加点
sample=[plus_sample;minus_sample];              %合并正负类别样本
id=randperm(size(sample, 1));                   %得到打乱后的索引
sample=sample(id,:);                            %得到最终的数据

利用ones构造全为n的矩阵:

n=2:
ones(10,5)*2

matlab逻辑回归

%% 建立逻辑回归模型
data=[final_data,data_main(:,4)];
id=randperm(size(data, 1));                   %得到打乱后的索引
data=data(id,:);                            %得到最终的数据
num=round(0.8*size(data,1));%取整个数据0.8的比例训练
train_data=data(1:num,:);
test_data=data(num+1:end,:);
csvwrite('test.csv',data)   ;%数据持久化


n=size(data,2);
train_y=train_data(:,n); %确定y所对应的数据
train_x=train_data(:,1:n-1); %除去y将剩余的数据都归于x

test_y=test_data(:,n); 
test_x=test_data(:,1:n-1);

train_x1=[ones(size(train_x,1),1),train_x];%在基础上增加常数项
test_x1=[ones(size(test_x,1),1),test_x];
w=zeros(size(train_x1,2),1);
lr=0.001;%学习率

pred_f=  train_x1*w;  %预测出的方程式取值
pred_y=1./(1+exp(-pred_f)); %Sigmoid函数
d_w=(train_y-pred_y)'*train_x1;
w=w+lr*d_w';

pred_y=1./(1+exp(-test_x1*w)); %%Sigmoid函数预测出的y
fenlei=(pred_y>=0.5);

accu=1-sum(abs(fenlei-test_y))./length(test_y)

 画柱状图和饼状图

%% 对附件一画饼状图
subplot(1,2,1)
for i=1:4
    X(i)=length(data_main(data_main(:,3)==i));
end
explode=[0 0 0 1]; % 0表示不弹出,1表示弹出
pie(X,explode);
title('123家企业各评级占比')
legend({'A','B','C','D'})

subplot(1,2,2)
Y=[]
Y(1)=length(data_main(data_main(:,4)==0));
Y(2)=length(data_main(data_main(:,4)==1));
explode=[0 1]; % 0表示不弹出,1表示弹出
pie(Y,explode);
title('123家企业是否违约占比')
legend({'否','是'})

%%  对附件二,三画柱状图
%进行初步数据可视化
figure('position',[150,100,900,550])%确定图片的位置和大小,[x y width height]
%准备数据
Y=[ 203340,7608; 151279,11206];
X=1:2;
 %画出2组柱状图,宽度1
h=bar(X,Y,1);      
 %修改横坐标名称、字体
set(gca,'XTickLabel',{'进项发票','销项发票'});
set(gca, 'Ygrid','on'); %纵坐标刻度显示网格
% 设置柱子颜色,颜色为RGB三原色,每个值在0~1之间即可
set(h(1),'FaceColor',[30,150,252]/255)     
set(h(2),'FaceColor',[255,198,0]/255) 
ylim([7000,210000]);      %y轴刻度
%修改x,y轴标签
ylabel('\fontname{宋体}\fontsize{14}交易数');
xlabel('\fontname{宋体}\fontsize{14}不同组'); 
title('各附件有效发票与作废发票个数')
%修改图例
legend({'\fontname{宋体}有效发票\fontname{Times New Roman}','\fontname{宋体}作废发票\fontname{Times New Roman}'},'FontSize',11);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值