Skip to content

Instantly share code, notes, and snippets.

@satomacoto
Created January 5, 2012 15:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save satomacoto/1565631 to your computer and use it in GitHub Desktop.
Save satomacoto/1565631 to your computer and use it in GitHub Desktop.
Kernel principal component analysis
6.040760282116731938e-02 2.003600989193874138e-01 0
-2.180560612167562751e-01 -8.292820699779238636e-01 0
-5.144639589460509033e-01 8.281746425448210935e-01 0
-4.740161490764375866e-03 -3.159114014274040476e-03 0
-1.417081236535422117e-01 -1.966777129492919621e-02 0
6.803427539200110341e-02 7.803962205781220240e-02 0
-1.875352326510989487e-01 2.345321639090314769e-01 0
2.805120457198624351e-01 1.557595199768933847e-01 0
-2.649491374332632043e-01 -3.705041702348287058e-02 0
-1.841101081351155799e-01 -6.072910303536597360e-02 0
-4.386505550163430356e-01 3.485622025359186305e-01 0
-1.937341674782834255e-01 -6.854270125190081719e-01 0
-6.390144645614345698e-02 -2.379252132870292649e-02 0
-6.250403662626886625e-01 2.733469750890267780e-01 0
-6.524664668338950486e-03 -4.563471967794166528e-02 0
-2.218935726671067976e-01 -6.451913979184431547e-01 0
4.375391978193660658e-01 7.574076248727413807e-01 0
-9.332877496463073408e-01 2.269851000266172314e-01 0
-5.591555539522061746e-01 1.697472968205609445e-01 0
1.897823604198334291e-02 -8.137492438290242491e-01 0
4.573379285453052501e-01 8.203229517344955424e-01 0
-1.732665129863686024e-02 -1.389569928096139224e-02 0
-2.891179677624831079e-01 -1.520767685524744561e-01 0
5.650166255560471473e-01 -7.705852630417078242e-01 0
9.741956177066674050e-02 -1.366736316111533955e-01 0
-1.255920785398296491e-01 1.352356048464008753e-01 0
3.525439380173441273e-01 -1.006747282197958254e-01 0
-3.881425633673483144e-01 -2.082837460872036528e-01 0
-2.531065425207420019e-02 -4.556349239049264227e-02 0
-4.441725313427398285e-03 1.939862467764086242e-03 0
1.407912539048175871e-01 -6.758422450067759213e-01 0
5.589833050327379649e-01 -1.176684148383282946e-01 0
-3.874870050389199738e-01 -6.955355185226858028e-01 0
-6.310785986766314082e-01 6.620490495554710864e-02 0
-8.022417293479499056e-01 -3.385312597391262890e-01 0
5.446222267571036724e-02 -5.701841372066177582e-01 0
9.204453198952680659e-02 8.405369373707219927e-01 0
1.399091999311048197e-02 -9.122945515668308761e-03 0
3.498069130261129422e-01 -2.039294899312923404e-01 0
3.313104767448993293e-01 -5.786248299133498474e-01 0
-5.847644736174303359e-01 3.732666787691886756e-01 0
-2.445537287471074087e-02 1.305771763947872859e-02 0
-7.870476950136436889e-01 2.499375126092712451e-01 0
3.666497163974294926e-01 -1.827999579836714628e-01 0
-5.202115586463368357e-01 9.908253635798375258e-02 0
-6.699794150235887091e-01 6.722310108573485987e-01 0
4.953651674809363414e-01 -2.512060025448382694e-01 0
-3.721573338861514785e-02 2.399784065503351715e-01 0
-5.488913141927778128e-01 -6.146536494558541702e-02 0
7.479597822678150931e-02 8.715517653679488719e-01 0
-8.170863840499167363e-01 1.618508034410303942e-01 0
1.788878498927780614e-01 -1.529666625370651734e-01 0
3.339668714784097686e-02 -1.584513624733980552e-01 0
4.560747576239735923e-01 -7.775757831302028134e-01 0
-1.321710519048432259e-02 1.991243854539153368e-01 0
3.988589981182225630e-01 9.086888979106119701e-02 0
4.950960694940940154e-01 -4.734756896152302885e-01 0
-2.592593033022426718e-01 -1.913168745940751203e-01 0
3.629194340856990997e-01 2.457646870574404369e-02 0
2.021093039577230924e-02 4.457013995918933380e-03 0
2.482895480415219999e-02 5.232407101240186924e-03 0
-7.770917556630583256e-01 -1.676085822871621056e-01 0
-3.231696358791647516e-01 -1.868741571611493846e-01 0
3.599798257124783296e-01 -1.843929948772144167e-01 0
5.357115535099135628e-02 -5.874306931397018650e-01 0
4.522960550931380275e-01 5.733615029194968349e-01 0
5.351246481760768559e-01 2.260366513171269964e-01 0
8.717215753915946719e-02 -1.167488649107190218e-01 0
-7.107264977185949739e-01 4.762599732465334634e-01 0
8.334288378279521015e-02 -6.474248264417285792e-02 0
-1.611786314908767448e-01 -5.447611883406254796e-01 0
-8.053488375977476688e-01 -4.189553491707724842e-01 0
6.220758717983151387e-01 -1.289185305123063119e-01 0
-7.762169988008076338e-01 -1.552486865718828279e-03 0
-7.654134595839693356e-01 -1.150502923232933350e-01 0
5.245954499109323210e-01 1.784457133629255565e-01 0
9.303363368551512691e-01 -9.184738989255547548e-02 0
-7.246303151716355917e-02 3.064724083746412364e-01 0
3.606364170762338950e-01 2.455507781090223718e-01 0
-8.580002664854388117e-01 -6.785454222994199980e-02 0
4.790363912014073411e-01 2.750956172685296575e-01 0
-7.300806145955256177e-02 -9.204619020271885832e-01 0
-3.562894259753053294e-01 1.601239172260452703e-01 0
-5.232864692563410358e-01 -3.520268454322743601e-01 0
7.153677389314763713e-02 2.419015686302312118e-01 0
1.454338536478719524e-01 -1.002065000335619765e-01 0
5.955431627603649525e-02 -4.778126845040366333e-01 0
3.420273548948020714e-01 4.393694488069228854e-02 0
-1.674451965575573520e-01 8.622724378868432682e-01 0
-1.235680914900497834e-01 -5.406410906183135578e-01 0
-1.422358642799377293e-01 7.286993254035778467e-01 0
-5.277864496628372759e-01 -4.721516585029685853e-01 0
3.261683344439151311e-01 -2.961185110120297947e-01 0
5.824545908502195557e-01 -6.420026051686740232e-01 0
-6.276209518604405346e-01 -2.471824435387547092e-02 0
-3.230233978039692699e-02 7.045992915907769820e-03 0
-3.506150746912964911e-01 7.701820334213621555e-01 0
7.679566516129115658e-03 -2.203382345484091939e-02 0
5.903205290332960153e-01 2.827526452165015081e-01 0
3.589140442595557534e-01 -8.110888710662738088e-01 0
3.423978996067910785e+00 -6.815611620202771670e-01 1
1.947787535818686466e+00 3.261356434423686945e+00 1
3.116228654437516621e+00 1.249499385388585626e+00 1
-3.477425860735496421e+00 -8.649493394369669463e-01 1
2.112334932029988011e+00 2.827179137887978477e+00 1
-3.239467706137564296e+00 -1.791030944384896406e+00 1
2.468832941367268052e+00 3.073520942321085858e+00 1
1.910023156653007925e+00 3.006693810175046000e+00 1
3.261418459354056942e+00 2.157428122901658085e+00 1
-2.262736066805723922e+00 2.359568769430188784e+00 1
2.627965759541878721e-01 -3.216119250722730083e+00 1
-1.245103509100123351e-01 -3.765578862557531714e+00 1
-2.821118250360722612e+00 1.364292719214057925e+00 1
-2.973323853916032711e+00 7.295699336676478852e-01 1
2.662409187409756406e+00 -1.423300290246204858e+00 1
2.985250017767945963e+00 2.033823390899559769e+00 1
8.871150100130419380e-01 -3.024379845816387746e+00 1
1.115011946805964937e+00 3.324562530676779648e+00 1
-2.768887632343223437e+00 1.975098443086462652e+00 1
2.868566997626992965e+00 2.405480706765434462e+00 1
2.752706011224991922e+00 1.303748629414716920e+00 1
1.248563567453077283e+00 -3.194478353432085083e+00 1
3.605313476739557821e+00 -1.372296702433084326e+00 1
1.817857868459853865e+00 2.547453351338085703e+00 1
-3.622947373729113352e+00 1.532831741115100233e+00 1
3.528622778187936682e+00 -7.188012311116934727e-01 1
2.266634917359314105e+00 -3.050871022389936904e+00 1
-3.770385744523324423e+00 -1.152846795874695518e+00 1
3.255478072766699871e+00 3.479817301476912372e-01 1
-4.681489041808279405e-01 3.278867961017393196e+00 1
1.155780641034452882e+00 -3.273069906846129751e+00 1
1.445614887161802198e+00 3.136002701672334414e+00 1
2.298794548551420291e+00 -2.395331393252080776e+00 1
6.406491951117738726e-01 3.931874586994036136e+00 1
3.450000551434824647e+00 6.924785114993383672e-01 1
2.946795268343849195e+00 1.535829886701920444e+00 1
-3.567893667843557437e-01 3.033834554304795983e+00 1
-3.422493942958079405e+00 -1.972149494341366660e+00 1
1.754501764016957788e+00 2.859686361529887755e+00 1
-3.207433460107260270e+00 8.429839804501600975e-01 1
-2.422190898622198940e+00 -3.175515793999443392e+00 1
-2.714385671341634332e+00 -1.851469098324784568e+00 1
2.501336231458710202e+00 -2.171535310196222923e+00 1
-1.958045099388732613e+00 -2.388348424118397428e+00 1
3.031679848374255748e+00 -2.233268301656495147e+00 1
3.307041040113370300e+00 1.325694752707424318e+00 1
2.708693649957758964e+00 1.375237042373772312e+00 1
-3.137298634174817025e+00 -1.488766758321984629e-01 1
-3.431601352875644384e+00 -1.751769823815427785e+00 1
1.329750211766358214e+00 -3.356157975937775539e+00 1
-3.415282307455833610e+00 5.097747951694187041e-01 1
-2.951683991976087995e+00 -8.374660230669325189e-01 1
-1.737245062411603591e+00 3.542505736098482405e+00 1
9.339886057903019623e-01 3.089560260658763546e+00 1
1.802510790630496906e+00 3.149584323602546920e+00 1
-3.120739307707592225e+00 -2.359228340538209512e+00 1
-1.254426016873510630e+00 3.736473551296109363e+00 1
2.492515831124198389e+00 2.556962510015090562e+00 1
-3.153312773973629302e+00 2.417784026027557598e+00 1
-1.051735249839786945e-01 3.583923367008623462e+00 1
-3.937843138884927097e+00 7.019330449928914417e-01 1
-2.939474646131360114e+00 7.250801207641949242e-01 1
-3.171859277816483136e+00 -1.361688149549512561e+00 1
3.092449642620998862e+00 4.603874266541978511e-01 1
3.349842331275328267e+00 -2.011887291954462587e+00 1
-6.368282195540052593e-01 3.032823883484529581e+00 1
8.896524140094100863e-01 -3.477166928235316146e+00 1
3.559380827923908086e+00 9.712317855574978953e-01 1
3.536587214128946499e+00 -1.116665141472251266e+00 1
1.204249330746155477e+00 2.867145218886728575e+00 1
-3.501326084365430802e+00 3.935500058698897519e-01 1
-2.038943052839500059e+00 2.934139178311072182e+00 1
-3.462920045087081622e+00 1.087224855296317738e+00 1
1.931102090104665492e-01 3.040685174506533972e+00 1
-3.763045410111406586e+00 1.327174544250448118e+00 1
-1.978122252692670946e+00 -3.133907790947239480e+00 1
-2.689094714400102060e+00 2.731402655984311867e+00 1
-2.365095483787832964e-01 -3.056208868449447724e+00 1
-2.831956788496947652e-01 -3.543564062984443819e+00 1
3.501990370704800348e+00 -1.275025683587301950e+00 1
-2.770069830389487731e-01 3.899476238258548388e+00 1
3.993055909968487249e+00 -9.301798191108388847e-02 1
3.189969189196123267e+00 -5.694852150624825082e-01 1
-2.611080190811311930e+00 2.665513287775547191e+00 1
-2.642628127443199748e+00 1.843626160645214007e+00 1
-2.372473626201192953e+00 -2.848281301262287624e+00 1
-2.813722922212821942e+00 2.457667750395705397e+00 1
-1.527843580074577767e+00 -2.762490669938215682e+00 1
2.790954184666032400e+00 -2.633321825851067111e+00 1
1.839648144114637507e+00 2.835532756658601272e+00 1
-3.630522404270999814e+00 -1.140105968548830173e-01 1
-1.009782068999181881e+00 3.622910186690022183e+00 1
7.707509930131773990e-01 -3.680527677658694596e+00 1
2.843138219915833265e+00 1.599490884574372496e+00 1
2.319432839506018418e+00 -3.184802168667581590e+00 1
1.869949729477903055e+00 -2.501954245215909367e+00 1
-2.380992629659227422e+00 3.149319081256027886e+00 1
-2.745185367851226577e+00 -1.413264712168091686e+00 1
-4.865830518613226685e-01 -2.966351899447547069e+00 1
2.210865871392359683e+00 2.687908875087382299e+00 1
6.655383401851487690e+00 1.610142047104732965e+00 2
3.214841241110435899e+00 -5.262578528179163939e+00 2
-2.341456343458204969e+00 -5.577111571936725909e+00 2
-6.118466061249872467e+00 1.386965405512815774e+00 2
6.341213613874211674e+00 9.736660017862754923e-01 2
5.968742244722856860e+00 2.875651570672773438e+00 2
1.379944541322304818e+00 6.570348410767311798e+00 2
3.029281932322969606e+00 -6.276468496767664718e+00 2
-5.858875480405486336e+00 2.190813848922915419e+00 2
-5.276254627235343442e+00 -3.017921326839957175e+00 2
6.014731226578680534e+00 -8.014434848395782796e-01 2
6.197408616401337333e+00 3.096472710222775593e+00 2
4.572929821398409089e+00 -3.922473474624495360e+00 2
5.718894759017504548e+00 -2.843368147183657157e+00 2
-5.330857466830826397e+00 -2.822759009488797322e+00 2
5.963056683443637596e+00 -3.299979131663290044e+00 2
8.250738651442206528e-01 6.231251623580777554e+00 2
5.539200680673919130e+00 -4.110919692449821916e+00 2
3.016017477583732287e+00 5.728073488489059173e+00 2
-4.971651398091722740e+00 4.755149916254068465e+00 2
6.473588103093502966e+00 -1.051529980243671947e+00 2
-2.712599912758796084e+00 -5.801829191589924939e+00 2
-1.771161270021777590e+00 6.667241969972574012e+00 2
-6.446939962573497773e+00 -7.111396424879780076e-01 2
-6.056150362060447323e-01 -6.341396021280567119e+00 2
-3.654409880146327172e+00 -5.028286135988051520e+00 2
6.013872749919826344e-01 -6.710218430856046190e+00 2
-6.803754478930594374e+00 -1.411586688922060961e+00 2
3.602904216185104147e+00 -5.391457117918355024e+00 2
4.997237111785028496e+00 -4.280241427760255846e+00 2
-6.807848599193293104e+00 1.079329559049779230e-01 2
-5.564788728710674093e+00 -2.969825649196005557e+00 2
-4.033176743710702006e+00 -5.290109829663291130e+00 2
5.981028860628974542e+00 -3.318244446653080715e+00 2
5.769544056111221231e+00 -1.747228225041331795e+00 2
2.927103897842829205e+00 -5.391138280303938934e+00 2
1.649057328648965370e+00 6.264899249230579059e+00 2
-5.723026354276200323e+00 -2.250387759655831044e+00 2
-2.421754770070507323e+00 6.267710753588362493e+00 2
5.738935925481391642e+00 -1.899976871668146661e+00 2
5.502619258870896424e+00 3.576952640183117538e+00 2
5.731499808904281679e+00 -1.987778407586045626e+00 2
1.044916861282987774e+00 6.782616933771110190e+00 2
-3.257885718969515398e+00 -5.933286921012363990e+00 2
3.398988801673996196e+00 5.138781814168162043e+00 2
1.512736626917590144e+00 6.150332750990727959e+00 2
5.813350577228762361e+00 2.178791569341651524e+00 2
-6.047634457758025661e+00 -8.318577687850503555e-01 2
5.992419737095631582e+00 -1.763938463016020863e+00 2
6.497258418083442955e+00 -1.134752463264626865e+00 2
-1.589973751488124920e+00 -6.368643130499819449e+00 2
-3.754266490300068870e+00 -5.447529030117919113e+00 2
4.399690307647906806e+00 -4.431198838371462223e+00 2
6.122513421540389800e+00 -2.126998461398585949e+00 2
4.212877588643803684e+00 -4.450437110688321596e+00 2
-5.982669024605718811e+00 1.946746987582250732e+00 2
1.253608247327972769e-01 -6.862124108909208431e+00 2
-4.180950722666746167e+00 -4.593325354610933609e+00 2
-5.429718603416303857e+00 4.139382886809204187e+00 2
-4.071572942191586719e+00 5.175706453585227962e+00 2
-5.769014903466008093e+00 2.906866157338772627e+00 2
-1.249365520540630881e+00 6.834031384891823713e+00 2
-6.248091000360891378e+00 -1.063888851682602832e+00 2
-5.629431680054886478e+00 -2.099650097425453499e+00 2
-2.900933785468033488e+00 5.391094861515259851e+00 2
-5.995618374491003877e+00 -2.035516514690133949e+00 2
6.575406056109944331e+00 7.974664346757035505e-01 2
5.216513709047953640e+00 4.460483379757016920e+00 2
5.764983237766325708e+00 -2.194927986952748267e+00 2
-4.794504999266319345e+00 3.784833626090261305e+00 2
3.457943538057911326e+00 6.082194977882984688e+00 2
4.872976307337061996e+00 4.231357689193214533e+00 2
-5.353827940491521886e+00 2.869842800511802849e+00 2
-2.774045693926452394e+00 -5.962707197954046023e+00 2
2.108614156332103473e+00 -6.359875165288208620e+00 2
4.502224283594363108e+00 -4.619316827796650315e+00 2
6.234056487758924625e+00 -8.539403621982048775e-02 2
3.897204285654085609e+00 5.365451193997361479e+00 2
-5.724898684082921463e+00 -2.309322472461722953e+00 2
-2.965069934477901903e+00 -6.323717142091906496e+00 2
-5.763247301291209546e+00 3.906576450200679229e+00 2
6.291097207297335459e+00 -1.631417110822857230e+00 2
-2.948199255030708787e+00 -6.266478261695165308e+00 2
4.102907438363720516e+00 4.383216111690355632e+00 2
2.975564071108853792e+00 -6.203399915533676534e+00 2
-4.821008424643103751e+00 -4.347092426856935532e+00 2
-5.553081114235794757e+00 -3.818125615905800796e+00 2
5.930831862654539322e+00 2.339176103634217796e+00 2
1.416262971027721695e+00 -6.053056061650059050e+00 2
3.895700909944579848e+00 -5.066330508954637324e+00 2
2.236271627256470662e+00 -6.075398232219416883e+00 2
-5.646972266298111442e+00 -3.844423963207513673e+00 2
1.998162764282483073e+00 -6.524092886448642048e+00 2
-3.322969899377585801e+00 5.510568149247045078e+00 2
-1.869279229859381219e+00 6.566327649346311190e+00 2
-3.235822153962562564e-01 6.251675499290976212e+00 2
-2.976786388042954812e+00 -6.140798479742707094e+00 2
2.607250770529824901e+00 -5.509710158251386325e+00 2
6.053197045989851865e+00 2.764771910210352068e+00 2
5.788838397243478262e+00 -2.551955858811098654e+00 2
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Kernel PCA カーネル主成分分析
http://en.wikipedia.org/wiki/Kernel_principal_component_analysis
"""
import numpy as np
import matplotlib.pyplot as plt
# カーネル k(x,y) 2種類
# 利用しない方はコメントアウト
k = lambda x, y: (np.dot(x,y) + 1.0)**2
#k = lambda x, y: np.exp(-np.linalg.norm(x-y)**2/1.0)
# データ読み込み
# kpca.data
# <x1> <x2> <class>
# 6.040760282116731938e-02 2.003600989193874138e-01 0
A = np.loadtxt('kpca.data')
# データ総数
N = len(A)
# 色
color = ['r.', 'g.', 'b.']
# 元データプロット
#for i in range(len(A)):
# plt.plot(A[i,0],A[i,1],color[int(A[i,2])])
#plt.draw()
#plt.show()
# kernel matrix
K = np.zeros((N,N))
for i in range(N):
for j in range(i,N):
K[i,j] = K[j,i] = k(A[i,0:2], A[j,0:2])
# centered kernel matrix
ones = np.mat(np.ones((N,N))) / N
K = K - ones * K - K * ones + ones * K * ones
print "centered kernel matrix:"
print K
# 第一固有値,第二固有値と対応する固有ベクトル
w,v = np.linalg.eig(K)
ind = np.argsort(w)
x1 = ind[-1] # 第一固有値のインデックス
x2 = ind[-2] # 第二固有値のインデックス
print "1st eigenvalue:"
print w[x1]
print "2nd eigenvalue:"
print w[x2]
# プロット
for i in range(N):
plt.plot(v[i,x1],v[i,x2],color[int(A[i,2])])
plt.draw()
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment