Soru sorMatris ile ANFIS'i eğitmek
aleynagulec tarafından 5 yıl önce soruldu

Benim elimde döngünün içerisinde bir matris var bu matrisin içerisi ise bir datasetinden aldığım veriler ile doludur. Yapmak istediğim ise bu matris ile anfisi eğitmektir. Command window'a "help anfis" yazdığımda kod çıkıyor fakat evalfis kısmında hatalarım çıkıyoor. Structure olması doğrultusunda. Sizce bu sorunu nasıl çözebilirim?

8 Cevap
sayginer Yönetici tarafından 5 yıl önce cevaplandı

Ne hatası alıyorsunuz? Workspace'deki değişkenlerinizin ekran görüntüsünü paylaşır mısınız?

aleynagulec tarafından 5 yıl önce cevaplandı
y=(0:0.3:100)';
random_input = [round(1+12*rand(1,5)) 14];
sort_random_input = sort(random_input);
X_egt=[];

for k=1:length(sort_random_input)
X_egt = [X_egt InputA(:,sort_random_input(k))];
end

for i=1:3

epoch_n = 1;
in_fismat = genfis1(X_egt,3,'gaussmf');
[x,mf] = plotmf(in_fismat,'input',1);
subplot(2,1,1),plot(x,mf);
xlabel('infismat');

out_fismat = anfis(X_egt,in_fismat,epoch_n);
plot(y,evalfis(X_egt(:,1:6),out_fismat))

end

 
İyi Günler, ekran görüntüsünü ekleyemedim. Aldığım hata ise:
Error using evalfis (line 62)
The first argument should have as many columns as input
variables and
as many rows as independent sets of input values.
Error in ProjeDeneme (line 27)
plot(y,evalfis(X_egt(:,1:6),out_fismat))
 
 
 
 
 

sayginer Yönetici tarafından 5 yıl önce cevaplandı

Merhaba,
Anladigim kadari ile sonuclarinizi bastirirken bir sorun yasiyorsunuz. Bu da matrislerin boyutlarinin uyusmamasindan kaynaklaniyor.
plot(y,evalfis(X_egt(:,1:6),out_fismat)) bu satiri comment'leyerek (yani basina % yuzde isareti koyarak -tum satir yesil renkli olacak boylelikle-) tekrar calistirir misiniz?
Ikinci bir oneri de:
plot(y,evalfis(X_egt(:,1:6),out_fismat)) kodundaki evalfis(X_egt(:,1:6) fonksiyonunu plot etmeden once tanimlayarak daha sonra plot eder misiniz?
Yani:

deger = evalfis(X_egt(:,1:6)
plot(y,deger,out_fismat)
aleynagulec tarafından 5 yıl önce cevaplandı

Merhaba,
İlk öneriniz de hiç bir sorun almıyorum. Anfis çıktısı olarak sadece bir sonuç veriyor. 
ikinci öneride ise şu şekilde hata alıyorum:
Error using plot
Vectors must be the same length.
Error in ProjeDeneme (line 31)
plot(y,deger,out_fismat)

sayginer Yönetici tarafından 5 yıl önce cevaplandı

Merhaba,
plot fonksiyonunun kullanımında bir yanlışlık oluyor yani grafik oluştururken. plot fonksiyonunun içerisine grafiğin x ve y ekseninde görmek istediğiniz değerleri sırası ile x ve y olarak yazmanız gerekiyor ve bu iki değerin de aynı vektör uzunluğunda olması gerekiyor.
Workspace variable'larınızı -özellikle y ve deger- ekran görüntüsü alarak paylaşır mısınız? Aldığınız ekran görüntüsünü aşağıdaki sitelerden bir tanesine yükleyerek linkini ekleyebilirsiniz.
Görsel Yükleme Siteleri
imgur
imgbox
imgbb
tinypic
shutterfly
photobucket
postimages
freeimagehosting
photoland.io
pasteboard.co
imageupload.uk
hizliresim
imgim

aleynagulec tarafından 5 yıl önce cevaplandı

Merhaba, 
Evet uzunluk dolayısıyla çizdiremiyorum, uyuşmazlık oluyor. Ekran görüntüsünü ekledim.
http://imgbox.com/pMOIraT7

sayginer Yönetici tarafından 5 yıl önce cevaplandı

Yani açıkçası matrislerinizdeki veri ne anlama geliyor tam olarak kestiremiyorum. Ama sanırım ürettiğiniz y değerini 101 yerine 297 tane olacak şekilde yaparsanız sorun çözülecek gibi. y değişkenini aşağıdaki gibi tanımlamayı deneybilirsiniz:

y = linspace(0,100,297)
aleynagulec tarafından 5 yıl önce cevaplandı

İyi günler Osman Bey,
Sorunu çözdüm çıkışlarda da girişteki gibi [x,mf] şeklinde yaparsam eğer çizim halloluyor. Yani şu şekilde:

[x1son,mf1son] = plotmf(out_fismat,'input',1);
plot(x1son,mf1son);

Yardımlarınız için çok teşekkür ederim.