Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add kmeans page to cookbook #3183

Merged
merged 1 commit into from
Jun 15, 2016
Merged

Conversation

OXPHOS
Copy link
Member

@OXPHOS OXPHOS commented May 5, 2016

  • There's no parameter CLabels in class CKMeans, so I can't find a way to use apply_*, eval.evaluate, so as to compare test and training dataset.
  • Though I didn't see why CKMeans cannot have CLabels - we can just label the clusters 1..N.
  • I thought about evaluating the clustering performance by calculating the Euclidean distances between centers of training dataset and test dataset, but there's no handy method for now.
  • I didn't see the difference between dataset fm_train_real.dat and classifier_binary__2d_linear_features_train.datbut I think it doesn't really matter which one to use..?

@OXPHOS
Copy link
Member Author

OXPHOS commented May 5, 2016

Some general issues -

  1. I ran into the same problem as in OSX Segmentation fault: 11 #3029 when I tried to run clustering_kmeans_modular.py. Import of modshogun resulted in segmentation fault 11 and I had no idea why.
  2. I was trying to translate the meta scripts to other languages. I did ./generate.py --input examples --output outputs, but was told ctags cannot be NoneType. The package ctags can be found in cmake: Ctags flavour: Exuberant (?). I haven't looked into this problem yet.

@lisitsyn
Copy link
Member

lisitsyn commented May 5, 2016

@OXPHOS I will take a look at ctags issue. This was actually caused by me.

@Saurabh7
Copy link
Contributor

Saurabh7 commented May 6, 2016

@OXPHOS

@OXPHOS
Copy link
Member Author

OXPHOS commented May 11, 2016

@lisitsyn Hey the error message is interestingly different from the last time I submitted but I guess it still has something to do with ctags...? I cannot make meta-examples at all now.

Please see below for details. Thanks!

Built target ctags
Generating examples from meta-language
Traceback (most recent call last):
  File "/Users/zora/Github/shogun/examples/meta/generator/generate.py", line 118, in <module>
    includedTargets=args.targets, storeVars=storeVars)
  File "/Users/zora/Github/shogun/examples/meta/generator/generate.py", line 58, in translateExamples
    storeVars=storeVars if target['FileExtension']==".cpp" else False)
  File "/Users/zora/Github/shogun/examples/meta/generator/translate.py", line 365, in translate
    return translator.translateProgram(ast["Program"], programName, tags, storeVars)
  File "/Users/zora/Github/shogun/examples/meta/generator/translate.py", line 56, in translateProgram
    dependencies=self.dependenciesString(),
  File "/Users/zora/Github/shogun/examples/meta/generator/translate.py", line 121, in dependenciesString
    allClassDependencies = template.substitute(classlist=self.seperatedClassDependencies("AllClasses"))
  File "/Users/zora/Github/shogun/examples/meta/generator/translate.py", line 159, in seperatedClassDependencies
    csdependencies += elementTemplate.substitute(element=x, include=self.getIncludePathForClass(x))
  File "/Users/zora/Github/shogun/examples/meta/generator/translate.py", line 181, in getIncludePathForClass
    raise Exception('Failed to obtain include path for %s' % (' or '.join(variants)))
Exception: Failed to obtain include path for int32_t or Cint32_t or int32_t or Cint32_t
make[3]: *** [examples/meta/CMakeFiles/meta_examples] Error 1
make[2]: *** [examples/meta/CMakeFiles/meta_examples.dir/all] Error 2
make[1]: *** [doc/cookbook/CMakeFiles/cookbook.dir/rule] Error 2

@OXPHOS OXPHOS force-pushed the cookbook branch 2 times, most recently from dcc6aed to 2f7f73f Compare May 11, 2016 23:47
@@ -0,0 +1,47 @@
==================
:math:`k`-means clustering
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minors: Capital K please. Also, can you avoid the math in the header (only there)

@OXPHOS
Copy link
Member Author

OXPHOS commented May 15, 2016

Error:

 28/32 Test #29: generated_ruby-classifier-kmeans ................................***Failed    0.10 sec
 /opt/shogun/build/examples/meta/ruby/classifier/kmeans.rb:28:in `<main>': undefined method `set_mbKMeans_params' for #<Modshogun::KMeans:0x0000000188fb98> (NoMethodError)

@karlnapf
Copy link
Member

Interesting. Can you reproduce this locally?

@OXPHOS
Copy link
Member Author

OXPHOS commented May 17, 2016

I did cmake -DRubyModular=on .. and make.
And in build/examples/meta/ I ran make test, I failed all ruby examples without a given reason, while all cpp examples passed.

Also I tried python modular and they failed too. Did I miss anything?

@karlnapf
Copy link
Member

What error are they failing on?

@karlnapf
Copy link
Member

