{ "info": { "author": "Aaron Janse", "author_email": "gitduino@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Artificial Intelligence" ], "description": "stick-bug-ml\n============\n\nA framework to ease the burden of organizing code of a supervised\nmachine learning system.\n\nIt provides decorators that manage data & pass it between common steps\nin building a machine learning system, such as: - loading the dataset -\npreprocessing - feature generation - model definition\n\nWhile doing this, it keeps the global namespace free of clutter such as\nthat from an endless chain of features and models.\n\nIn addition, it makes it easy to put new, real life, data through the\nexact same process that training data goes through.\n\nInstallation\n------------\n\nInstall simply via ``pip`` (Python 3):\n\n.. code:: bash\n\n $ pip install stickbugml\n\nDependencies: - Python 3 - sklearn - pandas - numpy\n\nExample\n-------\n\nNote: there is also a great `example for use in Jupyter\nNotebooks `__\n\nFirst, import this library:\n\n.. code:: python\n\n import stickbugml\n from stickbugml.decorators import dataset, feature, model\n\nLoad your dataset:\n\n.. code:: python\n\n import seaborn.apionly as sns\n import pandas as pd\n\n @dataset(train_valid_test=(0.6, 0.2, 0.2)) # define your train/test/validation data splits\n def raw_dataset():\n titanic_dataset = sns.load_dataset('titanic')\n\n # Drop NaN rows for simplicity\n titanic_dataset.dropna(inplace=True)\n\n # Extract X and y\n X = titanic_dataset.drop('survived', axis=1)\n y = titanic_dataset['survived']\n return X, y\n\n print(raw_dataset.head()) # yes, this does work! raw_dataset is now a pandas DataFrame\n\n(Optionally) do some pre-processing:\n\n.. code:: python\n\n @preprocess\n def preprocessed_dataset(X):\n # Encode categorical columns\n categorical_column_names = [\n 'sex', 'embarked', 'class',\n 'who', 'adult_male', 'deck',\n 'embark_town', 'alive', 'alone']\n\n X = pd.get_dummies(X,\n columns=categorical_column_names,\n prefix=categorical_column_names)\n\n return X\n\n print(preprocessed_dataset.head()) # See the first code block for explaination\n\nGenerate some features:\n\n.. code:: python\n\n from sklearn import decomposition\n import numpy as np\n\n @feature('pca')\n def pca_feature(X):\n pca = decomposition.PCA(n_components=3)\n pca.fit(X)\n pca_out = pca.transform(X)\n\n pca_out = np.transpose(pca_out, (1, 0))\n return pd.DataFrame(pca_out)\n\n # let's preview\n print(pca_feature.head()) # See the first code block for explaination\n\n # you can add more features, btw\n\nAnd define your (machine learning) model(s):\n\n.. code:: python\n\n import xgboost as xgb\n\n @model('xgboost')\n def xgboost_model():\n def define(num_columns):\n return None # xgboost models aren't pre-defined\n\n\n def train(model, params, train, validation):\n params['objective'] = 'binary:logistic' # Static parameters can be defined here\n params['eval_metric'] = 'logloss'\n\n d_train = xgb.DMatrix(train['X'], label=train['y'])\n d_valid = xgb.DMatrix(validation['X'], label=validation['y'])\n\n watchlist = [(d_train, 'train'), (d_valid, 'valid')]\n\n trained_model = xgb.train(params, d_train, 2000, watchlist, early_stopping_rounds=50, verbose_eval=10)\n\n return trained_model\n\n def predict(model, X):\n return model.predict(xgb.DMatrix(X))\n\n return define, train, predict\n\nNow you can train your model, trying out different parameters if you\nwant:\n\n.. code:: python\n\n stickbugml.train('xgboost', {\n 'max_depth': 7,\n 'eta': 0.01\n })\n\nThe library keeps the test data's ground truth values locked away so\nyour models won't train on it. After you train your model, have the\nframework evaluate it for you:\n\n.. code:: python\n\n logloss_score = stickbugml.evaluate('xgboost')\n print(logloss_score)\n\nYou can add more models and features if so desired.\n\nSince this library is built with reality in mind, you can easily get\npredictions for new/real-life data:\n\n.. code:: python\n\n raw_X = pd.read_csv('2018_titanic_manifesto.csv') # It will probably sink, but we don't know who will survive\n processed_X = stickbugml.process(raw_X) # Process the data\n del raw_X # Gotta keep that namespace clean, right?\n\n y = stickbugml.predict('xgboost', processed_X) # Make predictions\n\n print(y)\n\nContributing & Feedback\n-----------------------\n\nIf you have any problems, or would like a new feature, submit an Issue.\n\nIf you want to help out, feel free to submit a Pull Request.\n\nLicense\n-------\n\nThis project uses the Apache 2.0 License\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/aaronduino/stick-bug-ml", "keywords": "stick bug,ml,machine learning,ai,artificial intelligence,framework,organization,organize", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "stickbugml", "package_url": "https://pypi.org/project/stickbugml/", "platform": "", "project_url": "https://pypi.org/project/stickbugml/", "project_urls": { "Homepage": "https://github.com/aaronduino/stick-bug-ml" }, "release_url": "https://pypi.org/project/stickbugml/1.0.4/", "requires_dist": [ "numpy", "pandas", "sklearn" ], "requires_python": ">=3", "summary": "A framework to organize the process of designing supervised machine learning systems", "version": "1.0.4" }, "last_serial": 3021350, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "3616d000c9bcf9ff235c63755f1ae988", "sha256": "176e6fca333fddce82aa9362ca049f5f6994ae2ce01386241ed8f9593819a268" }, "downloads": -1, "filename": "stickbugml-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3616d000c9bcf9ff235c63755f1ae988", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 9202, "upload_time": "2017-07-13T19:37:15", "url": "https://files.pythonhosted.org/packages/23/e9/74345da050dbc28450eeb72b3fc1fc47402e850861607a7d2a0f031a9431/stickbugml-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2324eeaa3bef167c184afc7ddd53f93c", "sha256": "a3e3250087cda28832b7a66898b614a1cb67aaafec75d78e6ea338460751fddb" }, "downloads": -1, "filename": "stickbugml-1.0.tar.gz", "has_sig": false, "md5_digest": "2324eeaa3bef167c184afc7ddd53f93c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8865, "upload_time": "2017-07-13T19:37:18", "url": "https://files.pythonhosted.org/packages/15/cd/4e82f4b2fa75eeecbb08452fd03fbe52adeb02fbe262fb0e4505e20d46ba/stickbugml-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "cbbf52c2b816917664480e747211c01c", "sha256": "2e2f2fe87702b919e2dd4d3bb1e0fcefe5a5d6965dd3b4af4be3f290ff9e8ad5" }, "downloads": -1, "filename": "stickbugml-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cbbf52c2b816917664480e747211c01c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 9271, "upload_time": "2017-07-13T19:53:20", "url": "https://files.pythonhosted.org/packages/be/fb/e42b0a02f663228f2f71087afaca1449ba1eedc2b43a085bb16360feb0a5/stickbugml-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c1b71767ed5e7621cefe901f54094e0", "sha256": "a5141c520a7a3e4412ed19abe01fd6e670213d715c57aaad947ee56c7ed2c86d" }, "downloads": -1, "filename": "stickbugml-1.0.1.tar.gz", "has_sig": false, "md5_digest": "9c1b71767ed5e7621cefe901f54094e0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8511, "upload_time": "2017-07-13T19:53:22", "url": "https://files.pythonhosted.org/packages/13/97/a2cf3396526acf1f298cbb2c6911af7a110b76ba2ab5931a1f21dd9cf6e1/stickbugml-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "2c9e5e513a42f86601d61ed14b8b0406", "sha256": "4ff8053c8f3f8bab8906e195790704dd0d018d6a9be4bf20a12f0c74ead597bd" }, "downloads": -1, "filename": "stickbugml-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2c9e5e513a42f86601d61ed14b8b0406", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 5499, "upload_time": "2017-07-13T19:59:09", "url": "https://files.pythonhosted.org/packages/2f/e8/8833acb012e31edf290ccd81d6fd9ae9ec3def9c89f5bd7c954e5f0d01f8/stickbugml-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68a2a32fa36a43df0329c918b87f5f21", "sha256": "9f104858e8ac25f1eb00032e5283dc80449225ebc1e0e6f8f673fdfd3ee2c2b8" }, "downloads": -1, "filename": "stickbugml-1.0.2.tar.gz", "has_sig": false, "md5_digest": "68a2a32fa36a43df0329c918b87f5f21", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6645, "upload_time": "2017-07-13T19:59:15", "url": "https://files.pythonhosted.org/packages/0b/ba/8239a3b12934f962bf89a2832739c9955f8bb31de7bdca550f304887b4b6/stickbugml-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "c710df7351f5c06846c0ee478820ca40", "sha256": "e5889c23ce37d461d6d65904c66eecbde770a56bed0890f635fbb20786943022" }, "downloads": -1, "filename": "stickbugml-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c710df7351f5c06846c0ee478820ca40", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 9270, "upload_time": "2017-07-13T20:00:03", "url": "https://files.pythonhosted.org/packages/df/e3/6a81ec14f1ed63d4f949acb23553ca6219b581bf68ceff5fa807abccc15b/stickbugml-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2feb1219b16db165f7294f0370f0249c", "sha256": "f5110b5ec82d34cb1d6748c0df31d78a01be482ac1df7ca20b6716bb452afe5f" }, "downloads": -1, "filename": "stickbugml-1.0.3.tar.gz", "has_sig": false, "md5_digest": "2feb1219b16db165f7294f0370f0249c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8513, "upload_time": "2017-07-13T20:00:05", "url": "https://files.pythonhosted.org/packages/b6/28/b7adf6ebea4d1318d5e20edb76354dba7d49edc86e81845140f9d8db42e5/stickbugml-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "d181dff9e705bf26a2e323735030bc9b", "sha256": "32ada768dac15ac3765a6a2e5e00dc513f3c8ad194b3b619ee3c4df6852438f4" }, "downloads": -1, "filename": "stickbugml-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "d181dff9e705bf26a2e323735030bc9b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 9355, "upload_time": "2017-07-13T20:08:22", "url": "https://files.pythonhosted.org/packages/b0/2f/d56affa33dbc9b158fc2a48dd25ddef41bb0375eb01c023259db4e1a320c/stickbugml-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a2a3fffdfc218264a91c13a8bc51268", "sha256": "02b9525b7304d470841943886c9469aba6e672c7d690f7648f3af685f36e8f51" }, "downloads": -1, "filename": "stickbugml-1.0.4.tar.gz", "has_sig": false, "md5_digest": "1a2a3fffdfc218264a91c13a8bc51268", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8997, "upload_time": "2017-07-13T20:08:24", "url": "https://files.pythonhosted.org/packages/bb/c2/6683f8588c755f50c22471d91006478f05153518ad5c367c2345f6432e59/stickbugml-1.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d181dff9e705bf26a2e323735030bc9b", "sha256": "32ada768dac15ac3765a6a2e5e00dc513f3c8ad194b3b619ee3c4df6852438f4" }, "downloads": -1, "filename": "stickbugml-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "d181dff9e705bf26a2e323735030bc9b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 9355, "upload_time": "2017-07-13T20:08:22", "url": "https://files.pythonhosted.org/packages/b0/2f/d56affa33dbc9b158fc2a48dd25ddef41bb0375eb01c023259db4e1a320c/stickbugml-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a2a3fffdfc218264a91c13a8bc51268", "sha256": "02b9525b7304d470841943886c9469aba6e672c7d690f7648f3af685f36e8f51" }, "downloads": -1, "filename": "stickbugml-1.0.4.tar.gz", "has_sig": false, "md5_digest": "1a2a3fffdfc218264a91c13a8bc51268", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8997, "upload_time": "2017-07-13T20:08:24", "url": "https://files.pythonhosted.org/packages/bb/c2/6683f8588c755f50c22471d91006478f05153518ad5c367c2345f6432e59/stickbugml-1.0.4.tar.gz" } ] }