{ "info": { "author": "Klaus Greff", "author_email": "klaus.greff@gmx.net", "bugtrack_url": null, "classifiers": [], "description": "=======\nMLizard\n=======\n\nPython machine learning infrastructure project. The idea of MLizard is to make\nit easy to run lots of different experiments on lots of different options,\nconstantly changing or exchanging parts of the process, without loosing track\nof what you did, when you did it, how you did it, what came out of it, which\nfiles are connected to it and so on. So this is how it looks like::\n\n \"\"\"\n # for this demo we use the docstring as config\n alpha = 0.7\n beta = 7\n gamma = \"Foo\"\n \"\"\"\n # at the beginning of the file we create an experiment\n from mlizard.experiment import createExperiment\n ex = createExperiment(\"Demo\", config_string=__doc__)\n\n @ex.stage\n def part0(rnd):\n return rnd.randint(10)\n\n @ex.stage\n def part1(X, alpha, beta, logger):\n X -= alpha\n X *= beta\n logger.info(\"multiplied by %f and added %f\", alpha, beta)\n return X\n\n @main\n def mainFunction():\n # this is the main method, here we put everything together\n X = part0() # note that we do not need to pass rnd\n X = part1(X) # and no alpha, beta, and logger\n\n\nSo we have to create an experiment and decorate all of our functions.\nBut what do we get for this?\n\n* automatic option passing (alpha, beta)\n* a logger\n* a random number generator that is seeded by the experiment\n* automatic caching of intermediate results\n\nMagic Arguments\n===============\nThe experiment can automatically pass options to it's stages. This helps to\nchange many parameters of your experiment without having to pass them around\nmanually. This feature can also be used to easily try different sets of options\nor do whole option-sweeps automatically. There are also two special arguments\ncalled rnd, and logger that the experiment generates.\nBut lets see an simple example first.\n\nSimple example\n--------------\nIf you call a stage you can leave some of the parameters unfilled, and the\nexperiment will try to fill them using it's own options dictionary::\n\n from mlizard.experiment import createExperiment\n ex = createExperiment()\n\n @ex.stage\n def foo(some_option):\n print some_option\n\n foo() # TypeError: foo() is missing value(s) for ['some_option']\n ex.options[\"some_option\"] = 5\n foo() # will print 5\n foo(7) # will print 7\n\nThis will run just fine and print \"5\" because that is the value of \"some_option\"\nin the experiments options. Note however, that those options will typically come\nfrom a config file, or config string.\n\nArgument Priority\n-----------------\nThe experiment will resolve conflicting arguments according to the\nfollowing priority:\n\n#. positional and keyword arguments passed by the caller\n#. options from the experiment\n#. default-values\n\nThis is illustrated by the following example::\n\n @ex.stage\n def foo(a, b, c, d=400, e=500):\n print a, b, c, d, e\n\n ex.options = dict(a=10, b=20, c=30, d=40)\n foo(1, c=3) # prints 1, 20, 3, 40, 500\n\nSpecial arguments\n-----------------\nThe experiment also provides two special arguments called *logger* and *rnd*.\n\nThe *logger* helps you with two things: first it can be used to print out some\nmessages that get logged as you'd expect. Secondly it can be used to report some\nintermediate results such that you can use them for live-plots.\n(See section Logger)\n\nThe second one (*rnd*) is a numpy RandomState object, that you can use to\ngenerate random data. The important fact about this is, that if you provide a\nseed to the experiment then all rnd objects will be deterministically seeded.\nThis means you can easily reproduce an experiment run even though it depended on\nrandomness.\n\n\nRoadmap\n========\n* easy option sweeps\n* report file\n* online results view\n* database of runs/options/results\n* git integration (track version of code for every result)\n\n\nLicense\n=======\nThe MLizard project is published under the Gnu General Public License Version 3.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/MLizard/", "keywords": null, "license": "LICENSE.txt", "maintainer": null, "maintainer_email": null, "name": "MLizard", "package_url": "https://pypi.org/project/MLizard/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/MLizard/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/MLizard/" }, "release_url": "https://pypi.org/project/MLizard/0.1.2/", "requires_dist": null, "requires_python": null, "summary": "Machine Learning workflow automatization", "version": "0.1.2" }, "last_serial": 784650, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "cfa13b46aa6071cbb8adcb13c8aa8b8c", "sha256": "081484ea685bd7829c8110a31b778e75ae611d6c1cab9afcc339924c5731cb06" }, "downloads": -1, "filename": "MLizard-0.1.0.tar.gz", "has_sig": false, "md5_digest": "cfa13b46aa6071cbb8adcb13c8aa8b8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8513, "upload_time": "2012-10-23T19:04:21", "url": "https://files.pythonhosted.org/packages/84/9b/5cd4d0d626219a50a1f0891704dfc4dc83637bf0c899afbea4ce1283b94e/MLizard-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "cab0c9a71637e99c4178f5a83a41a639", "sha256": "652216be5417818a13903c28ddafdebfca4f83122648d15ae0cad4aefb83b6ae" }, "downloads": -1, "filename": "MLizard-0.1.1.tar.gz", "has_sig": false, "md5_digest": "cab0c9a71637e99c4178f5a83a41a639", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8549, "upload_time": "2012-10-26T00:27:07", "url": "https://files.pythonhosted.org/packages/af/e3/d5938dd435839afde50824597f5fd98e3757abeba458ef8ebf6bc2e7181c/MLizard-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "266ee7c27f4dd5541ff428a287240274", "sha256": "4878fa737c11b35c0b1f68c9f890de2cc2c2482166655cfbfd2d3e250fbde235" }, "downloads": -1, "filename": "MLizard-0.1.2.tar.gz", "has_sig": false, "md5_digest": "266ee7c27f4dd5541ff428a287240274", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11070, "upload_time": "2012-10-31T09:15:18", "url": "https://files.pythonhosted.org/packages/4c/4c/689711a866c82d544dcee2c85d072bedab92880e28aeabc89a624640b37a/MLizard-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "266ee7c27f4dd5541ff428a287240274", "sha256": "4878fa737c11b35c0b1f68c9f890de2cc2c2482166655cfbfd2d3e250fbde235" }, "downloads": -1, "filename": "MLizard-0.1.2.tar.gz", "has_sig": false, "md5_digest": "266ee7c27f4dd5541ff428a287240274", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11070, "upload_time": "2012-10-31T09:15:18", "url": "https://files.pythonhosted.org/packages/4c/4c/689711a866c82d544dcee2c85d072bedab92880e28aeabc89a624640b37a/MLizard-0.1.2.tar.gz" } ] }