You can also run the meta examples manually. What happens then?

@OXPHOS
Copy link
Member Author

OXPHOS commented May 19, 2016

I don't think any specific info is provided. Do you mind showing me how to run meta example manually? Thanks.

Run make test:

Running tests...
Test project /Users/zora/Github/shogun/build/examples/meta
      Start  1: meta-examples-generator
 1/19 Test  #1: meta-examples-generator ...........................................   Passed    2.37 sec
      Start  2: generated_cpp-gaussian_naive_bayes
 2/19 Test  #2: generated_cpp-gaussian_naive_bayes ................................   Passed    0.09 sec
      Start  3: generated_cpp-knn
 3/19 Test  #3: generated_cpp-knn .................................................   Passed    0.05 sec
      Start  4: generated_cpp-linear_svm
 4/19 Test  #4: generated_cpp-linear_svm ..........................................   Passed    0.06 sec
      Start  5: generated_cpp-gaussian_process_regression
 5/19 Test  #5: generated_cpp-gaussian_process_regression .........................   Passed    0.21 sec
      Start  6: generated_cpp-kernel_ridge_regression
 6/19 Test  #6: generated_cpp-kernel_ridge_regression .............................   Passed    0.04 sec
      Start  7: generated_cpp-linear_ridge_regression
 7/19 Test  #7: generated_cpp-linear_ridge_regression .............................   Passed    0.04 sec
      Start  8: generated_python-classifier-gaussian_naive_bayes
 8/19 Test  #8: generated_python-classifier-gaussian_naive_bayes ..................***Failed    0.26 sec
      Start  9: generated_python-classifier-knn
 9/19 Test  #9: generated_python-classifier-knn ...................................***Failed    0.04 sec
      Start 10: generated_python-classifier-linear_svm
10/19 Test #10: generated_python-classifier-linear_svm ............................***Failed    0.03 sec
      Start 11: generated_python-gaussian_processes-gaussian_process_regression
11/19 Test #11: generated_python-gaussian_processes-gaussian_process_regression ...***Failed    0.03 sec
      Start 12: generated_python-regression-kernel_ridge_regression
12/19 Test #12: generated_python-regression-kernel_ridge_regression ...............***Failed    0.03 sec
      Start 13: generated_python-regression-linear_ridge_regression
13/19 Test #13: generated_python-regression-linear_ridge_regression ...............***Failed    0.03 sec
      Start 14: generated_ruby-classifier-gaussian_naive_bayes
14/19 Test #14: generated_ruby-classifier-gaussian_naive_bayes ....................***Failed    0.18 sec
      Start 15: generated_ruby-classifier-knn
15/19 Test #15: generated_ruby-classifier-knn .....................................***Failed    0.04 sec
      Start 16: generated_ruby-classifier-linear_svm
16/19 Test #16: generated_ruby-classifier-linear_svm ..............................***Failed    0.04 sec
      Start 17: generated_ruby-gaussian_processes-gaussian_process_regression
17/19 Test #17: generated_ruby-gaussian_processes-gaussian_process_regression .....***Failed    0.05 sec
      Start 18: generated_ruby-regression-kernel_ridge_regression
18/19 Test #18: generated_ruby-regression-kernel_ridge_regression .................***Failed    0.05 sec
      Start 19: generated_ruby-regression-linear_ridge_regression
19/19 Test #19: generated_ruby-regression-linear_ridge_regression .................***Failed    0.04 sec

37% tests passed, 12 tests failed out of 19

Total Test time (real) =   3.77 sec

The following tests FAILED:
      8 - generated_python-classifier-gaussian_naive_bayes (Failed)
      9 - generated_python-classifier-knn (Failed)
     10 - generated_python-classifier-linear_svm (Failed)
     11 - generated_python-gaussian_processes-gaussian_process_regression (Failed)
     12 - generated_python-regression-kernel_ridge_regression (Failed)
     13 - generated_python-regression-linear_ridge_regression (Failed)
     14 - generated_ruby-classifier-gaussian_naive_bayes (Failed)
     15 - generated_ruby-classifier-knn (Failed)
     16 - generated_ruby-classifier-linear_svm (Failed)
     17 - generated_ruby-gaussian_processes-gaussian_process_regression (Failed)
     18 - generated_ruby-regression-kernel_ridge_regression (Failed)
     19 - generated_ruby-regression-linear_ridge_regression (Failed)
Errors while running CTest
make: *** [test] Error 8

@karlnapf
Copy link
Member

Just run the generated code listing or compiled binary from its directory

On Thursday, 19 May 2016, OXPHOS notifications@github.com wrote:

I don't think any specific info is provided. Do you mind showing me how to
run meta example manually? Thanks.

Run make test:

