检验矩阵某一列是否有正态分布的规律
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);