Jika masalah Anda adalah pertanyaan penggunaan, kirimkan di sini: - StackOverflow dengan tag scikit-learn: https://stackoverflow.com/questions/tagged/scikit-learn - Milis: https://mail.python.org /mailman/listinfo/scikit-learn Untuk informasi lebih lanjut, lihat Pertanyaan Pengguna: http://scikit-learn.org/stable/support.html#user-questions Petunjuk Untuk Mengajukan Bug: https://github.com/scikit -learn/scikit-learn/blob/master/CONTRIBUTING.md#filing-bugs
Diberikan dua matriks tampilan X
dan Y
, CCA harus mengembalikan n_components
kombinasi linier elemen dalam X
's dan Y
' s vektor dengan korelasi terbesar, yaitu komponen pertama memiliki korelasi terbesar, yang kedua memiliki korelasi terbesar kedua dalam arah yang tidak berkorelasi dengan yang pertama, dll. Namun, dalam kode berikut, kolom kedua jelas kurang berkorelasi dari kolom ketiga:
from sklearn.cross_decomposition import CCA
import numpy as np
from scipy import stats
X = [[0.006061109337620652, 0.0392466675239141, -0.04312459861840733], [-0.6652995467596429, 0.2076410843346226, -0.7817536882379651], [-1.4060868112838942, -0.055029478343267685, -1.006415484608637], [-2.170613455952169, -0.15770102997315535, -1.5223958036356375], [-2.895702070412092, -0.20498481413822175, -1.8232022285963847], [-3.687452614812402, -0.543003880524402, -2.2952030829468533], [-4.206168972149556, -0.3365693935548624, -2.841946351795423], [-5.231288268781064, -0.8024321344988571, -3.40532581256557], [-6.095805742721522, -0.9381144689340173, -3.593752186094848], [-6.297988264542059, -0.7231985020991631, -3.9435579269998406], [-7.10897027952524, -0.8639925998765747, -4.264992629284153], [-8.116238092376772, -1.0123970020855437, -4.96858178622968], [-8.969468878952105, -1.0235782019578692, -5.617282941713933], [-9.839359511108077, -1.2819621078971968, -5.8901943190245625], [-10.181936322525571, -0.9904671991812529, -6.240811384647836]]
Y = [[0.032927114749911154, 0.21320841666565743, -0.23427536580450153], [1.431742605643286, 0.23963850202268067, 0.8438745303679628], [2.908798834568648, 0.7357229001312737, 1.325345683629048], [4.438824821921929, 0.9473643810538429, 2.35038560647864], [5.887201894166226, 1.0302756424934638, 2.964806513433767], [7.409049064480012, 1.3070946380395154, 4.347473875547982], [8.51501831350366, 1.3380108570442941, 4.9533251686263275], [10.57244384646805, 2.31627294094068, 6.028949244604159], [12.22872203222364, 2.1165257564864675, 6.923464021607424], [12.664660419747504, 1.8911363532121173, 7.398432173930664], [14.29235367239137, 2.2098221962551343, 8.000538342827351], [16.327977920399373, 2.643183255720207, 9.257671785118596], [18.081288169620517, 2.968898443090926, 10.221747267811098], [19.754046559146662, 3.051682253577557, 11.244435627784393], [20.466418131910004, 2.644933083198568, 11.752014917896375]]
cca = CCA(n_components=3)
cca.fit(X, Y)
X_transformed, Y_transformed = cca.transform(X, Y)
print(X_transformed)
[[ 1.64277244 0.08237031 0.11724683]
[ 1.41457457 -0.11600721 0.07162219]
[ 1.18686358 0.00666119 0.08822118]
[ 0.94070119 -0.02504267 -0.0112954 ]
[ 0.71314666 0.02919558 0.25990473]
[ 0.46246267 0.05607036 -0.16424275]
[ 0.28625435 -0.09546609 -0.02850206]
[-0.03644528 -0.03407977 -0.55790786]
[-0.30127324 0.12266269 -0.12622283]
[-0.37581414 -0.01941656 -0.0343278 ]
[-0.62900674 0.05973748 0.13448604]
[-0.95400947 0.0082079 -0.05487306]
[-1.23214839 -0.07548718 -0.08864002]
[-1.50031366 0.05776429 0.00665019]
[-1.61776455 -0.0571703 0.38788062]]
print(Y_transformed)
[[ 1.64131294 0.01428169 0.11343087]
[ 1.41330957 -0.06169376 0.06929115]
[ 1.18580457 0.04946041 0.0853499 ]
[ 0.9398609 0.01613582 -0.01092778]
[ 0.71251056 0.06356946 0.25144578]
[ 0.46205587 -0.05371303 -0.15889725]
[ 0.28599564 -0.05298207 -0.02757442]
[-0.03641563 0.02220818 -0.53975 ]
[-0.30099795 0.01004611 -0.12211474]
[-0.37547807 -0.063071 -0.03321056]
[-0.62844374 0.02679924 0.13010901]
[-0.95315959 0.0185694 -0.05308714]
[-1.23105629 0.03726576 -0.08575511]
[-1.49897395 0.01483407 0.00643375]
[-1.61632484 -0.04171028 0.37525653]]
Korelasi antara kolom ketiga X_transfomed
dan Y_transformed
kira-kira 1, sedangkan korelasi antara kolom kedua hanya 0,389. Oleh karena itu, saya berharap kolom ketiga muncul di tempat kolom kedua.
Ketika saya menjalankan CCA dengan n_components=2
saya mendapatkan kolom pertama dan kedua, sedangkan saya seharusnya mendapatkan kolom pertama dan ketiga.
Linux-4.13.0-16-generic-x86_64-with-Ubuntu-17.10-artful
Python 3.6.3 (default, 3 Okt 2017, 21:45:48)
NumPy 1.14.3
SciPy 1.2.0
Scikit-Belajar 0.19.1
Saya tidak bermaksud kasar tetapi apa tujuannya. Mengapa kau melakukan ini?
Saya melakukan ini untuk mendapatkan komponen bersama antara dua tampilan beberapa data.
cara menetapkan nilai ambang batas menggunakan cca