I found some trouble with my code, somebody help me please. I really need your help, thankyou!
clc; clear all;A=xlsread('sne7-final.xlsx','cv','A1:G64'); B=xlsread('sne7-final.xlsx','cv','A129:G640');% Time=[A;B];
% data=Time(:,1:7);
% target=Time(:,8);
C=xlsread('sne7-final.xlsx','cv','H1:H64'); D=xlsread('sne7-final.xlsx','cv','H129:H640');% Target=[C;D];
% contohData = xlsread('All Entropy 25 Blok');
contohData = [A;B];% hasilContohData = xlsread('Hasil Entropy 25 Blok CV10');
hasilContohData = [C;D];dataBaru = xlsread('sne7-final.xlsx','cv','A65:G128');%Tentukan parameter k, yaitu banyak jumlah titik tetangga yang diperhitungkan
%Karena ada 4 data pada contoh awal, maka nilai K adalah 1 / 2 / 3 / 4
%Diasumsikan dalam kasus ini, nilai K adalah 3, brarti hanya 3 titik tetangga terdekat yang diperhitungkan dalam setiap perhitungan
k = 1;%* Lakukan perhitungan menggunakan metode Fuzzy k-NN (k-Nearest Neighbors)
%Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 1 - 3)
[hasilData,jarakKeMasing2Hasil] = FuzzyKNN(contohData, hasilContohData, dataBaru, k);disp('Hasil Perhitungan dengan metode Fuzzy k-NN (k-Nearest Neighbors)')disp('Thorax , Region 1 , Region 2 , Region 3 , Jarak ke hasil abnormal , Jarak ke hasil Normal, kesimpulan')for i = 1:size(hasilData, 1) %4. Lakukan konversi nilai hasil kembali seperti semula
%Jika nlai hasil adalah 1, maka termasuk dalam kelompok hasil jual
%Laris (abnormal)
%Jika nlai hasil adalah 2, maka termasuk dalam kelompok hasil jual
%Tidak Laris (normal)
if hasilData(i,1) == 1 status = '1'; elseif hasilData(i,1) == 2 status = '2'; end disp(['Thorax ' , num2str(i) , ', ', ... num2str(dataBaru(i,1)), blanks(10 - length(num2str(dataBaru(i,1)))), ', ', ... num2str(dataBaru(i,2)), blanks(22 - length(num2str(dataBaru(i,2)))), ', ', ... num2str(dataBaru(i,3)), blanks(3 - length(num2str(dataBaru(i,3)))), ', ', ... num2str(round(jarakKeMasing2Hasil(i,1),2)), blanks(25 - length(num2str(round(jarakKeMasing2Hasil(i,1),2)))), ', ', ... num2str(round(jarakKeMasing2Hasil(i,2),2)), blanks(31 - length(num2str(round(jarakKeMasing2Hasil(i,2),2)))), ', ', ... char(status)])x=status;sheet=1;my_cell = sprintf('A%s',num2str(i));xlswrite('Hitung Akurasi SNE 7 Blok CV1 1',x,sheet,my_cell);endfilename4='Hitung Akurasi SNE 7 Blok CV1 1.xls'; %hasil klasifikasi
filename5=xlsread('sne7-final.xlsx','cv','H65:H128') %hasil asli dari database
predict=xlsread(filename4); %inisiasi
true=xlsread(filename5); %inisiasiC=confusionmat(true,predict) confusionchart(C) % buat nampilin chart true false dkk
[m,n]=find(true==predict);akurasi=sum(n)/64*100 %rumus akurasi
this is the function
function [hasilDataBaru,jarakKeMasing2Hasil] = FuzzyKNN(contohData, hasilContohData, dataBaru, k, fuzzy)if nargin<7 fuzzy = true;endjumlahContohData = size(contohData,1);jumlahDataBaru = size(dataBaru,1);%1. Tentukan faktor skala dalam pembobotan fuzzy
%Dalam kasus ini bernilai 2 karena hanya ada 2 nilai hasil, yaitu Laris dan Tidak Laris
m = 2;%2. Lakukan konversi nilai hasil contoh data menjadi 2 nilai biner
%Untuk hasil jual Laris, maka akan dikonversi menjadi 1 0
%Untuk hasil jual Tidak Laris, maka akan dikonversi menjadi 0 1
maksHasilContohData = max(hasilContohData);temp = zeros(length(hasilContohData),maksHasilContohData);for i=1:jumlahContohData temp(i,:) = [zeros(1, hasilContohData(i)-1) 1 zeros(1,maksHasilContohData - hasilContohData(i))];endhasilContohData = temp;%Untuk menyimpan hasil jual untuk setiap data baru
hasilDataBaru = zeros(jumlahDataBaru, length(k));%Untuk menyimpan jarak ke masing-masing hasil jual (Laris dan Tidak Laris)
jarakKeMasing2Hasil = zeros(jumlahDataBaru, maksHasilContohData, length(k)); %3. Lakukan perhitungan pada masing-masing data baru (poin 3a - 3g)
for i=1:jumlahDataBaru %3a. Hitung jarak dari data baru pada masing-masing data contoh
%Perhitungan jarak menggunakan rumus Euclidean, yaitu akar dari (jumlah dari (kuadrat dari (dataBaru - contohData)))
%Untuk efisiensi, proses akar memang tidak dilakukan agar tidak perlu lagi mengkuadratkan pada proses selanjutnya
jarak = (repmat(dataBaru(i,:), jumlahContohData,1) - contohData).^2; jarak = sum(jarak,2)'; %3b. Lakukan pengurutan jarak dari yang paling dekat ke jarak yang paling jauh
[~, idxTerurut] = sort(jarak); %3c. Contoh data terpilih adalah contoh data dengan jarak yang paling minimal sebanyak parameter k
idxContohDataTerpilih = idxTerurut(1:k); bobot = ones(1,length(idxContohDataTerpilih)); if fuzzy, %3d. Lakukan perhitungan bobot menggunakan metode fuzzy
%Normalnya, nilai bobot dihitung dengan menggunakan rumus:
%bobot = jarak(idxContohDataTerpilih).^(-2/(m-1));
%Tetapi karena nilai jarak diatas tidak dilakukan proses akar,
%Maka nilai bobotnya dihitung dengan rumus:
%bobot = sqrt(jarak(idxContohDataTerpilih)).^(-2/(m-1));
%Dengan menghilangkan proses akar dan kuadrat yang terjadi bersamaan,
%maka bobot dapat dihitung dengan rumus:
%bobot = jarak(idxContohDataTerpilih).^(-1/(m-1));
bobot = jarak(idxContohDataTerpilih).^(-1/(m-1)); %3e. Jika terdapat nilai bobot yang mendekati tak terhingga (infinity),
%maka nilai bobot ini akan dikembalikan menjadi angka 1
if max(isinf(bobot)) warning(['Terdapat bobot dengan nilai tak terhingga: ' num2str(i) '. Sehingga nilai bobot dikembalikan menjadi 1.']); bobot(isinf(bobot)) = 1; end end %3f. Lakukan perkalian nilai bobot dengan 2 nilai biner hasil konversi dari nilai hasil pada contoh data
%Kemudian lakukan normalisasi dengan cara membagi bobot tersebut dengan semua jumlah bobot yang ada
bobotPerMasing2Hasil = bobot * hasilContohData(idxContohDataTerpilih,:) / (sum(bobot)) ; jarakKeMasing2Hasil(i,:) = bobotPerMasing2Hasil; %3g. Tentukan nilai bobot yang paling tinggi,
%Kemudian catat indeks bobot tersebut sebagai jawaban akhir
[~, idxMaks] = max(bobotPerMasing2Hasil'); hasilDataBaru(i) = idxMaks;end
this is the eror
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-2.Error in FuzzyKNN (line 19) temp(i,:) = [zeros(1, hasilContohData(i)-1) 1 zeros(1,maksHasilContohData - hasilContohData(i))];Error in main (line 28)[hasilData,jarakKeMasing2Hasil] = FuzzyKNN(contohData, hasilContohData, dataBaru, k);
Best Answer