在SMOTE中出错

5次浏览(过去30天)
艾玛·斯凯
艾玛·斯凯 2022年3月10日
评论道: 艾玛·斯凯2022年3月13日
我已经尝试了以下带有输入值的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(:,结束);
有人能帮帮我吗?非常感谢!
我先感谢你的帮助

接受的答案

沃斯
沃斯 2022年3月11日
听起来你是想逃跑 func_smot.m 点击绿色箭头或按F5,但你的意思是跑步 mySMOTE.m 像这样。
而且看起来 mySMOTE.m 应该叫 func_smot ,而不是试图称呼自己。我已经做出了改变 mySMOTE.m 并附上它。(附 func_smot.m 不变。)
把这个改变带到 mySMOTE.m ,并尝试使用绿色箭头或F5或进入运行它 mySMOTE 在命令行中。
3评论
艾玛·斯凯
艾玛·斯凯 2022年3月13日
非常感谢!

登录评论。

更多答案(0)

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!