在SMOTE中出错
5次浏览(过去30天)
显示旧的注释
我已经尝试了以下带有输入值的SMOTE代码。
m.file (func_smot.m)
函数allData_smote = func_smot(allData, k,sortedIDX)
绘制类数量的条形图
数字
% barh (sortedIDX)
ylabel(“4”)
包含(2552、227621、2555)
标题(“原始不平衡数据分布”)
每个类的%%
标签= allData(:,结束);
类=独特(sortedIDX);
2 = 1:元素个数(类)
classNo (ii) =元素个数(找到(标签= =类(ii)));
结束
%%每个少数族裔类别所需的插件样本
样品上的百分比将通过取每个样品的差值来计算
类样本数量最多的classSamples
maximumSamples = 2555;
sampleClass = 5955;
[maximumSamples, sampleClass] = max (classNo);最大样本数的%
2 = 1:元素个数(类)
samplediff (ii) = maximumSamples-classNo (ii);
N (ii) = ceil(samplediff(ii)/ 100);
结束
过多的少数族裔
allData_smote = [];
2 = 1:元素个数(类)
X = allData(标签= =类(ii):);
T = size(X, 1);
X_smote = X;
for i = 1:T
y = X(i,:);
%找到k个最近的样本
[idx, ~] = knnsearch(X,y,'k',k);
%在k个最近的样本中只保留N个
idx = datasample(idx, N(ii));
x_nearest = X(idx,:);
x_syn = bsxfun(@plus, bsxfun(@times, bsxfun(@minus,x_nearest,y), rand(N(ii),1)), y);
X_smote = cat(1, X_smote, x_syn);
结束
allData_smote =猫(1 allData_smote X_smote);
结束
% %
balanced_sortedIDX = allData_smote(:,结束);
数字
barh (balanced_sortedIDX)
ylabel(“4”)
包含(2552、227621、2555)
标题(“均衡的数据分布”)
随机化数据
shuffleindex = randperm(大小(allData_smote, 1));
allData_smote = allData_smote (shuffleindex:);
结束
单独的m文件(mySMOTE.m)
your_allData = [5955,4];
Your_k = 5;
your_sortedIdx = {'2552','227','621','2555'};
your_result = mySMOTE(your_allData,your_k,your_sortedIdx);
它给出了这个错误
> > func_smot
输入参数不够。
func_smot中的错误(第9行)
标签= allData(:,结束);
有人能帮帮我吗?非常感谢!
我先感谢你的帮助