Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 3269

 
mytarmailS #:
Peki tüm bu korelasyon olayının nihai amacı nedir?

Peki, hangi uygulamanın daha hızlı olduğunu, hangisinin aynı sonuçları verdiğini, hangisinin vermediğini öğrendiniz... Bu bilgiyle ne yapacaksınız?

Başkalarının teknik kısıtlamalar nedeniyle hesaplayamadıklarını ben hesaplayabileceğim.

 
mytarmailS #:
Ayrıca test ve görselleştirme ve hızlı aksiyon, muhtemelen

Anlaşmaların parametrelerini almak için son optimizasyon da normaldir

 
fxsaber #:

İlk başta önden varyantı yapmayı denedim - her seferinde tüm satırları saymak için. Alglib'de bir hata olduğu izlenimine kapıldım, çünkü kendiminkinde bulamadım.


Sonuç genellikle aynı olur.


Ama bazı durumlarda öyle değildir.


Eğer her zaman böyle olsaydı, bu benim hatam olurdu. Ama burada şüpheli bir şeyler var.


yaptım.

Print(Matrix1);
Print("------------------");
Print(Matrix2);


Matrix2'de ilk 5 eşleşme var, sonra sıfırlar.
Res.Col(Corr.Row(0), i);'yi Res.Row(Corr.Row(0), i) olarak değiştirdim;

Matrisler benzer hale geldi, ancak hala IsEqual geçmiyor. Bir yerlerde başka bir şey...
 
Forester #:

Res.Col(Corr.Row(0), i); ifadesi Res.Row(Corr.Row(0), i) olarak değiştirildi;

Yanlış gibi görünüyor.

 
Forester #:
Made

Print(Matrix1);
Print("------------------");
Print(Matrix2);


Matrix2'de ilk 5 eşleşme var, ardından sıfırlar geliyor.
Res.Col(Corr.Row(0), i);'yi Res.Row(Corr.Row(0), i) olarak değiştirdim;

Matrisler benzer hale geldi, ancak hala IsEqual geçmiyor. Bir yerlerde başka bir şey var...

Sorunu buldum

Şöyle olmalı

for (int i = 0; i < ( int)Matrix.Cols(); i++)
{
if (i)
Vector.SwapCols(0, i);

CBaseStat::PearsonCorrM2(Vector, MatrixIn, MatrixIn.Rows(), 1, MatrixIn.Cols(), Corr);

Res.Col(Corr.Row(0), i);
}

 
Ve PearsonCorrM2, üçgenle sayarsanız 2 kat hızlandırılabilir.yani sondan gidin. 100. satırı tümüyle sayın, sonra 99'u tümüyle 0-99, 99 ve 100. zaten sayıldı - sadece kopyalayabilirsiniz. ...50. satırı tümüyle 50'ye, vb. Ve kendisiyle saymayın çünkü =1.

Not:
Genel olarak kodunuz güzel ve özlü. Ben olsam her şeyi loops içinde yapardım))))
 
Forester #:
Ve PearsonCorrM2, üçgenle sayarsanız 2 kat hızlandırılabilir.yani sondan gidin. 100. satırı tümüyle sayın, sonra 99'u tümüyle 0-99, 99 ve 100. zaten sayıldı - sadece kopyalayabilirsiniz. ...50. satırı tümüyle 50.'ye kadar vb.
Bir yerde hızlı fourier dönüşümü ile korelasyonu hızlı bir şekilde hesaplayabileceğinizi okudum... Ayrıca hızlandırmak için bir seçenek olarak.
 
residuals_a = a_mat - a_mat. column_means residuals_b = b_mat - b_mat. column_means a_residual_sums = residuals_a. column_sums b_residual_sums = residuals_b. column_sums residual_products = dot_product( residuals_a. transpose, residuals_b)
sum_products = sqrt( dot_product( a_residual_sums, b_residual_sums))
korelasyonlar = residual_products / sum_products 
 
mytarmailS #:
Bir yerde korelasyonu hızlı fourier dönüşümü yoluyla hızlı bir şekilde okuyabileceğinizi okudum... Ayrıca hızlandırmak için bir seçenek olarak.

Ben yaptım. Dize uzunluğu büyük olduğunda mantıklı. Sana bir ara gösteririm.

 
Forester #:

Sorunu buldum

Şöyle olmalı

Kesinlikle, teşekkürler! Yanlış seçeneğin inCols < 100 ile neden çalıştığını anlamıyorum.