1. python 与MATLAB数据互相之间可以转换: .mat 数据可以转化为Python 格式的数据。
2.2
3. indices = crossvalind('Kfold', 10, 3); %将数据样本随机分割为3部分。
indices 生成10行1列的数据,结果在1,2,3之间出现。
test = (indices == 1); %%数组与标量之间的关系运算,结果为逻辑型数据。
3.1数组与标量之间的的6种关系运算符最后得到的结果为与数组逐元素比较得到的新数组。 (关系运算符得到的结果为逻辑型变量)
save input1.mat input1;
save input2.mat input2;
2. 1 采用随机森林算法处理minist 数据的正确率大概为96%左右,随机森林是普通机器学习算法中最优秀的算法之一了。
2.2
3. indices = crossvalind('Kfold', 10, 3); %将数据样本随机分割为3部分。
indices 生成10行1列的数据,结果在1,2,3之间出现。
test = (indices == 1); %%数组与标量之间的关系运算,结果为逻辑型数据。
%%
其中每一行代表一个样本
Data=[1 2;2 3;3 4;4 5;5 6;6 7];
target=[1;2;3;4;5;6];
Data_target=[Data target];
indices = crossvalind('Kfold',6, 3);
%%注意每次运算得到的结果均不一致,三分之二的数据用于训练,
三分之一的数据用于测试。
indices=[2;1 ;3 ;3 ;1 ;2];
i=1;
test = (indices == i);
train = ~test;
trainData = Data(train, :);
testData = Data(test, :);
traintarget = target(train, :);
testtarget = target(test, :);
3.1数组与标量之间的的6种关系运算符最后得到的结果为与数组逐元素比较得到的新数组。 (关系运算符得到的结果为逻辑型变量)
3.2 数组与数组之间的的6种关系运算符最后得到的结果为与数组逐元素比较得到的新数组。
4. 高光谱图像分类代码: http://www.escience.cn/people/jiangjunjun/Project_Code.html。
7*7 均值滤波:
4.1 sub2ind (size(data),i,j) 将第i行第j列的数据转化为单下标。 %自带for 循环。
[m n p] = size(indian_pines_corrected);
ENVI 中ROI数据导出为TXT文档时将以像元方式逐行显示,X代表像元所在的列数,Y代表像元所在的行数。
(如果将经典版本中的ROI转化为shp文件,将直接转化为点文件,不利于端元位置显示,新版本中可以直接转化为面文件)
将ROI数据转化为分类数据,得到的结果是一个单波段影像(影像大小跟原始影像相同),同一个类别的值相同(同一类别的像元值本身是可编辑的),未定义区域的像元值为0。 ( 这种通常为编程中标签数据的通用形式 )
%% 将图像的DN值与标签对应连接起来。
原始影像与标签数据之间存在一一对应的关系: (应用该原则的前提是标签和原始数据来自相同的方式)
i=1; % i为标签值。
4.2 mod(a,b)就是求的是a除以b的余数。
4.3 diag (v) 将向量转化为对角矩阵。
5. 1
[A, R] = geotiffread(filename) % 读取带地理坐标的TIFF数据。
reads a georeferenced multispectral image or data grid from the GeoTIFF file specified by
A为三维矩阵,[m,n,p] m为行数(886),n为列数(1059),p为波段数。
R为类似结构体的复杂数据类型。
5.2 问题:遥感影像中有1,2,3,4,5 五种标签,如果将3,4 两种标签合并成一种标签 (通过ROI合并功能来实现,将树木跟草合并成植被),是否影响机器学习结果?
结果表明 1种标签中包含二种地物的情况同样不影响信息的提取。
accuracy1 = zeros(1,4);
for i = 1:4
test = (indices == i);
train = ~test;
p_cv_train=p_train(train,:);
t_cv_train=t_train(train,:);
p_cv_test=p_train(test,:);
t_cv_test=t_train(test,:);
model = TreeBagger(500, p_cv_train, t_cv_train,'NumPredictorsToSample',
5);
[Predict_label,Scores] = predict(model,p_cv_test);
T_sim_1=str2num(cell2mat(Predict_label));
accuracy1(i) = length(find(T_sim_1 == t_cv_test)) / length(t_cv_test)*100;
end
accuracy2=mean(accuracy1);
4. 高光谱图像分类代码: http://www.escience.cn/people/jiangjunjun/Project_Code.html。
7*7 均值滤波:
for i=1:size(data,3);
data(:,:,i) = imfilter(data(:,:,i),fspecial('average',7));
end
4.1 sub2ind (size(data),i,j) 将第i行第j列的数据转化为单下标。 %自带for 循环。
[m n p] = size(indian_pines_corrected);
indian_pines_map = uint8(zeros(m,n));
data_col = reshape(indian_pines_corrected,m*n,p);
[mm nn] = ind2sub([m n],1:m*n); %自带for 循环。
data_col = [mm' nn' data_col];
%每个像元对应的行数+列数+各个波段像元值。(一行表示一个像元)
G=reshape(BPoutput,m,n);
valid_index=sub2ind([m,n],sample(m_train*train_ratio+1:end,2),sample(m_train*train_ratio+1:end,1));%%%取验证样本的下标
c=mean(G(valid_index)); % the c in paper,we use mean value of all data
disp(['mean c: ',num2str(c)]);
Pro=mat2gray(G./c); %Normalized Probability
ENVI 中ROI数据导出为TXT文档时将以像元方式逐行显示,X代表像元所在的列数,Y代表像元所在的行数。
(如果将经典版本中的ROI转化为shp文件,将直接转化为点文件,不利于端元位置显示,新版本中可以直接转化为面文件)
; ENVI Output of ROIs (5.3.1) [Wed Mar 21 16:29:54 2018]
; Number of ROIs: 1
; File Dimension: 1059 x 886
;
; ROI name: roi
; ROI rgb value: {255, 0, 0}
; ROI npts: 1
; ID X Y Map X Map Y Lat Lon B1 B2 B3 B4 B5
1 1058 1 695793.75 4337904.25 39.168340 -108.733627 0.0118 0.1373 0.1804 0.2157 0.2275
将ROI数据转化为分类数据,得到的结果是一个单波段影像(影像大小跟原始影像相同),同一个类别的值相同(同一类别的像元值本身是可编辑的),未定义区域的像元值为0。 ( 这种通常为编程中标签数据的通用形式 )
%% 将图像的DN值与标签对应连接起来。
trainl=[0 1 2;3 1 0]; %标签数据。
trainl=reshape(trainl,6,1);
trainlog=~(~trainl);
trainlable=trainl(trainlog,:);
[trainlable,ind1]=sort(trainlable);
testcon=[1 1 1 2;3 3 2 3;2 5 5 5;4 6 4 8;5 3 2 8; 6 4 1 1]; % 原始波段数据。
traincon=testcon(trainlog,:);
traincon=traincon(ind1,:);
data=[traincon trainlable];
原始影像与标签数据之间存在一一对应的关系: (应用该原则的前提是标签和原始数据来自相同的方式)
i=1; % i为标签值。
ci = length(find(indian_pines_gt==i));
[v]=find(indian_pines_gt==i);
datai = data_col(find(indian_pines_gt==i),:);
4.2 mod(a,b)就是求的是a除以b的余数。
4.3 diag (v) 将向量转化为对角矩阵。
V=[1 2 3 4 5];
diag(V);
filename
into
A
and constructs a spatial referencing object,
R
.
A为三维矩阵,[m,n,p] m为行数(886),n为列数(1059),p为波段数。
R为类似结构体的复杂数据类型。
5.2 问题:遥感影像中有1,2,3,4,5 五种标签,如果将3,4 两种标签合并成一种标签 (通过ROI合并功能来实现,将树木跟草合并成植被),是否影响机器学习结果?
结果表明 1种标签中包含二种地物的情况同样不影响信息的提取。