Running tests...
Test project /Users/zora/Github/shogun/build/examples/meta
Start 1: meta-examples-generator
1/19 Test #1: meta-examples-generator ........................................... Passed 2.37 sec
Start 2: generated_cpp-gaussian_naive_bayes
2/19 Test #2: generated_cpp-gaussian_naive_bayes ................................ Passed 0.09 sec
Start 3: generated_cpp-knn
3/19 Test #3: generated_cpp-knn ................................................. Passed 0.05 sec
Start 4: generated_cpp-linear_svm
4/19 Test #4: generated_cpp-linear_svm .......................................... Passed 0.06 sec
Start 5: generated_cpp-gaussian_process_regression
5/19 Test #5: generated_cpp-gaussian_process_regression ......................... Passed 0.21 sec
Start 6: generated_cpp-kernel_ridge_regression
6/19 Test #6: generated_cpp-kernel_ridge_regression ............................. Passed 0.04 sec
Start 7: generated_cpp-linear_ridge_regression
7/19 Test #7: generated_cpp-linear_ridge_regression ............................. Passed 0.04 sec
Start 8: generated_python-classifier-gaussian_naive_bayes
8/19 Test #8: generated_python-classifier-gaussian_naive_bayes .................._Failed 0.26 sec
Start 9: generated_python-classifier-knn
9/19 Test #9: generated_python-classifier-knn ...................................
_Failed 0.04 sec
Start 10: generated_python-classifier-linear_svm
10/19 Test #10: generated_python-classifier-linear_svm ............................_Failed 0.03 sec
Start 11: generated_python-gaussian_processes-gaussian_process_regression
11/19 Test #11: generated_python-gaussian_processes-gaussian_process_regression ...
_Failed 0.03 sec
Start 12: generated_python-regression-kernel_ridge_regression
12/19 Test #12: generated_python-regression-kernel_ridge_regression ..............._Failed 0.03 sec
Start 13: generated_python-regression-linear_ridge_regression
13/19 Test #13: generated_python-regression-linear_ridge_regression ...............
_Failed 0.03 sec
Start 14: generated_ruby-classifier-gaussian_naive_bayes
14/19 Test #14: generated_ruby-classifier-gaussian_naive_bayes ...................._Failed 0.18 sec
Start 15: generated_ruby-classifier-knn
15/19 Test #15: generated_ruby-classifier-knn .....................................
_Failed 0.04 sec
Start 16: generated_ruby-classifier-linear_svm
16/19 Test #16: generated_ruby-classifier-linear_svm .............................._Failed 0.04 sec
Start 17: generated_ruby-gaussian_processes-gaussian_process_regression
17/19 Test #17: generated_ruby-gaussian_processes-gaussian_process_regression .....
_Failed 0.05 sec
Start 18: generated_ruby-regression-kernel_ridge_regression
18/19 Test #18: generated_ruby-regression-kernel_ridge_regression ................._Failed 0.05 sec
Start 19: generated_ruby-regression-linear_ridge_regression
19/19 Test #19: generated_ruby-regression-linear_ridge_regression .................
_Failed 0.04 sec

37% tests passed, 12 tests failed out of 19

Total Test time (real) = 3.77 sec

The following tests FAILED:
8 - generated_python-classifier-gaussian_naive_bayes (Failed)
9 - generated_python-classifier-knn (Failed)
10 - generated_python-classifier-linear_svm (Failed)
11 - generated_python-gaussian_processes-gaussian_process_regression (Failed)
12 - generated_python-regression-kernel_ridge_regression (Failed)
13 - generated_python-regression-linear_ridge_regression (Failed)
14 - generated_ruby-classifier-gaussian_naive_bayes (Failed)
15 - generated_ruby-classifier-knn (Failed)
16 - generated_ruby-classifier-linear_svm (Failed)
17 - generated_ruby-gaussian_processes-gaussian_process_regression (Failed)
18 - generated_ruby-regression-kernel_ridge_regression (Failed)
19 - generated_ruby-regression-linear_ridge_regression (Failed)
Errors while running CTest
make: *** [test] Error 8


You are receiving this because you commented.
Reply to this email directly or view it on GitHub
#3183 (comment)

Sent from my phone

@OXPHOS
Copy link
Member Author

OXPHOS commented May 21, 2016

Aha @karlnapf If this is what you refer to - $ruby build/examples/meta/python/classifier/knn.rb
I have the same modshogun issue

l_require.rb:55:in `require': cannot load such file -- modshogun (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from build/examples/meta/ruby/classifier/knn.rb:1:in `<main>'

@karlnapf
Copy link
Member

That is weird. Is it the same error as you get on travis?
Also, your Python examples also seem to fail, why is that? Are you sure your build is working fine?

@OXPHOS
Copy link
Member Author

OXPHOS commented May 24, 2016

