{ "info": { "author": "Preston Parry", "author_email": "ClimbsBytes@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Concordia\n=========\n\n|Build Status| |Coverage Status| |License|\n\nConcordia is a part of a suite of open-source machine learning packages\nthat allow organizations to more rapidly develop and deploy machine\nlearning models.\n\nInstallation\n------------\n\n``pip install concordia``\n\nDescription\n-----------\n\nConcordia is a tracking and analytics tool for machine learning models\nrunning in production.\n\nUsing Concordia, you should be able to rapidly have confidence in your\nshipped ML models.\n\nIf everything's working as expected, you should have quick proof that\nyou're in a position to scale up this model.\n\nIf things are not going according to plan, you should be able to see\nthat rapidly, and have a suite of information to hone in on the root\ncause of those discrepancies.\n\nBasic Setup\n-----------\n\n::\n\n\n from concordia import Concordia\n concord = Concordia()\n\n ml_predictor = load_ml_model()\n concord.add_model(model=model, model_id='model123')\n\nBasic Usage\n-----------\n\nIn your training environment\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe goal here is to save the features and predictions as you calcate\nthem in your training environment. Then, we can compare these to the\nfeatures and predictions coming from your live environment. We use the\nrow\\_ids to match rows across the two environments.\n\n::\n\n\n df = load_my_data()\n ml_predictor = train_ml_model()\n\n predictions = ml_predictor.predict(df)\n\n concord.add_data_and_predictions(model_id='model123', features=df, predictions=predictions, row_ids=df['my_row_identifier'])\n\nIn your live environment\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n\n from concordia import load_concordia\n concord = load_concordia()\n\n data = get_live_data()\n\n prediction = concord.predict(model_id='model123', features=data, row_id=data['my_row_identifier'])\n\nIn your analytics environment\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n\n from Concordia import load_concordia\n concord = load_concordia()\n\n concord.analyze_prediction_discrepancies(model_id='model123')\n\n concord.analyze_feature_discrepancies(model_id='model123')\n\nInfrastructure Assumptions\n--------------------------\n\nConcordia relies on MongoDB and Redis. These can be either local, or in\nthe cloud. You can specify DB credentials and connection options when\ncreating and loading Concordia.\n\nDatabase Configuration\n----------------------\n\nYou can easily specify your own DB connection. You'll need to do this\nboth when creating the Concordia instance in the first place, as well as\nwhen you ``load_concordia()`` to get access to that same Concordia\ninstance later.\n\n::\n\n\n persistent_db_config = {\n 'db': '__concordia_test_env'\n , 'host': 'localhost'\n , 'port': 27017\n }\n\n in_memory_db_config = {\n 'db': 8\n , 'host': 'localhost'\n , 'port': 6379\n }\n\n concord = Concordia(in_memory_db_config=in_memory_db_config, persistent_db_config=persistent_db_config)\n\n # To load this instance of Concordia later, use that same persistent_db_config\n concord = load_concordia(persistent_db_config=persistent_db_config)\n\nWhat does Concordia do, under the hood?\n---------------------------------------\n\n- It ensures a consistent db schema\n- It ensures a consistent way of saving data (predictions and\n features), so that data can be matched up and compared later\n- It builds in a suite of analytics tools for analyzing discrepancies\n- All of this happens automatically for each model that you ship\n |Analytics|\n\n.. |Build Status| image:: https://travis-ci.org/ClimbsRocks/Concordia.svg?branch=master\n :target: https://travis-ci.org/ClimbsRocks/Concordia\n.. |Coverage Status| image:: https://coveralls.io/repos/github/ClimbsRocks/Concordia/badge.svg?branch=master&cacheBuster=1\n :target: https://coveralls.io/github/ClimbsRocks/Concordia?branch=master\n.. |License| image:: https://img.shields.io/github/license/mashape/apistatus.svg\n :target: (https://img.shields.io/github/license/mashape/apistatus.svg)\n.. |Analytics| image:: https://ga-beacon.appspot.com/UA-58170643-5/concordia/pypi\n :target: https://github.com/igrigorik/ga-beacon\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/ClimbsRocks/Concordia", "keywords": "machine learning,data science,automated machine learning,deploying,machine learning in production,productionizing machine learning,tracking,feature discrepancies,train/serve skew,train serve skew,train-serve skew,model accuracy,alerts,monitoring,production ready,test coverage", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "concordia", "package_url": "https://pypi.org/project/concordia/", "platform": "", "project_url": "https://pypi.org/project/concordia/", "project_urls": { "Homepage": "https://github.com/ClimbsRocks/Concordia" }, "release_url": "https://pypi.org/project/concordia/0.1.1/", "requires_dist": [ "auto-ml (>=2.9.4)", "dill (>=0.2.3,<0.3)", "pymongo (>3.0,<4.0)", "redis (<3.0,>2.0)" ], "requires_python": "", "summary": "Automated monitoring of machine learning models in production. Tracks and finds discrepancies in features, predictions, and labels", "version": "0.1.1" }, "last_serial": 3622983, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "1bfb894e0306240b829c9edb521a5acf", "sha256": "1ccd0952f94740551395656bfb8ebbc640537a11be1ac4a6290836e97e74f482" }, "downloads": -1, "filename": "concordia-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1bfb894e0306240b829c9edb521a5acf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8856, "upload_time": "2018-01-18T23:16:28", "url": "https://files.pythonhosted.org/packages/34/14/3f8d4eb8df0fad2c48820af120e597bac614e9fa84f40d79660ac25ca91a/concordia-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14a7b36e09e82bb384ed0bf3d81e7a08", "sha256": "d9b95535d762eef0c11835c1ce9d5e48621f1e95c7600f4218b87690c4748284" }, "downloads": -1, "filename": "concordia-0.0.1.tar.gz", "has_sig": false, "md5_digest": "14a7b36e09e82bb384ed0bf3d81e7a08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7398, "upload_time": "2018-01-18T23:16:29", "url": "https://files.pythonhosted.org/packages/ef/1f/4f00b0b7c960da8c3519bb733097ca2636ce5075ae9804708cedc519bb64/concordia-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "9cbb261e0ce8fafe06af9cea333b5682", "sha256": "bf525dab6967b26a2697b494f9381faf4a52623d518e68bec393d1d351a53681" }, "downloads": -1, "filename": "concordia-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9cbb261e0ce8fafe06af9cea333b5682", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13257, "upload_time": "2018-01-19T03:28:04", "url": "https://files.pythonhosted.org/packages/f8/71/6367f5e9850d7d2a8596359db3bea46991795330e9f81b4b7c96a69ce12f/concordia-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "206de607ec950d3259d27d249417d03d", "sha256": "50c08309893cdfdef2843c2df74e8e884a5b1a0ffdac213638614c9e7aeee313" }, "downloads": -1, "filename": "concordia-0.0.2.tar.gz", "has_sig": false, "md5_digest": "206de607ec950d3259d27d249417d03d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6874, "upload_time": "2018-01-19T03:28:05", "url": "https://files.pythonhosted.org/packages/e5/4d/3f4eaa0685190ec62ce0eeec36f187f7b0324d1abcc96c22b57da2a39331/concordia-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "43dcbca7f5f377681b0af4aea28efa46", "sha256": "3bab76ae8b1eb3a5832c35fa8d275fc5b2909b2e648a8de63bcd94e24ece63a9" }, "downloads": -1, "filename": "concordia-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43dcbca7f5f377681b0af4aea28efa46", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13291, "upload_time": "2018-01-19T03:39:57", "url": "https://files.pythonhosted.org/packages/03/b1/3215300f30b3496a70f85364a7b94486131155b67edcd0ad01cdab28cef1/concordia-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "991f855b0e58b81ea85426c8dadd9d42", "sha256": "d947461b3e1fc58fa89a46d3b0e92fc0c0730b4f8965df0cb1bbd0452d5e7a3f" }, "downloads": -1, "filename": "concordia-0.0.3.tar.gz", "has_sig": false, "md5_digest": "991f855b0e58b81ea85426c8dadd9d42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6905, "upload_time": "2018-01-19T03:39:58", "url": "https://files.pythonhosted.org/packages/d9/a3/4de0ccebdcca09c221c8dc049ae00531ef728bac21767f2fb7ed3771f4c0/concordia-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "8b2ff7648e3ae6bfce9dcc072c48644b", "sha256": "5431e9bf6ae97b833c9ebdcdbe5c60e0e229777db8d68cc0f7bc33e508d5ca46" }, "downloads": -1, "filename": "concordia-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8b2ff7648e3ae6bfce9dcc072c48644b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9416, "upload_time": "2018-01-21T23:57:59", "url": "https://files.pythonhosted.org/packages/3d/47/23c1527afba7f2f97ab4e8640555ba5a3b5b0b8fb284a903833bac73129f/concordia-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2efe75e5ff399b064e23af8b9370d43c", "sha256": "8e243f0b893361c06c617c550b2f534f0f4ee9eb518abc2312b0bd5bad3982bb" }, "downloads": -1, "filename": "concordia-0.0.4.tar.gz", "has_sig": false, "md5_digest": "2efe75e5ff399b064e23af8b9370d43c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7805, "upload_time": "2018-01-21T23:58:00", "url": "https://files.pythonhosted.org/packages/37/d6/b5105302c30d51bf373d990ea3fb7a37e88f4d3b94050de241c8fc81a546/concordia-0.0.4.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "a449aacef5ecb7caa1b2b49db77cf7e3", "sha256": "2f1afd7bad301484fb1941571e30e0f522073d0f981fa9cdf6e6d3a6f0143178" }, "downloads": -1, "filename": "concordia-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a449aacef5ecb7caa1b2b49db77cf7e3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10810, "upload_time": "2018-01-22T06:16:26", "url": "https://files.pythonhosted.org/packages/2b/d5/35164705332c52594eb8354242b37fc1d7a67b99fdb3ba42f7bb7030f619/concordia-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c86d80f51b711568c9cb84cc3011f9d", "sha256": "a03d6253f1c446dee8dc4d67687b977e0ef470913540a9b662224d07772eef22" }, "downloads": -1, "filename": "concordia-0.0.6.tar.gz", "has_sig": false, "md5_digest": "3c86d80f51b711568c9cb84cc3011f9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9235, "upload_time": "2018-01-22T06:16:27", "url": "https://files.pythonhosted.org/packages/02/94/5e4d7a17cc3c9bbdcb0ff16b3b7295e07eb6c413a2089760919f84f1305f/concordia-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "9f320823883198b996b15ff99c02e730", "sha256": "3b06ff8f882664044f4086e4c2c73de211ea6ddb6c16fb3d9bc70ed9cf90ba4e" }, "downloads": -1, "filename": "concordia-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9f320823883198b996b15ff99c02e730", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16784, "upload_time": "2018-01-23T23:40:41", "url": "https://files.pythonhosted.org/packages/b8/85/5112b3958037874e3174a9d00285922e6d1794fd7ef93c5c8973c0f31e20/concordia-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c1aad7693bd8f10b4082bbd20ac2176d", "sha256": "8efdf25daecb00eda190f20a0f6380dc0f0627035bf3882bbc9b8d1bf8625b2a" }, "downloads": -1, "filename": "concordia-0.0.7.tar.gz", "has_sig": false, "md5_digest": "c1aad7693bd8f10b4082bbd20ac2176d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10463, "upload_time": "2018-01-23T23:40:43", "url": "https://files.pythonhosted.org/packages/58/ca/9f56276e9c9c54793b5226c94c2a50b5ab036561dfd91d3300441103b77a/concordia-0.0.7.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "db36f828d304bcd3c3dd6028da2a18a4", "sha256": "893313d1e4120703a8e338d8de6403c8187eb61dc3140a8bc1d5bb50169a4c02" }, "downloads": -1, "filename": "concordia-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "db36f828d304bcd3c3dd6028da2a18a4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14327, "upload_time": "2018-02-07T20:56:02", "url": "https://files.pythonhosted.org/packages/6d/3a/62d42f9b48d18e0c6bc3edde1531dafaaaa99c891344decf0951a320e3b2/concordia-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33f3ce522d3051936638c8ce8b4768a7", "sha256": "6f3e8d91cc09f7627419103b6b0aaab96756d1d76fa1fceea3de10926f2cb0b3" }, "downloads": -1, "filename": "concordia-0.1.0.tar.gz", "has_sig": false, "md5_digest": "33f3ce522d3051936638c8ce8b4768a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12122, "upload_time": "2018-02-07T20:56:04", "url": "https://files.pythonhosted.org/packages/5b/4f/ee0a3705851bf8c8e93ebb061fe57cc79ec08bd61c3beb4b6d370bdba994/concordia-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "8feaec42fad1e59f15387faac6d4cc69", "sha256": "c9309a95cb3944cfe4ece2d281fc750de6cab6e6b5b016cac8674c80f39319f3" }, "downloads": -1, "filename": "concordia-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8feaec42fad1e59f15387faac6d4cc69", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19241, "upload_time": "2018-02-27T20:54:14", "url": "https://files.pythonhosted.org/packages/0b/0c/7a8a04dde866f4a78dbd61beaee793f468b34965fdb80a95a9303684c828/concordia-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af4582ac75a747003ed23f9b2a2b91cb", "sha256": "b7f65ee43dbe38718b0702fede8383d321401d3d489d47c8929ef2b5dbd238a8" }, "downloads": -1, "filename": "concordia-0.1.1.tar.gz", "has_sig": false, "md5_digest": "af4582ac75a747003ed23f9b2a2b91cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12210, "upload_time": "2018-02-27T20:54:15", "url": "https://files.pythonhosted.org/packages/4a/07/ceea2b4efa997445d5b2fd32e515505e4d2298b1846c82a39e74ba1eee52/concordia-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8feaec42fad1e59f15387faac6d4cc69", "sha256": "c9309a95cb3944cfe4ece2d281fc750de6cab6e6b5b016cac8674c80f39319f3" }, "downloads": -1, "filename": "concordia-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8feaec42fad1e59f15387faac6d4cc69", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19241, "upload_time": "2018-02-27T20:54:14", "url": "https://files.pythonhosted.org/packages/0b/0c/7a8a04dde866f4a78dbd61beaee793f468b34965fdb80a95a9303684c828/concordia-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af4582ac75a747003ed23f9b2a2b91cb", "sha256": "b7f65ee43dbe38718b0702fede8383d321401d3d489d47c8929ef2b5dbd238a8" }, "downloads": -1, "filename": "concordia-0.1.1.tar.gz", "has_sig": false, "md5_digest": "af4582ac75a747003ed23f9b2a2b91cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12210, "upload_time": "2018-02-27T20:54:15", "url": "https://files.pythonhosted.org/packages/4a/07/ceea2b4efa997445d5b2fd32e515505e4d2298b1846c82a39e74ba1eee52/concordia-0.1.1.tar.gz" } ] }