Open in new window / Try shogun cloud
--- Log opened Sun May 20 00:00:40 2012
-!- blackburn [~blackburn@] has quit [Ping timeout: 252 seconds]00:58
-!- hoijui [] has joined #shogun08:51
-!- shogun-buildbot [] has quit [Quit: buildmaster reconfigured: bot disconnecting]09:13
-!- shogun-buildbot [] has joined #shogun09:14
-!- gsomix [~gsomix@] has joined #shogun10:29
gsomixhi all10:29
-!- n4nd0 [] has joined #shogun10:30
-!- Francis_Chan [~Adium@] has joined #shogun10:35
-!- n4nd0 [] has quit [Ping timeout: 265 seconds]11:02
-!- blackburn [~blackburn@] has joined #shogun11:04
-!- gsomix [~gsomix@] has quit [Ping timeout: 265 seconds]11:47
-!- pluskid [] has joined #shogun12:06
-!- Francis_Chan [~Adium@] has quit [Quit: Leaving.]12:06
-!- hoijui [] has quit [Quit: Leaving]12:26
-!- Francis_Chan [~Adium@] has joined #shogun12:40
-!- n4nd0 [] has joined #shogun12:49
-!- n4nd0 [] has quit [Client Quit]12:53
CIA-113shogun: Soeren Sonnenburg master * rda70cf4 / (133 files in 19 dirs): Split up CLabels into various classes: -
blackburnoh my gosh13:54
blackburnsonney2k: dense?13:56
blackburnis there sparse?13:56
shogun-buildbotbuild #954 of libshogun is complete: Failure [failed compile]  Build details are at  blamelist: sonne@debian.org13:57
-!- vikram360 [~vikram360@] has quit [Ping timeout: 250 seconds]14:08
-!- vikram360 [~vikram360@] has joined #shogun14:09
pluskidblackburn: the new commits on CLabels splits seem to broke your recent DAMCLibLinear15:10
blackburnpluskid: heh yes I know15:10
blackburnworking on it15:10
pluskidcool thanks!15:10
pluskidwaiting for your quick fix to make the code compile again15:11
blackburnhere it comes15:12
CIA-113shogun: Sergey Lisitsyn master * r788043e / (4 files in 2 dirs): Fixed compilation of DA MC Liblinear -
blackburnpluskid: should work now15:12
blackburnlets check if it is working still15:13
shogun-buildbotbuild #955 of libshogun is complete: Success [build successful]  Build details are at
shogun-buildbotbuild #853 of r_static is complete: Failure [failed test_1]  Build details are at  blamelist: blackburn91@gmail.com15:24
shogun-buildbotbuild #874 of cmdline_static is complete: Failure [failed test_1]  Build details are at  blamelist: blackburn91@gmail.com15:31
-!- cronor [] has joined #shogun15:31
shogun-buildbotbuild #763 of octave_static is complete: Failure [failed test_1]  Build details are at  blamelist: blackburn91@gmail.com15:37
-!- pluskid [] has quit [Ping timeout: 244 seconds]15:38
shogun-buildbotbuild #840 of python_static is complete: Failure [failed test_1]  Build details are at  blamelist: blackburn91@gmail.com15:42
-!- pluskid [~pluskid@] has joined #shogun15:55
-!- n4nd0 [] has joined #shogun16:20
n4nd0wow CLabels commit!16:21
n4nd0I feel like a child in Christmas Day :D16:22
-!- blackburn [~blackburn@] has quit [Ping timeout: 240 seconds]16:39
@sonney2kpluskid, any chance that you can drop using the std stuff in and fix the warnings?16:40
@sonney2kI know this is all religious std vs SGVector & stuff but hmmhh maybe you don't mind16:41
@sonney2k(too much)16:41
@sonney2kn4nd0, ok so we have a CLabels base class that should work with you SO framework...16:41
@sonney2kand pluskid you were right most of the effort is really in changing the whole system - splitting things up. I think I will need help from everyone to get things fully stable16:43
CIA-113shogun: iglesias master * r27dd267 / src/shogun/classifier/QDA.h : + little doc QDA #418 -
CIA-113shogun: iglesias master * r21a5be9 / src/shogun/classifier/QDA.cpp : ~ change qda parameters->add to SG_ADD -
CIA-113shogun: Soeren Sonnenburg master * r0fbded0 / (src/shogun/classifier/QDA.cpp src/shogun/classifier/QDA.h): Merge pull request #533 from iglesias/qda -
CIA-113shogun: Chiyuan Zhang master * rbf4e97f / (2 files): Added Margin Loss Decoder -
CIA-113shogun: Chiyuan Zhang master * r3fe856d / (2 files): Added modular interface for LLB Decoder -
CIA-113shogun: Soeren Sonnenburg master * r6f79da5 / (4 files in 2 dirs): Merge pull request #534 from pluskid/multiclass-ecoc -
pluskidsonney2k: OK, I'll fix the warnings, but replace the std stuff with SG stuff is a bit non-trivial here because the use of std::set is rather heavy here. I can try to change things here at my best, but I think this would be at a lower priority16:45
@sonney2kpluskid, could you use shogun's set?16:45
@sonney2kthe one from gsomix?16:45
pluskidI'll look at it16:46
@sonney2kargh gtg16:46
n4nd0sonney2k: yeah, I am adapting what I have so far to the new labels interface, thank you!16:49
pluskidn4nd0: I'm afraid we should make everything runs again before we move on16:49
pluskidfor example, modular examples are broken16:50
n4nd0pluskid: aham, too bad16:50
n4nd0pluskid: I am going to take a look to them16:50
@sonney2kpluskid, sure16:50
@sonney2kI cannot do that alone16:50
* sonney2k re16:50
pluskidyes, cool if we all help to fix things16:51
pluskidbut should be careful not to do duplicated work :D16:51
n4nd0pluskid: btw, do you remember what is the right solution to do when the "non-fast-forward updates were rejected" error pops up16:51
pluskidpush --force is OK16:51
pluskidI tested that16:51
n4nd0pluskid: I have been using lately the strategy you suggested once of deleting the remote branch a moment and then pushing again16:51
n4nd0all right16:52
pluskidthat's OK, too16:52
pluskidjust a bit more steps16:52
@sonney2kpluskid, yeah difficult no idea how to avoid some overlap. I guess you have no problem because you are in a different timezone :)16:53
@sonney2kpluskid, btw are you in good health again?16:53
pluskidsonney2k: hmm, maybe now I can declare that my cold is officially cured :D16:53
n4nd0nice :)16:53
shogun-buildbotbuild #956 of libshogun is complete: Failure [failed compile]  Build details are at  blamelist: fernando.iglesiasg@gmail.com16:54
@sonney2kpluskid, for (int32_t i=0; i < part2.size(); ++i) is not the right fix16:54
@sonney2kpart2.size() is unsigned16:54
@sonney2kso you would need to cast i and part2.size() to index_t16:54
@sonney2kpluskid, good to hear!16:54
pluskidhmm? I changed it to for (index_t i=0; i < part2.size(); ++i)16:55
@sonney2kindex_t is currently int32_t16:56
@sonney2kpluskid, ^16:56
pluskidso I think I should use size_t16:56
-!- cronor [] has quit [Read error: Connection reset by peer]16:56
n4nd0sonney2k, pluskid: is someone fixing python_modular/graphical examples?16:56
@sonney2kwiking wants it to be uint32_t16:56
@sonney2kn4nd0, no feel free16:56
pluskidn4nd0: no AFAIK16:56
@sonney2kI am trying to fix the libshogun ones16:57
n4nd0ok, then I start with them16:57
@sonney2kn4nd0, pluskid please note there is one catch with the new system:16:57
pluskidsonney2k: I'll use size_t here and replace with index_t later when I replace std::vector with SGVector, OK?16:57
@sonney2kwhile e.g. svm uses BinaryLabels or KNN MulticlassLabels16:57
@sonney2kit is not so clear what apply() will return16:58
@sonney2kI decided that it should return CRealLabels16:58
pluskidSince Labels have confidence now, it can return BinaryLabels with confidence set properly, isn't it?16:59
@sonney2kfor the SVm16:59
@sonney2kand CMulticlassLabels for KNN16:59
@sonney2kproblem with the interface currently is that machines all return CLabel*16:59
@sonney2kpluskid, ok16:59
n4nd0sonney2k: what is the idea that makes MulticlassLabels and RealLabels different?17:00
pluskidsonney2k: I think we have two solutions: 1. a *strict* convention that binary machine return binary labels, MC machine return MC labels, etc; 2. use dynamic_cast when down casting Labels17:00
pluskidor else brute force casting a wrong type object will give use mysterious errors that is difficult to identify17:01
@sonney2kpluskid, re labels - maybe - problem is the current evaluation works on labels so for computing ROC it compares real valued outputs with binary labels17:01
pluskidhmm, seems lots of changes to the current code have to be done17:02
@sonney2kn4nd0, they have the same base class but accept different values: binary only +1/-1, mc 0...max_int, real labels anythin in R17:02
pluskidbtw, I find a minor problem when scanning the commits17:02
pluskidI forgot ... let me remind ...17:02
n4nd0sonney2k: aham, RealLabels must be for regression then17:03
@sonney2kn4nd0, yes17:03
@sonney2kargh gtg now17:03
n4nd0I read the same description in the brief and got confused ;)17:03
pluskidsonney2k: wait a min17:03
pluskidoh, no problem17:04
pluskidmy fault17:04
-!- n4nd0 [] has quit [Ping timeout: 252 seconds]17:34
-!- pluskid [~pluskid@] has quit [Quit: Leaving]18:13
-!- Francis_Chan [~Adium@] has quit [Quit: Leaving.]18:13
-!- n4nd0 [] has joined #shogun19:07
-!- PhilTillet [~Philippe@] has joined #shogun19:39
-!- blackburn [~blackburn@] has joined #shogun19:46
-!- PhilTillet [~Philippe@] has quit [Remote host closed the connection]19:54
@sonney2kpluskid, casting will be needed anyways if we want to have some kind of apply() interface20:02
blackburnare you f-ing kidding? :D20:02
blackburnline 57 dense labels20:02
@sonney2kpluskid, but I like the idea of using confidences and having the strict convention binary machine -> binary labels etc20:03
blackburn 55 void CDenseLabels::init()20:03
blackburn 56 {20:03
blackburn 57 ????CDenseLabels::init();20:03
blackburnsonney2k: what should it do?20:04
@sonney2kblackburn, removed20:15
CIA-113shogun: Soeren Sonnenburg master * rfa50f74 / (6 files in 2 dirs): fix libsvm example and don't call pure virtual method (indirectly in constructor) -
blackburnsonney2k: what is the difference between real and dense?20:15
@sonney2kblackburn, what do you think about pluskid's suggestion?20:15
@sonney2k<pluskid> +sonney2k: I think we have two solutions: 1. a *strict* convention that binary machine return binary labels, MC machine return MC labels, etc;20:16
@sonney2kthis one ^20:16
blackburnsonney2k: you mean confidences?20:16
@sonney2kblackburn, dense has pure virtual methods20:16
@sonney2kblackburn, yes returning binary labels for binary  machines20:16
@sonney2kso +1 / -1 only20:17
blackburnI don't mind it20:17
@sonney2kand have the real valued outputs in confidences only20:17
@sonney2kit would drastically change evaluations20:17
blackburnevaluations are pretty simple to change20:18
@sonney2kso you think we should go for it?20:18
blackburnsonney2k: so should we change every example to real/binary labels now?20:18
blackburnsonney2k: what is advantage?20:19
@sonney2kblackburn, it is less confusing20:20
@sonney2kI mean one would expect a binary label from a binary classifier20:20
@sonney2kand if one wants real valued outputs confidences or scores (or whatever we name it) make more sense20:21
@sonney2kit is a lot of work though20:21
blackburnsonney2k: why it is listed that RealLabels are for multiclass?!20:22
@sonney2kmulticlass -> multiclass20:22
blackburn 28 /** @brief Real Labels for multi-class classification20:22
blackburn 29  *20:22
blackburn 30  * valid values for labels are 0...nr_classes-120:22
blackburn 31  */20:22
blackburnoh okay it seems it is just a wrong doc20:23
blackburnI was really confused with it :)20:23
blackburnsonney2k: I'm ok with binary -> binary20:24
blackburnwe broke a lot of things already and it is the best moment to make it less confusing20:24
CIA-113shogun: Soeren Sonnenburg master * r16581fb / src/shogun/labels/RealLabels.h : fix doc of reallabels -
@sonney2kblackburn, do you have time to do it?20:26
blackburnsonney2k: to convert it to binary ?20:26
@sonney2kit is quite intrusive20:27
blackburnI need to get shogun back to work :D20:27
@sonney2kyou will need to change the way apply works in all machines20:27
@sonney2kie. set confidences there20:28
@sonney2kand then call sth like convert_to_binary or MC or whatever20:28
@sonney2kI am also not so sure yet how confidences look like for MC20:28
@sonney2kI mean these are not the outputs of all the ECOC machines...20:29
blackburnsonney2k: for OvR it is quite clear20:29
blackburnmax margin20:29
@sonney2kwhat are the confidences?20:29
blackburnjust the max class margin is ok I think20:29
blackburnmax among classes I mean20:29
blackburnit can be always changed20:30
@sonney2kmax(score) you mean ok20:30
blackburndepends how do you call it he20:30
@sonney2kand for regression we don't have confidences20:30
blackburnsonney2k: I think we should have (labels, confidences) constructor in real labels20:30
@sonney2kGPs will be though20:30
@sonney2kblackburn, I think in all labels it makes sense20:31
blackburnok lets do it20:31
@sonney2khmmhh in binary one could have a confidences -> binary labels conversion function20:32
@sonney2klike label_from_confidence(threshold)20:32
@sonney2kand then it would do the +1/-1 assignment20:32
blackburnI am afraid I do not really understand20:33
@sonney2kmulticlass you need the (labels,confidences) pair20:33
blackburnah automagic labels from confidences20:33
@sonney2kblackburn, a function that does sign(f(x)-threshold)20:33
blackburnwhere can this threshold be used?20:34
@sonney2kI don't understnad20:35
blackburnsonney2k: ok one more Q - why do we store +1 -1 as floats?20:35
@sonney2kit would be threshold=0 by default20:35
blackburnwhy not zero thershould?20:35
@sonney2kblackburn, what else do you suggest?20:36
blackburnBinaryLabels(SGVector<bool>, SGVector<float64_t>20:36
blackburnah ok base class20:36
@sonney2kblackburn, then you have lots of code duplication and overhead is really insignificant20:36
blackburnhmm why do const appear here20:37
blackburnsonney2k: so should we use const SGVector?20:38
blackburni'm confused with it20:38
blackburnok 4-1 and VODKA TIME20:41
CIA-113shogun: Soeren Sonnenburg master * rc4aca39 / src/shogun/multiclass/ecoc/ECOCDiscriminantEncoder.cpp : Merge pull request #535 from pluskid/multiclass-ecoc -
CIA-113shogun: Chiyuan Zhang master * r1d40518 / src/shogun/multiclass/ecoc/ECOCDiscriminantEncoder.cpp : Fix compile error. -
CIA-113shogun: Chiyuan Zhang master * r323fcad / src/shogun/multiclass/ecoc/ECOCDiscriminantEncoder.cpp : Use size_t instead of index_t for std::vector -
@sonney2kblackburn, I never use use const :D20:43
blackburnsonney2k: hmm in binary labels20:44
blackburnsonney2k: will it work with const at all?20:44
blackburnshould work..20:45
-!- n4nd0 [] has quit [Ping timeout: 248 seconds]20:45
@sonney2khmmh I don't even know what it means there20:45
blackburnsonney2k: that src label is not going to be modified20:45
blackburnsrc vector*20:45
@sonney2kahh but the ptrs20:45
blackburnptrs are not changed20:45
blackburnso it would work I think20:45
@sonney2kI mean the things where they are pointing to20:46
blackburnno they are not guarded by const20:46
@sonney2kso it is useless :D20:46
blackburnnot really it denies to e.g. change vector pointer20:46
@sonney2kbut that ptr is copied anyway20:47
blackburnsonney2k: so do you think binary labels should obtain binary from float64 vector?20:48
blackburnby default20:48
@sonney2khmm cool idea20:49
@sonney2kmight be confusing though20:49
@sonney2kbut actually why not!20:49
@sonney2kI mean if it is +1/-1 it won't hurt20:49
blackburnsonney2k: but is this threshold really needed?20:51
@sonney2kblackburn, in constructor I would use the default =0 threshold20:59
@sonney2kbut keep a function that does it in the more general way20:59
blackburnsonney2k: yes I understand but what is the use case of say threshold = 9.5?20:59
@sonney2kfewer false positives21:00
-!- gsomix [~gsomix@] has joined #shogun21:00
-!- gsomix [~gsomix@] has quit [Client Quit]21:00
-!- vikram360 [~vikram360@] has quit [Ping timeout: 252 seconds]21:06
blackburnsonney2k: oops21:16
blackburnlinear machine returns binary labels ok21:16
blackburnbut linear regression??21:16
-!- vikram360 [~vikram360@] has joined #shogun21:26
shogun-buildbotbuild #243 of nightly_all is complete: Success [build successful]  Build details are at
-!- n4nd0 [] has joined #shogun21:48
@sonney2kblackburn, regression returns regression labels21:51
blackburnsonney2k: how??21:51
@sonney2kwe rename them back to regression21:51
@sonney2kahh you mean because they share the apply function?21:52
blackburnI'm currently getting libshogun examples back to work21:52
@sonney2kblackburn, only idea I have is a flag21:53
@sonney2kmark in the machine that it is a regressor21:53
@sonney2kand then return regression labels21:53
blackburnis it really needed? a lot of work and I am not really sure it is needed21:54
@sonney2kthe definition of 'needed' is YMMV21:59
@sonney2kI can tell that I liked pluskid's idea22:00
blackburnsonney2k: currently I lost my confidence with everything that is going on in shogun22:00
@sonney2kas usual22:00
blackburnif we break more things I can lost my confidence at all and that would slow down me22:01
blackburnI believe we should get things to work first22:01
blackburnn4nd0: can you help us?22:01
@sonney2kblackburn, problem really is that I do these big transitions mostly alone22:02
@sonney2kthat is not good because I don't have much time22:02
blackburnsonney2k: I do not understand why do you do it alone22:02
@sonney2kblackburn, well I asked whether you could do SGSparse22:02
@sonney2knot sure who else could help...22:03
@sonney2kit is all too deep IMHO22:03
n4nd0blackburn: I am working on fixing python_modular/graphical22:03
blackburnhah I do not think it is the case when you should blame me ;)22:03
n4nd0blackburn: right now I am with some qda labels22:03
blackburnn4nd0: could you please after focus on python modular in general?22:04
@sonney2kblackburn, I don't understand what you are saying22:04
blackburnMulticlass/Real labels in place22:04
blackburnsonney2k: as usual - nevermind ;)22:04
n4nd0blackburn: sure22:04
@sonney2kI think we should do labels right now22:04
n4nd0blackburn: let's try to ensure that not more than one is working on the same22:04
@sonney2kwhatever right is22:04
@sonney2kanother transition w/ labels few months later just sucks22:05
blackburnn4nd0: I won't work on python modular22:05
blackburnsonney2k: I do not like flag idea22:05
n4nd0blackburn: congrats for the hockey by the way ;)22:05
blackburnoh yeah thanks22:05
blackburnred machine22:05
@sonney2kblackburn, why not? I like it. One can ask machines what types of problems they can solve22:06
blackburnok then lets focus on som? separate tasks22:06
@sonney2kthat's pretty useful22:06
@sonney2kI think I should figure out how I can get the typemap stuff to work such that certain machines return certain label classes22:07
blackburnthat sounds pretty impossible22:08
blackburnyou would always need actual type22:09
@sonney2kCLibLinear's apply function should just return CBinaryLabels22:09
@sonney2kso I can rename / change type22:09
blackburnshit it is so crappy I'm getting mad22:10
@sonney2kother suggestions?22:10
blackburnI'd say if I had22:11
blackburnok so what should I do22:12
@sonney2kblackburn, I would say do the confidence thing with labels22:12
@sonney2kand introduce a machine type flag in machines22:12
@sonney2kthat each machine sets22:12
blackburnsonney2k: why not to add KernelClassifierMachine22:12
@sonney2kI like that btw regardless of what we do with labels22:12
blackburnto avoid adding apply to every f-ing class22:13
blackburnno idea22:13
@sonney2kblackburn, we are again having the problem not to have interfaces22:14
blackburnKernelMachine can be an SGObject22:15
blackburnbut Classifier could be not an SGObject22:15
blackburnwith multiple inheritance we can set up proper apply here22:15
@sonney2kblackburn, hmmhh so we would have kernelmachine -> (kernelclassifiermachine, kernelregressionmachine)22:15
blackburnno diamon22:15
@sonney2kmulticlassmachine is somehow an exception22:16
blackburnand easy way to indicate which problems machine can solve22:16
blackburnanother way is to add more crappy machines22:17
blackburnI can not see any pitfall here22:17
@sonney2kI don't think swig will work for all target langs for that - but never tried22:18
blackburnsonney2k: IRegressor with CRealLabels apply() , IClassifier with CBinaryLabels apply()22:18
blackburnbut impls..22:19
blackburnokay it is not a solution it seems22:20
@sonney2kblackburn, well we don't have that problem w/ the current (new) labels system22:20
blackburnsonney2k: would be pretty cool to have implementations for both regression and classify apply in kernel machine22:21
blackburnand interface could tell which one to use22:21
blackburnhmm wait that should be possible22:22
blackburnwith protected methods22:22
blackburnsonney2k: do you understand?22:22
blackburnsonney2k: kernel machine could hazz apply_regression and apply_classify22:24
blackburnIClassifier would hazzzz22:24
blackburnapply that calls apply_classify22:24
blackburnand returns BinaryLabels22:24
@sonney2kbut we don't need that22:24
@sonney2kif we have the machine type flag22:25
@sonney2kI think I can well live with that22:25
blackburnsonney2k: but no crazy typemaps are needed than22:25
@sonney2kso machines that have multiple options just have an apply_{machine type}22:26
@sonney2kor maybe even all of them ahve22:26
@sonney2kthen we don't need typemaps or anything22:26
@sonney2kand from the C++ api one can still cast around as wanted22:26
blackburnin the suggested solution each machine would have exactly that apply that is needed22:27
@sonney2know I lost you22:27
blackburnsonney2k: deriving from both IClassifier and KernelMachine would mean that we have BinaryLabels apply() that uses kernel machine method for that22:28
@sonney2kblackburn, again we don't know if MI is an option at all22:29
blackburnshould work I think22:29
@sonney2kso I would rather not use it here22:29
@sonney2kfor pure C++ sure22:29
@sonney2kno idea about swig22:30
@sonney2kahh and it would mean that we loose CMachine::apply()22:30
blackburndon't we loose it already22:31
blackburnok then flag in the only option probably22:31
@sonney2kwe just return CBInaryLabels which is cast to CLabels22:31
blackburnok I'm defeated heh22:31
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun22:31
@sonney2kso from C++ side one can check which type it is and cast back22:31
@sonney2konly for swig interfaces this is a problem that cannot type cast22:32
@sonney2kthat is why I like having the apply_classifier etc methods22:32
@sonney2kand if we can have some typemap magic to still use apply() for the cases where there are no conflicts I would just do them22:33
blackburnsonney2k: and rename apply_classifier to apply?22:33
@sonney2kyeah %ignore apply() / %rename ...22:33
@sonney2kactually not rename but something else22:34
@sonney2kblackburn, one more idea - apply gets an extra flag telling which type of labels are wanted22:38
blackburnsonney2k: why?22:39
@sonney2kblackburn, for the kernelmachine case where you want to return binarylabels or regressionlabels22:41
@sonney2kone can just say apply(LT_BINARY)22:41
@sonney2kto get binary labels22:41
@sonney2kor apply(data, LT_BINARY)22:41
@sonney2kso no need for apply_classifier then22:42
@sonney2k...except for swig stuff22:42
@sonney2kI have to sleep now... we should continue discussing tomorrow hopefully with wikiking, n4nd0, pluskid22:43
blackburnI am completely lost what to do now22:43
n4nd0sonney2k: good night22:43
n4nd0blackburn: I got a question here,22:46
n4nd0qda.apply(data).get_labels() fails since get_labels is not defined for Labels22:46
n4nd0but it is for MulticlassLabels22:47
n4nd0what I would like to use here22:47
n4nd0what is the good way to do this "casting" in python?22:47
n4nd0should we defined some constructors in the derived class?22:47
n4nd0CMulticlassLabels(Labels CLabels)22:47
n4nd0maybe I am saying something stupid though22:49
n4nd0this is in python_modular/graphical/qda.py22:49
blackburnwait but why qda is multiclass?22:49
n4nd0it works for multiclass22:50
n4nd0yeah I know ... it should go to multiclass/ instead of classifier/22:50
blackburnQDA is multiclass?!22:50
n4nd0why are you so surprised?22:51
blackburnI've never knew this22:51
blackburnI thought it is binary just as lda22:51
blackburnour lda22:51
n4nd0our lda is binary yes, sonney2k asked me about modifying that to sth similar to qda though22:51
n4nd0but our qda works multiclass directly, no need for multiclass strategies22:51
blackburnhuh cool22:52
blackburnI should try this22:52
n4nd0just think of it, it is not that weird actually22:52
n4nd0you are just fitting data into Gaussians22:52
n4nd0labeled data22:52
blackburnyeah not weird at all22:52
n4nd0sorry, the other way round22:53
n4nd0fitting Gaussians into data :P22:53
n4nd0anyhow, what do you think about the issue I came with?22:53
blackburnyeah wrong likelihood hehe22:54
blackburnn4nd0: it is actually what we were discussing22:54
n4nd0blackburn: can't we downcast in python somehow?22:55
-!- vikram360 [~vikram360@] has quit [Ping timeout: 250 seconds]22:55
blackburnwe can I think but I am not sure it is the solution22:56
* wiking just arrived from the airport22:56
blackburnheh welcome home22:56
n4nd0yeah welcome wiking22:56
wikingi'll have to start reading logs22:56
n4nd0did you have a good time in the conference?22:57
wikingyeah it was nice22:57
wikingbut was more than enough22:57
n4nd0wiking: prepare some coffe if you plan to read them :P22:57
n4nd0in what sense?22:57
n4nd0I guess it is better to fix what we have now .... or?22:58
blackburnyes fuck doc if we have everything b0rken22:59
n4nd0I don't see how to approach this problem ...23:00
blackburnyes I am in deep depression :D23:00
wikingblackburn: i was just about to ask, how that went?23:02
blackburnwiking: what went?23:03
wikingdocumentation session23:03
n4nd0blackburn: should we discuss about how to do this or wait for sonney2k?23:03
blackburnwiking: we didn't do anything23:03
blackburnwe need to fix that piece of23:03
blackburnn4nd0: oook let me try to think23:04
blackburnit always hard for me23:04
n4nd0so let's define the problem clearly first23:04
n4nd0the problem I found is for the python interface23:05
n4nd0apply() return Labels23:05
blackburnwe need to have general apply23:05
blackburnbut we need to not have general apply23:05
n4nd0I think that the solution to what I am talking about is just to downcast23:07
n4nd0so I will go for doing a copy constructor23:07
blackburndowncast is soooooo damn23:08
n4nd0but we don't do it explicitily if we have the copy constructor23:08
n4nd0we could make23:08
blackburnthat sucks23:09
n4nd0why? haha23:09
blackburncasting is not a pythonic way at all23:09
blackburnit would be ok in java though23:10
n4nd0but there is no cast there23:13
n4nd0we are just creating an object23:13
blackburnn4nd0: there should be a swig hack for that..23:13
n4nd0without the need of the constructor?23:13
blackburnyes it should be actual type not just clabels23:14
-!- cronor [] has joined #shogun23:15
n4nd0blackburn: so you think that to do CMulticlassLabels::CMulticlassLabels(const CLabels& orig) is not a good approach23:20
blackburnno having this constructor is ok23:21
n4nd0mmm but one moment, where do we get the vector labels from?23:21
n4nd0I mean, CLabels doesn't have it23:21
n4nd0all right, so was that the problem you were talking about?23:23
blackburnin general23:23
n4nd0what possibilities do we have to solve this?23:25
n4nd0taking this into account, I understand that we *need* that apply returns specialized labels23:25
blackburnhmmm I suggest to rm -rf shogun23:25
n4nd0wtf man, c'mon - we solve this ;)23:26
blackburnI see no solution at all :D23:26
n4nd0I see solution with templates23:27
n4nd0CLabels is templated23:27
n4nd0blackburn: what were the other possibilities you and sonney2k were discussing?23:29
blackburnn4nd0: I guess they all are related to some casting23:30
n4nd0blackburn: even if apply returns CLabels?23:30
blackburnI suggested to add different apply's23:31
blackburnbut it makes apply() in CMachine useless23:31
blackburnI like templates more..23:35
blackburnn4nd0: another suggestion was to add interfaces23:41
blackburnbut not clear whether it can be used from swig23:41
n4nd0blackburn: how to add those interfaces?23:42
n4nd0CLabels is already an abstract class23:42
blackburnn4nd0: class IClassifier { BinaryLabels* apply(CFeatures* data = NULL) { apply_classifier(data); }  }23:43
n4nd0mmm I see23:44
n4nd0I think this is a fun problem :P23:44
blackburnn4nd0: I think we need a few bottles for that23:44
n4nd0let's see which is the best solution we find23:44
blackburn(of vodka you know)23:45
n4nd0haha yeah, got you ;)23:45
blackburnballmer peak23:46
n4nd0found it23:46
n4nd0haha that's fun23:47
blackburnn4nd0: with that 'interfaces' I've suggested we would lost CMachine::apply23:47
blackburnbecause it is 'specialized' in machines23:48
n4nd0to be honest what I like the most is to use templates here23:49
n4nd0I am not sure this will solve all the problems23:49
n4nd0because the thing is23:51
n4nd0what if we define specialized methods in the subclasses23:51
n4nd0how could they be used without casting the class to the subclass?23:51
blackburn that's so damn sincere23:52
n4nd0you see23:52
n4nd0Sweden is a nice country to live in23:53
n4nd0if you know what I mean ...23:53
blackburnn4nd0: do you know why did he wear demitra's shirt23:53
blackburnn4nd0: demitra leaved national team in 2011 and he died in plane crash23:53
n4nd0what is the accident where several hockey players died?23:54
blackburnthat crash of lokomotiv ice hockey club23:54
blackburnyes whole team23:54
blackburnokay about subclassing23:55
blackburnwe cannot specialize apply in kernelmachine23:55
blackburnbecause kernelmachine is both for regression and classify23:56
-!- cronor_ [] has joined #shogun23:57
n4nd0we should account for that too23:59
n4nd0if apply always returns CLabels23:59
--- Log closed Mon May 21 00:00:02 2012