Archive for the 'Tecnologí­a' Category

Fast bindings for LibSVM in scikits.learn

Tuesday, March 9th, 2010

LibSVM is a C++ library that implements several Support Vector Machine algorithms that are commonly used in machine learning. It is a fast library that has no dependencies and most machine learning frameworks bind it in some way or another. LibSVM comes with a Python interface written in swig, but this interface is inherently slow […]

scikits.learn coding sprint in Paris

Thursday, March 4th, 2010

Yesterday we had an extremely productive coding sprint for the scikits.learn. The idea was to put people with common interests in a room and make them work in a single codebase.
Alexandre Gramfort and Olivier Grisel worked on GLMNet, Bertrand Thirion and Gaël Varoquaux worked on univariate feature selection and Vincent worked on Bayesian Regression.

I […]

Scikit-learn 0.1

Monday, February 1st, 2010

Today I released the first public version of Scikit-Learn (release notes).
It’s a python module implementing some machine learning algorithms, and it’s shaping quite good. For this release I did not want to do any incompatible changes, so most of them are just bug fixes and updates.
For the next release, however, some more radical changes […]

scikit-learn project on sourceforge

Thursday, January 7th, 2010

This week we created a sourceforge project to host our development of scikit-learn. Although the project already had a directory in scipy’s repo, we needed more flexibility in the user management and in the mailing list creation, so we opted for SourceForge.
To be honest, after using git and Google Code for bug tracking, I was […]

Winter in Paris is not funny

Tuesday, December 22nd, 2009

This week I arrived to the place where I will be working the following two years: Neurospin.

It’s a research center located 20 km from Paris, and so far things are going smoothly: the place is beautiful, work is great and food is excellent. Well OK, I do miss some things from Spain and weather is […]

Learning, Machine Learning

Tuesday, December 15th, 2009

My new job is about managing an open source package for machine learning in Python. I’ve had some experience with Python now, but I am a total newbie in the field of machine learning, so my first task will be to find a good reference book in the subject and start reading.
The books I’ve come […]

Summer of Code is over

Saturday, September 5th, 2009

Google Summer of Code program is officially over. It has been four months of intense work, exciting benchmarks and patch reviewing. It was a huge pleasure working with you guys!
As for the project, I implemented a complete logic module and then an assumption system for sympy (sympy.logic, sympy.assumptions, sympy.queries). I even had time to make […]

Speed improvements for ask() (sympy.queries.ask)

Thursday, August 20th, 2009

I managed to overcome the overhead in ask() that arises when converting between symbol and integer representation of sentences in conjunctive normal.
The result went beyond what I expected. The test suite for the query module got 10x times faster in my laptop. From 26 seconds, it descended to an impressive 2.03 secs. There is still […]

Logic module (sympy.logic): improving speed

Tuesday, August 18th, 2009

Today I’ve been doing some speed improvements for the logic module. More precisely, I implemented an efficient internal representation for clauses in conjunctive normal form.
In practice this means a huge performance boost for all problems that make use the function satisfiable() or dpll_satisfiable(). For example, test_dimacs.py has moved from 2.7 seconds to an impressive 0.3 […]

Refine module

Monday, August 17th, 2009

This commit introduced a new module in sympy: the refine module.
The purpose of this module is to simplify expressions when they are bound to assumptions. For example, if you know that x>0, then you can simplify abs(x) to x. This code was traditionally embedded into the core, but now this will be part of an […]

Query module - finally in trunk

Monday, August 10th, 2009

The query module is finally in the main SymPy repository. I made substantial changes since last post, most of them at the user interface level (thanks to Vinzent and Mateusz for many insightful comments).
Main function is ask(), which replaces the old expression.is_* syntax. You can ask many things. For example, you can ask if a […]

django, change language settings dynamically

Friday, August 7th, 2009

After some failed attempts, I just found how to change the language settings dynamically in django, and I thought it could be useful to someone. Just use function activate() from django.utils.translation. For example:

from django.utils.translation import activate
activate(‘es-ES’)

will change global language settings to ‘es-ES’ (Spain spanish). I use it because I have two forms and I want […]

can we merge now, pleeease ?

Tuesday, July 21st, 2009

Three months after I began to write sympy.queries, I feel it’s about time to include it in sympy’s trunk, so today I sent for review 4 patches that implement the complete query module.
It’s been a lot of fun, but it has also caused me some headaches … specially last month trying to have the code […]

Refine module, proof of concept

Thursday, July 9th, 2009

The 0.6.5 release of SymPy is taking longer than expected because some bugs in the testing framework, so my query module is not merged into trunk (yet). In the meantime, I am implementing a refine module (very little code is available yet).
The refine module implements a refine() function (better names accepted) that would work […]

Preparing a new release

Tuesday, June 30th, 2009

Last days I’ve been busy preparing the first public beta of SymPy 0.6.5. Most of the time was spent solving a bug that made documentation tests fail under python2.4, but now that this is solved, I hope that by the end of the week we could have a final release.
When this release is published, we’ll […]

Queries and performance

Tuesday, June 23rd, 2009

After some hacking on the queries module, I finally got it right without the limitations of past versions. You can check it out from my repo http://fseoane.net/git/sympy.git, branch master.
It now relies even more on logic.inference.satisfiable(), which is just an implementation of the DPLL algorithm. Bad news is that (my implementation of ) dpll_satisfiable() is SLOW, […]

Reading CNF files

Saturday, June 20th, 2009

The DIMACS CNF file format is used to define a Boolean expression, written in conjunctive normal form, that may be used as an example of the satisfiability problem.
The new logic module (sympy.logic) can read the content of a cnf file and transform it into a boolean expression suitable for use in other methods.
For example, let […]

Logic module merged

Friday, June 19th, 2009

Yesterday I finally merged the logic module in sympy’s official master branch, and should be released together with SymPy 0.6.5.
Next thing to do: profile the code and write some docs before the release.

The boolean satisfiability problem

Monday, June 15th, 2009

Most annoying problem in my implementation of the query system is that it will not solve implications if the implicates are far away from each other. For instance, if the graph of known facts is something like this

Integer —-> Rational –> Real –> Complex
^ ^
| |
[…]

Initial implementation of the query system

Friday, June 12th, 2009

I sent some patches to sympy-patches with an initial implementation of the query system.
You can check it out by pulling from my branch:
git pull http://fseoane.net/git/sympy.git master
into your sympy repo.
Some examples of what you can do (sample isympy session):
In [1]: query(x, positive=True)
Returns None, as we do not know whether x is positive or not.
In [2]: query(abs(x), […]