@karlnapf So I tried both make install and add path.
Python will crash every time I try to run any example (real crash kind of crash)
Ruby returns the same error as on travis for kmeans.rb

Mac148934:classifier zora$ ruby kmeans.rb 
/Library/Ruby/Site/2.0.0/universal-darwin14/modshogun.bundle: warning: rb_define_const: invalid name `__MAC_10_8' for constant
kmeans.rb:28:in `<main>': undefined method `set_mbKMeans_params' for #<Modshogun::KMeans:0x007fbc051695e0> (NoMethodError)

@karlnapf
Copy link
Member

Can we discuss this in another thread?

@OXPHOS
Copy link
Member Author

OXPHOS commented May 27, 2016

@karlnapf This should be moved to clustering as well. What do you think of the ruby issue? You want to open a new thread for it?

@karlnapf
Copy link
Member

Yes move it!
Is the current verison in the PR producing the problems you mentioend? Then I will close locally and check

@karlnapf
Copy link
Member

Ill just use this version to check now

@OXPHOS
Copy link
Member Author

OXPHOS commented May 27, 2016

@karlnapf yes this is the version gives problems. thx.


----------
References
----------
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you add david barbers book as reference as well?

@karlnapf
Copy link
Member

karlnapf commented Jun 9, 2016

Ok travis failure is from gmm. As soon as the minor adjustments in the rst are made, we can (finally!) merge :)

@OXPHOS
Copy link
Member Author

OXPHOS commented Jun 9, 2016

@karlnapf can check again :)

@OXPHOS
Copy link
Member Author

OXPHOS commented Jun 10, 2016

The R is also failing..

In other words, its objective is to minimize:

.. math::
x\argmin_\mathbf{S} \sum_{i=1}^{k}\sum_{\mathbf{x}\in S_k}\left \|\boldsymbol{x} - \boldsymbol{\mu}_i \right \|^{2}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this x in the beginning should not be there :)

@karlnapf
Copy link
Member

karlnapf commented Jun 10, 2016

Some minor adjustments are needed. A rebase against develop should make travis happy (I disabled R meta examples)

@OXPHOS OXPHOS force-pushed the cookbook branch 2 times, most recently from 435a0cb to 5956565 Compare June 11, 2016 03:56
@OXPHOS
Copy link
Member Author

OXPHOS commented Jun 11, 2016

@karlnapf I tried ~30 times on local and the test can be passed, but it keeps failing on travis..So I'll put fixed_centers() back for now but I don't think we should show that in the cookbook.

@karlnapf
Copy link
Member

fixed centers obviously changes the algorithm (and the integration test data)
The point I was making: do we need that? If so, you should mention what it does.
Though I preferred if you changed the integration test data and removed it

@OXPHOS
Copy link
Member Author

OXPHOS commented Jun 14, 2016

@karlnapf I updated the integration test shogun-toolbox/shogun-data#101
I'll update the meta example once the data is merged. thx!

@karlnapf
Copy link
Member

Merged :)

@OXPHOS OXPHOS force-pushed the cookbook branch 2 times, most recently from 98e01af to c3c2daa Compare June 14, 2016 15:32
@karlnapf
Copy link
Member

Next time you squash: please put a meaningful commit message.
"Add kmeans cookbook and meta example"

@karlnapf
Copy link
Member

Waiting for travis and then merging

@OXPHOS
Copy link
Member Author

OXPHOS commented Jun 14, 2016

[ 98%] Building CXX object examples/meta/cpp/CMakeFiles/kmeans.dir/clustering/kmeans.cpp.o
/opt/shogun/build/examples/meta/cpp/clustering/kmeans.cpp:31:42: error: use of undeclared identifier 'KMM_LLOYD'
auto kmeans = some<CKMeans>(2, distance, KMM_LLOYD);
                                         ^
/opt/shogun/build/examples/meta/cpp/clustering/kmeans.cpp:44:45: error: use of undeclared identifier 'KMM_MINI_BATCH'
auto kmeans_mb = some<CKMeans>(2, distance, KMM_MINI_BATCH);
                                            ^
2 errors generated.
make[2]: *** [examples/meta/cpp/CMakeFiles/kmeans.dir/clustering/kmeans.cpp.o] Error 1
make[1]: *** [examples/meta/cpp/CMakeFiles/kmeans.dir/all] Error 2
make: *** [all] Error 2

EDIT:
Just recalled KMeans was updated

@karlnapf
Copy link
Member

Aaaand merging

@karlnapf karlnapf merged commit 59c003f into shogun-toolbox:develop Jun 15, 2016
@OXPHOS OXPHOS deleted the cookbook branch June 22, 2016 22:18
karasikov pushed a commit to karasikov/shogun that referenced this pull request Apr 15, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants