{ "info": { "author": "Sepand Haghighi", "author_email": "sepand@qpage.ir", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: End Users/Desktop", "Intended Audience :: Manufacturing", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Education", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Human Machine Interfaces", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Scientific/Engineering :: Mathematics", "Topic :: Scientific/Engineering :: Physics" ], "description": "
\n\n
\n
\n\"built\n\n\n \n\n\"PyPI\n\n\"Docker\n
\n\n----------\n## Table of contents\t\t\t\t\t\n * [Overview](https://github.com/sepandhaghighi/pycm#overview)\n * [Installation](https://github.com/sepandhaghighi/pycm#installation)\n * [Usage](https://github.com/sepandhaghighi/pycm#usage)\n * [Document](https://github.com/sepandhaghighi/pycm/tree/master/Document)\n * [Try PyCM in Your Browser](https://github.com/sepandhaghighi/pycm#try-pycm-in-your-browser)\n * [Issues & Bug Reports](https://github.com/sepandhaghighi/pycm#issues--bug-reports)\n * [Todo](https://github.com/sepandhaghighi/pycm/blob/master/TODO.md)\n * [Outputs](https://github.com/sepandhaghighi/pycm#outputs)\n * [Dependencies](https://github.com/sepandhaghighi/pycm#dependencies)\n * [Contribution](https://github.com/sepandhaghighi/pycm/blob/master/.github/CONTRIBUTING.md)\n * [References](https://github.com/sepandhaghighi/pycm#references)\n * [Cite](https://github.com/sepandhaghighi/pycm#cite)\n * [Authors](https://github.com/sepandhaghighi/pycm/blob/master/AUTHORS.md)\n * [License](https://github.com/sepandhaghighi/pycm#license)\n * [Donate](https://github.com/sepandhaghighi/pycm#donate-to-our-project)\n * [Changelog](https://github.com/sepandhaghighi/pycm/blob/master/CHANGELOG.md)\n * [Code of Conduct](https://github.com/sepandhaghighi/pycm/blob/master/.github/CODE_OF_CONDUCT.md)\n\n## Overview\n\n

\t\nPyCM is a multi-class confusion matrix library written in Python that supports both input data vectors and direct matrix, and a proper tool for post-classification model evaluation that supports most classes and overall statistics parameters.\t\nPyCM is the swiss-army knife of confusion matrices, targeted mainly at data scientists that need a broad array of metrics for predictive models and an accurate evaluation of large variety of classifiers.\n\n

\n\n
\n\n

Fig1. ConfusionMatrix Block Diagram

\n
\n\n\n\n\t \n\t\t\n\t\t\t\n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\n
Open Hub
PyPI Counter
Github Stars
\n\n\n\n\n\t \n\t\t\n\t\t\t\n\t\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\n
Branchmasterdev
Travis
AppVeyor
\n\n\n\n\t \n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\n
Code Quality\"CodeFactor\"\"codebeat
\n\n\n\n## Installation\t\t\n\n\u26a0\ufe0f PyCM 2.4 is the last version to support **Python 2.7** & **Python 3.4**\n\n### Source code\n- Download [Version 2.5](https://github.com/sepandhaghighi/pycm/archive/v2.5.zip) or [Latest Source ](https://github.com/sepandhaghighi/pycm/archive/dev.zip)\n- Run `pip install -r requirements.txt` or `pip3 install -r requirements.txt` (Need root access)\n- Run `python3 setup.py install` or `python setup.py install` (Need root access)\t\t\t\t\n\n### PyPI\n\n\n- Check [Python Packaging User Guide](https://packaging.python.org/installing/) \n- Run `pip install pycm==2.5` or `pip3 install pycm==2.5` (Need root access)\n\n### Conda\n\n- Check [Conda Managing Package](https://conda.io/docs/user-guide/tasks/manage-pkgs.html#installing-packages-from-anaconda-org)\n- `conda install -c sepandhaghighi pycm` (Need root access)\n\n### Easy install\n\n- Run `easy_install --upgrade pycm` (Need root access)\n\n### Docker\t\n\n- Run `docker pull sepandhaghighi/pycm` (Need root access)\n- Configuration :\n\t- Ubuntu 16.04\n\t- Python 3.6\n\n\n## Usage\n\n\t\t\n### From vector\n```pycon\n>>> from pycm import *\n>>> y_actu = [2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2] # or y_actu = numpy.array([2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2])\n>>> y_pred = [0, 0, 2, 1, 0, 2, 1, 0, 2, 0, 2, 2] # or y_pred = numpy.array([0, 0, 2, 1, 0, 2, 1, 0, 2, 0, 2, 2])\n>>> cm = ConfusionMatrix(actual_vector=y_actu, predict_vector=y_pred) # Create CM From Data\n>>> cm.classes\n[0, 1, 2]\n>>> cm.table\n{0: {0: 3, 1: 0, 2: 0}, 1: {0: 0, 1: 1, 2: 2}, 2: {0: 2, 1: 1, 2: 3}}\n>>> print(cm)\nPredict 0 1 2 \nActual\n0 3 0 0 \n\n1 0 1 2 \n\n2 2 1 3 \n\n\n\n\n\nOverall Statistics : \n\n95% CI (0.30439,0.86228)\nACC Macro 0.72222\nAUNP 0.66667\nAUNU 0.69444\nBennett S 0.375\nCBA 0.47778\nCSI 0.17778\nChi-Squared 6.6\nChi-Squared DF 4\nConditional Entropy 0.95915\nCramer V 0.5244\nCross Entropy 1.59352\nF1 Macro 0.56515\nF1 Micro 0.58333\nGwet AC1 0.38931\nHamming Loss 0.41667\nJoint Entropy 2.45915\nKL Divergence 0.09352\nKappa 0.35484\nKappa 95% CI (-0.07708,0.78675)\nKappa No Prevalence 0.16667\nKappa Standard Error 0.22036\nKappa Unbiased 0.34426\nLambda A 0.16667\nLambda B 0.42857\nMutual Information 0.52421\nNIR 0.5\nOverall ACC 0.58333\nOverall CEN 0.46381\nOverall J (1.225,0.40833)\nOverall MCC 0.36667\nOverall MCEN 0.51894\nOverall RACC 0.35417\nOverall RACCU 0.36458\nP-Value 0.38721\nPPV Macro 0.56667\nPPV Micro 0.58333\nPearson C 0.59568\nPhi-Squared 0.55\nRCI 0.34947\nRR 4.0\nReference Entropy 1.5\nResponse Entropy 1.48336\nSOA1(Landis & Koch) Fair\nSOA2(Fleiss) Poor\nSOA3(Altman) Fair\nSOA4(Cicchetti) Poor\nSOA5(Cramer) Relatively Strong\nSOA6(Matthews) Weak\nScott PI 0.34426\nStandard Error 0.14232\nTPR Macro 0.61111\nTPR Micro 0.58333\nZero-one Loss 5\n\nClass Statistics :\n\nClasses 0 1 2 \nACC(Accuracy) 0.83333 0.75 0.58333 \nAGF(Adjusted F-score) 0.9136 0.53995 0.5516 \nAGM(Adjusted geometric mean) 0.83729 0.692 0.60712 \nAM(Difference between automatic and manual classification) 2 -1 -1 \nAUC(Area under the ROC curve) 0.88889 0.61111 0.58333 \nAUCI(AUC value interpretation) Very Good Fair Poor \nAUPR(Area under the PR curve) 0.8 0.41667 0.55 \nBCD(Bray-Curtis dissimilarity) 0.08333 0.04167 0.04167 \nBM(Informedness or bookmaker informedness) 0.77778 0.22222 0.16667 \nCEN(Confusion entropy) 0.25 0.49658 0.60442 \nDOR(Diagnostic odds ratio) None 4.0 2.0 \nDP(Discriminant power) None 0.33193 0.16597 \nDPI(Discriminant power interpretation) None Poor Poor \nERR(Error rate) 0.16667 0.25 0.41667 \nF0.5(F0.5 score) 0.65217 0.45455 0.57692 \nF1(F1 score - harmonic mean of precision and sensitivity) 0.75 0.4 0.54545 \nF2(F2 score) 0.88235 0.35714 0.51724 \nFDR(False discovery rate) 0.4 0.5 0.4 \nFN(False negative/miss/type 2 error) 0 2 3 \nFNR(Miss rate or false negative rate) 0.0 0.66667 0.5 \nFOR(False omission rate) 0.0 0.2 0.42857 \nFP(False positive/type 1 error/false alarm) 2 1 2 \nFPR(Fall-out or false positive rate) 0.22222 0.11111 0.33333 \nG(G-measure geometric mean of precision and sensitivity) 0.7746 0.40825 0.54772 \nGI(Gini index) 0.77778 0.22222 0.16667 \nGM(G-mean geometric mean of specificity and sensitivity) 0.88192 0.54433 0.57735 \nIBA(Index of balanced accuracy) 0.95062 0.13169 0.27778 \nICSI(Individual classification success index) 0.6 -0.16667 0.1 \nIS(Information score) 1.26303 1.0 0.26303 \nJ(Jaccard index) 0.6 0.25 0.375 \nLS(Lift score) 2.4 2.0 1.2 \nMCC(Matthews correlation coefficient) 0.68313 0.2582 0.16903 \nMCCI(Matthews correlation coefficient interpretation) Moderate Negligible Negligible \nMCEN(Modified confusion entropy) 0.26439 0.5 0.6875 \nMK(Markedness) 0.6 0.3 0.17143 \nN(Condition negative) 9 9 6 \nNLR(Negative likelihood ratio) 0.0 0.75 0.75 \nNLRI(Negative likelihood ratio interpretation) Good Negligible Negligible \nNPV(Negative predictive value) 1.0 0.8 0.57143 \nOC(Overlap coefficient) 1.0 0.5 0.6 \nOOC(Otsuka-Ochiai coefficient) 0.7746 0.40825 0.54772 \nOP(Optimized precision) 0.70833 0.29545 0.44048 \nP(Condition positive or support) 3 3 6 \nPLR(Positive likelihood ratio) 4.5 3.0 1.5 \nPLRI(Positive likelihood ratio interpretation) Poor Poor Poor \nPOP(Population) 12 12 12 \nPPV(Precision or positive predictive value) 0.6 0.5 0.6 \nPRE(Prevalence) 0.25 0.25 0.5 \nQ(Yule Q - coefficient of colligation) None 0.6 0.33333 \nRACC(Random accuracy) 0.10417 0.04167 0.20833 \nRACCU(Random accuracy unbiased) 0.11111 0.0434 0.21007 \nTN(True negative/correct rejection) 7 8 4 \nTNR(Specificity or true negative rate) 0.77778 0.88889 0.66667 \nTON(Test outcome negative) 7 10 7 \nTOP(Test outcome positive) 5 2 5 \nTP(True positive/hit) 3 1 3 \nTPR(Sensitivity, recall, hit rate, or true positive rate) 1.0 0.33333 0.5 \nY(Youden index) 0.77778 0.22222 0.16667 \ndInd(Distance index) 0.22222 0.67586 0.60093 \nsInd(Similarity index) 0.84287 0.52209 0.57508\n\n>>> cm.print_matrix()\nPredict 0 1 2 \nActual\n0 3 0 0 \n\n1 0 1 2 \n\n2 2 1 3 \n\n>>> cm.print_normalized_matrix()\nPredict 0 1 2 \nActual\n0 1.0 0.0 0.0 \n\n1 0.0 0.33333 0.66667 \n\n2 0.33333 0.16667 0.5 \n\n>>> cm.print_matrix(one_vs_all=True,class_name=0) # One-Vs-All, new in version 1.4\nPredict 0 ~ \nActual\n0 3 0 \n\n~ 2 7 \n\n\n```\n### Direct CM\n```pycon\n>>> from pycm import *\n>>> cm2 = ConfusionMatrix(matrix={\"Class1\": {\"Class1\": 1, \"Class2\":2}, \"Class2\": {\"Class1\": 0, \"Class2\": 5}}) # Create CM Directly\n>>> cm2\npycm.ConfusionMatrix(classes: ['Class1', 'Class2'])\n>>> print(cm2)\nPredict Class1 Class2 \nActual\nClass1 1 2 \n\nClass2 0 5 \n\n\n\n\n\nOverall Statistics : \n\n95% CI (0.44994,1.05006)\nACC Macro 0.75\nAUNP 0.66667\nAUNU 0.66667\nBennett S 0.5\nCBA 0.52381\nCSI 0.52381\nChi-Squared 1.90476\nChi-Squared DF 1\nConditional Entropy 0.34436\nCramer V 0.48795\nCross Entropy 1.2454\nF1 Macro 0.66667\nF1 Micro 0.75\nGwet AC1 0.6\nHamming Loss 0.25\nJoint Entropy 1.29879\nKL Divergence 0.29097\nKappa 0.38462\nKappa 95% CI (-0.354,1.12323)\nKappa No Prevalence 0.5\nKappa Standard Error 0.37684\nKappa Unbiased 0.33333\nLambda A 0.33333\nLambda B 0.0\nMutual Information 0.1992\nNIR 0.625\nOverall ACC 0.75\nOverall CEN 0.44812\nOverall J (1.04762,0.52381)\nOverall MCC 0.48795\nOverall MCEN 0.29904\nOverall RACC 0.59375\nOverall RACCU 0.625\nP-Value 0.36974\nPPV Macro 0.85714\nPPV Micro 0.75\nPearson C 0.43853\nPhi-Squared 0.2381\nRCI 0.20871\nRR 4.0\nReference Entropy 0.95443\nResponse Entropy 0.54356\nSOA1(Landis & Koch) Fair\nSOA2(Fleiss) Poor\nSOA3(Altman) Fair\nSOA4(Cicchetti) Poor\nSOA5(Cramer) Relatively Strong\nSOA6(Matthews) Weak\nScott PI 0.33333\nStandard Error 0.15309\nTPR Macro 0.66667\nTPR Micro 0.75\nZero-one Loss 2\n\nClass Statistics :\n\nClasses Class1 Class2 \nACC(Accuracy) 0.75 0.75 \nAGF(Adjusted F-score) 0.53979 0.81325 \nAGM(Adjusted geometric mean) 0.73991 0.5108 \nAM(Difference between automatic and manual classification) -2 2 \nAUC(Area under the ROC curve) 0.66667 0.66667 \nAUCI(AUC value interpretation) Fair Fair \nAUPR(Area under the PR curve) 0.66667 0.85714 \nBCD(Bray-Curtis dissimilarity) 0.125 0.125 \nBM(Informedness or bookmaker informedness) 0.33333 0.33333 \nCEN(Confusion entropy) 0.5 0.43083 \nDOR(Diagnostic odds ratio) None None \nDP(Discriminant power) None None \nDPI(Discriminant power interpretation) None None \nERR(Error rate) 0.25 0.25 \nF0.5(F0.5 score) 0.71429 0.75758 \nF1(F1 score - harmonic mean of precision and sensitivity) 0.5 0.83333 \nF2(F2 score) 0.38462 0.92593 \nFDR(False discovery rate) 0.0 0.28571 \nFN(False negative/miss/type 2 error) 2 0 \nFNR(Miss rate or false negative rate) 0.66667 0.0 \nFOR(False omission rate) 0.28571 0.0 \nFP(False positive/type 1 error/false alarm) 0 2 \nFPR(Fall-out or false positive rate) 0.0 0.66667 \nG(G-measure geometric mean of precision and sensitivity) 0.57735 0.84515 \nGI(Gini index) 0.33333 0.33333 \nGM(G-mean geometric mean of specificity and sensitivity) 0.57735 0.57735 \nIBA(Index of balanced accuracy) 0.11111 0.55556 \nICSI(Individual classification success index) 0.33333 0.71429 \nIS(Information score) 1.41504 0.19265 \nJ(Jaccard index) 0.33333 0.71429 \nLS(Lift score) 2.66667 1.14286 \nMCC(Matthews correlation coefficient) 0.48795 0.48795 \nMCCI(Matthews correlation coefficient interpretation) Weak Weak \nMCEN(Modified confusion entropy) 0.38998 0.51639 \nMK(Markedness) 0.71429 0.71429 \nN(Condition negative) 5 3 \nNLR(Negative likelihood ratio) 0.66667 0.0 \nNLRI(Negative likelihood ratio interpretation) Negligible Good \nNPV(Negative predictive value) 0.71429 1.0 \nOC(Overlap coefficient) 1.0 1.0 \nOOC(Otsuka-Ochiai coefficient) 0.57735 0.84515 \nOP(Optimized precision) 0.25 0.25 \nP(Condition positive or support) 3 5 \nPLR(Positive likelihood ratio) None 1.5 \nPLRI(Positive likelihood ratio interpretation) None Poor \nPOP(Population) 8 8 \nPPV(Precision or positive predictive value) 1.0 0.71429 \nPRE(Prevalence) 0.375 0.625 \nQ(Yule Q - coefficient of colligation) None None \nRACC(Random accuracy) 0.04688 0.54688 \nRACCU(Random accuracy unbiased) 0.0625 0.5625 \nTN(True negative/correct rejection) 5 1 \nTNR(Specificity or true negative rate) 1.0 0.33333 \nTON(Test outcome negative) 7 1 \nTOP(Test outcome positive) 1 7 \nTP(True positive/hit) 1 5 \nTPR(Sensitivity, recall, hit rate, or true positive rate) 0.33333 1.0 \nY(Youden index) 0.33333 0.33333 \ndInd(Distance index) 0.66667 0.66667 \nsInd(Similarity index) 0.5286 0.5286\n \n>>> cm2.stat(summary=True)\nOverall Statistics : \n\nACC Macro 0.75\nF1 Macro 0.66667\nKappa 0.38462\nOverall ACC 0.75\nPPV Macro 0.85714\nSOA1(Landis & Koch) Fair\nTPR Macro 0.66667\nZero-one Loss 2\n\nClass Statistics :\n\nClasses Class1 Class2 \nACC(Accuracy) 0.75 0.75 \nAUC(Area under the ROC curve) 0.66667 0.66667 \nAUCI(AUC value interpretation) Fair Fair \nF1(F1 score - harmonic mean of precision and sensitivity) 0.5 0.83333 \nFN(False negative/miss/type 2 error) 2 0 \nFP(False positive/type 1 error/false alarm) 0 2 \nN(Condition negative) 5 3 \nP(Condition positive or support) 3 5 \nPOP(Population) 8 8 \nPPV(Precision or positive predictive value) 1.0 0.71429 \nTN(True negative/correct rejection) 5 1 \nTON(Test outcome negative) 7 1 \nTOP(Test outcome positive) 1 7 \nTP(True positive/hit) 1 5 \nTPR(Sensitivity, recall, hit rate, or true positive rate) 0.33333 1.0 \n \n>>> cm3 = ConfusionMatrix(matrix={\"Class1\": {\"Class1\": 1, \"Class2\":0}, \"Class2\": {\"Class1\": 2, \"Class2\": 5}},transpose=True) # Transpose Matrix \n>>> cm3.print_matrix()\nPredict Class1 Class2 \nActual\nClass1 1 2 \n\nClass2 0 5 \n\n```\n* `matrix()` and `normalized_matrix()` renamed to `print_matrix()` and `print_normalized_matrix()` in `version 1.5`\t\t\t\n\n### Activation threshold\n`threshold` is added in `version 0.9` for real value prediction.\t\t\t\n\t\t\t\t\t\t\nFor more information visit [Example3](http://www.pycm.ir/doc/Example3.html \"Example3\")\n\n### Load from file\t\t\t\n`file` is added in `version 0.9.5` in order to load saved confusion matrix with `.obj` format generated by `save_obj` method.\n\nFor more information visit [Example4](http://www.pycm.ir/doc/Example4.html \"Example4\")\n\n### Sample weights\n`sample_weight` is added in `version 1.2`\n\nFor more information visit [Example5](http://www.pycm.ir/doc/Example5.html \"Example5\")\n\n### Transpose\n`transpose` is added in `version 1.2` in order to transpose input matrix (only in `Direct CM` mode)\n\n### Relabel\t\t\n`relabel` method is added in `version 1.5` in order to change ConfusionMatrix classnames.\t\t\n\n```pycon\n>>> cm.relabel(mapping={0:\"L1\",1:\"L2\",2:\"L3\"})\n>>> cm\npycm.ConfusionMatrix(classes: ['L1', 'L2', 'L3'])\n```\n\n### Online help\n\n`online_help` function is added in `version 1.1` in order to open each statistics definition in web browser\n\n\n```pycon\n\n>>> from pycm import online_help\n>>> online_help(\"J\")\n>>> online_help(\"SOA1(Landis & Koch)\")\n>>> online_help(2)\n\n```\n* List of items are available by calling `online_help()` (without argument)\t\t\n* If PyCM website is not available, set `alt_link = True` (new in `version 2.4`)\n\n### Parameter recommender\n\nThis option has been added in `version 1.9` in order to recommend most related parameters considering the characteristics of the input dataset. The characteristics according to which the parameters are suggested are balance/imbalance and binary/multiclass. All suggestions can be categorized into three main groups: imbalanced dataset, binary classification for a balanced dataset, and multi-class classification for a balanced dataset. The recommendation lists have been gathered according to the respective paper of each parameter and the capabilities which had been claimed by the paper.\n\n```pycon\n>>> cm.imbalance\nFalse\n>>> cm.binary\nFalse\n>>> cm.recommended_list\n['MCC', 'TPR Micro', 'ACC', 'PPV Macro', 'BCD', 'Overall MCC', 'Hamming Loss', 'TPR Macro', 'Zero-one Loss', 'ERR', 'PPV Micro', 'Overall ACC']\n\n```\t\n\n### Compare\n\nIn `version 2.0` a method for comparing several confusion matrices is introduced. This option is a combination of several overall and class-based benchmarks. Each of the benchmarks evaluates the performance of the classification algorithm from good to poor and give them a numeric score. The score of good performance is 1 and for the poor performance is 0.\n\nAfter that, two scores are calculated for each confusion matrices, overall and class based. The overall score is the average of the score of six overall benchmarks which are Landis & Koch, Fleiss, Altman, Cicchetti, Cramer, and Matthews. And with a same manner, the class based score is the average of the score of five class-based benchmarks which are Positive Likelihood Ratio Interpretation, Negative Likelihood Ratio Interpretation, Discriminant Power Interpretation, AUC value Interpretation, and Matthews Correlation Coefficient Interpretation. It should be notice that if one of the benchmarks returns none for one of the classes, that benchmarks will be eliminate in total averaging. If user set weights for the classes, the averaging over the value of class-based benchmark scores will transform to a weighted average.\n\nIf the user set the value of `by_class` boolean input `True`, the best confusion matrix is the one with the maximum class-based score. Otherwise, if a confusion matrix obtain the maximum of the both overall and class-based score, that will be the reported as the best confusion matrix but in any other cases the compare object doesn\u2019t select best confusion matrix.\n\n```pycon\n>>> cm2 = ConfusionMatrix(matrix={0:{0:2,1:50,2:6},1:{0:5,1:50,2:3},2:{0:1,1:7,2:50}})\n>>> cm3 = ConfusionMatrix(matrix={0:{0:50,1:2,2:6},1:{0:50,1:5,2:3},2:{0:1,1:55,2:2}})\n>>> cp = Compare({\"cm2\":cm2,\"cm3\":cm3})\n>>> print(cp)\nBest : cm2\n\nRank Name Class-Score Overall-Score\n1 cm2 4.15 1.48333\n2 cm3 2.75 0.95\n\n>>> cp.best\npycm.ConfusionMatrix(classes: [0, 1, 2])\n>>> cp.sorted\n['cm2', 'cm3']\n>>> cp.best_name\n'cm2'\n```\t\n\n### Acceptable data types\t\n\n#### ConfusionMatrix\n\n\t\t\n1. `actual_vector` : python `list` or numpy `array` of any stringable objects\n2. `predict_vector` : python `list` or numpy `array` of any stringable objects\n3. `matrix` : `dict`\n4. `digit`: `int`\t\n5. `threshold` : `FunctionType (function or lambda)`\t\n6. `file` : `File object`\n7. `sample_weight` : python `list` or numpy `array` of numbers\n8. `transpose` : `bool`\n\n* Run `help(ConfusionMatrix)` for `ConfusionMatrix` object details\n\n#### Compare\n\n1. `cm_dict` : python `dict` of `ConfusionMatrix` object (`str` : `ConfusionMatrix`)\n2. `by_class` : `bool`\n3. `weight` : python `dict` of class weights (`class_name` : `float`)\n4. `digit`: `int`\n\n* Run `help(Compare)` for `Compare` object details\n\n\nFor more information visit [here](https://github.com/sepandhaghighi/pycm/tree/master/Document \"Document\")\n\n
\n\n\n
\n\n## Try PyCM in your browser!\nPyCM can be used online in interactive Jupyter Notebooks via the Binder service! Try it out now! :\n\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/sepandhaghighi/pycm/master)\n\n* Check `Examples` in `Document` folder \n\n## Issues & bug reports\t\t\t\n\nJust fill an issue and describe it. We'll check it ASAP!\t\t\t\t\t\t\t\nor send an email to [info@pycm.ir](mailto:info@pycm.ir \"info@pycm.ir\"). \n\n* Please complete the issue template\n\n\n## Outputs\t\n\n1. [HTML](http://www.pycm.ir/test.html)\n2. [CSV](https://github.com/sepandhaghighi/pycm/blob/master/Otherfiles/test.csv)\n3. [PyCM](https://github.com/sepandhaghighi/pycm/blob/master/Otherfiles/test.pycm)\t\t\t\n4. [OBJ](https://github.com/sepandhaghighi/pycm/blob/master/Otherfiles/test.obj)\t\n5. [COMP](https://github.com/sepandhaghighi/pycm/blob/master/Otherfiles/test.comp)\n\n\n## Dependencies\n\n\n\t \n\t\t\t\n\t\t\t\n\t\n\t\n\t\t\n\t\t\n\t\n
masterdev
\"Requirements\"Requirements
\n\n\n## References\t\t\t\n\n
1- J. R. Landis, G. G. Koch, \u201cThe measurement of observer agreement for categorical data. Biometrics,\u201d in International Biometric Society, pp. 159\u2013174, 1977.
\n\n
2- D. M. W. Powers, \u201cEvaluation: from precision, recall and f-measure to roc, informedness, markedness & correlation,\u201d in Journal of Machine Learning Technologies, pp.37-63, 2011.
\n\n\n
3- C. Sammut, G. Webb, \u201cEncyclopedia of Machine Learning\u201d in Springer, 2011.
\n\n
4- J. L. Fleiss, \u201cMeasuring nominal scale agreement among many raters,\u201d in Psychological Bulletin, pp. 378-382, 1971.
\n\n
5- D.G. Altman, \u201cPractical Statistics for Medical Research,\u201d in Chapman and Hall, 1990.
\n\n
6- K. L. Gwet, \u201cComputing inter-rater reliability and its variance in the presence of high agreement,\u201d in The British Journal of Mathematical and Statistical Psychology, pp. 29\u201348, 2008.\u201d
\n\n
7- W. A. Scott, \u201cReliability of content analysis: The case of nominal scaling,\u201d in Public Opinion Quarterly, pp. 321\u2013325, 1955.
\n\n
8- E. M. Bennett, R. Alpert, and A. C. Goldstein, \u201cCommunication through limited response questioning,\u201d in The Public Opinion Quarterly, pp. 303\u2013308, 1954.
\n\n
9- D. V. Cicchetti, \"Guidelines, criteria, and rules of thumb for evaluating normed and standardized assessment instruments in psychology,\" in Psychological Assessment, pp. 284\u2013290, 1994.
\n\n
10- R.B. Davies, \"Algorithm AS155: The Distributions of a Linear Combination of \u03c72 Random Variables,\" in Journal of the Royal Statistical Society, pp. 323\u2013333, 1980.
\n\n
11- S. Kullback, R. A. Leibler \"On information and sufficiency,\" in Annals of Mathematical Statistics, pp. 79\u201386, 1951.
\n\n
12- L. A. Goodman, W. H. Kruskal, \"Measures of Association for Cross Classifications, IV: Simplification of Asymptotic Variances,\" in Journal of the American Statistical Association, pp. 415\u2013421, 1972.
\n\n
13- L. A. Goodman, W. H. Kruskal, \"Measures of Association for Cross Classifications III: Approximate Sampling Theory,\" in Journal of the American Statistical Association, pp. 310\u2013364, 1963.
\n\n
14- T. Byrt, J. Bishop and J. B. Carlin, \u201cBias, prevalence, and kappa,\u201d in Journal of Clinical Epidemiology pp. 423-429, 1993.
\n\n
15- M. Shepperd, D. Bowes, and T. Hall, \u201cResearcher Bias: The Use of Machine Learning in Software Defect Prediction,\u201d in IEEE Transactions on Software Engineering, pp. 603-616, 2014.
\n\n
16- X. Deng, Q. Liu, Y. Deng, and S. Mahadevan, \u201cAn improved method to construct basic probability assignment based on the confusion matrix for classification problem, \u201d in Information Sciences, pp.250-261, 2016.
\n\n
17- J.-M. Wei, X.-J. Yuan, Q.-H. Hu, and S.-Q. J. E. S. w. A. Wang, \"A novel measure for evaluating classifiers,\" in Expert Systems with Applications, pp. 3799-3809, 2010.
\n\n
18- I. Kononenko and I. J. M. L. Bratko, \"Information-based evaluation criterion for classifier's performance,\" in Machine Learning, pp. 67-80, 1991.
\n\n
19- R. Delgado and J. D. N\u00fa\u00f1ez-Gonz\u00e1lez, \"Enhancing Confusion Entropy as Measure for Evaluating Classifiers,\" in The 13th International Conference on Soft Computing Models in Industrial and Environmental Applications, pp. 79-89, 2018: Springer.
\n\n
20- J. J. C. b. Gorodkin and chemistry, \"Comparing two K-category assignments by a K-category correlation coefficient,\" in Computational Biology and chemistry, pp. 367-374, 2004.
\n\n
21- C. O. Freitas, J. M. De Carvalho, J. Oliveira, S. B. Aires, and R. Sabourin, \"Confusion matrix disagreement for multiple classifiers,\" in Iberoamerican Congress on Pattern Recognition, pp. 387-396, 2007.
\n\n
22- P. Branco, L. Torgo, and R. P. Ribeiro, \"Relevance-based evaluation metrics for multi-class imbalanced domains,\" in Pacific-Asia Conference on Knowledge Discovery and Data Mining, pp. 698-710, 2017. Springer.
\n\n
23- D. Ballabio, F. Grisoni, R. J. C. Todeschini, and I. L. Systems, \"Multivariate comparison of classification performance measures,\" in Chemometrics and Intelligent Laboratory Systems, pp. 33-44, 2018.
\n\n
24- J. J. E. Cohen and p. measurement, \"A coefficient of agreement for nominal scales,\" in Educational and Psychological Measurement, pp. 37-46, 1960.
\n\n
25- S. Siegel, \"Nonparametric statistics for the behavioral sciences,\" in \tNew York : McGraw-Hill, 1956.
\n\n
26- H. Cram\u00e9r, \"Mathematical methods of statistics (PMS-9),\"in Princeton university press, 2016.
\n\n
27- B. W. J. B. e. B. A.-P. S. Matthews, \"Comparison of the predicted and observed secondary structure of T4 phage lysozyme,\" in Biochimica et Biophysica Acta (BBA) - Protein Structure, pp. 442-451, 1975.
\n\n
28- J. A. J. S. Swets, \"The relative operating characteristic in psychology: a technique for isolating effects of response bias finds wide use in the study of perception and cognition,\" in American Association for the Advancement of Science, pp. 990-1000, 1973.
\n\n
29- P. J. B. S. V. S. N. Jaccard, \"\u00c9tude comparative de la distribution florale dans une portion des Alpes et des Jura,\" in Bulletin de la Socie\u0301te\u0301 vaudoise des sciences naturelles, pp. 547-579, 1901.
\n\n
30- T. M. Cover and J. A. Thomas, \"Elements of information theory,\" in John Wiley & Sons, 2012.
\n\n
31- E. S. Keeping, \"Introduction to statistical inference,\" in Courier Corporation, 1995.
\n\n
32- V. Sindhwani, P. Bhattacharya, and S. Rakshit, \"Information theoretic feature crediting in multiclass support vector machines,\" in Proceedings of the 2001 SIAM International Conference on Data Mining, pp. 1-18, 2001.
\n\n
33- M. Bekkar, H. K. Djemaa, and T. A. J. J. I. E. A. Alitouche, \"Evaluation measures for models assessment over imbalanced data sets,\" in Journal of Information Engineering and Applications, 2013.
\n\n
34- W. J. J. C. Youden, \"Index for rating diagnostic tests,\" in Cancer, pp. 32-35, 1950.
\n\n
35- S. Brin, R. Motwani, J. D. Ullman, and S. J. A. S. R. Tsur, \"Dynamic itemset counting and implication rules for market basket data,\" in Proceedings of the 1997 ACM SIGMOD international conference on Management of datavol, pp. 255-264, 1997.
\n\n
36- S. J. T. J. o. O. S. S. Raschka, \"MLxtend: Providing machine learning and data science utilities and extensions to Python\u2019s scientific computing stack,\" in Journal of Open Source Software, 2018.
\n\n
37- J. BRAy and J. CuRTIS, \"An ordination of upland forest communities of southern Wisconsin.-ecological Monographs,\" in journal of Ecological Monographs, 1957.
\t\n\n
38- J. L. Fleiss, J. Cohen, and B. S. J. P. B. Everitt, \"Large sample standard errors of kappa and weighted kappa,\" in Psychological Bulletin, p. 323, 1969.
\t\n\n
39- M. Felkin, \"Comparing classification results between n-ary and binary problems,\" in Quality Measures in Data Mining: Springer, pp. 277-301, 2007.
\n\n
40- R. Ranawana and V. Palade, \"Optimized Precision-A new measure for classifier performance evaluation,\" in 2006 IEEE International Conference on Evolutionary Computation, pp. 2254-2261, 2006.
\t\n\n
41- V. Garc\u00eda, R. A. Mollineda, and J. S. S\u00e1nchez, \"Index of balanced accuracy: A performance measure for skewed class distributions,\" in Iberian Conference on Pattern Recognition and Image Analysis, pp. 441-448, 2009.
\n\n
42- P. Branco, L. Torgo, and R. P. J. A. C. S. Ribeiro, \"A survey of predictive modeling on imbalanced domains,\" in Journal ACM Computing Surveys (CSUR), p. 31, 2016.
\n\n
43- K. Pearson, \"Notes on Regression and Inheritance in the Case of Two Parents,\" in Proceedings of the Royal Society of London, p. 240-242, 1895.
\n\n
44- W. J. I. Conover, New York, \"Practical Nonparametric Statistics,\" in John Wiley and Sons, 1999.
\n\n
45- Yule, G. U, \"On the methods of measuring association between two attributes.\" in Journal of the Royal Statistical Society, pp. 579-652, 1912.
\n\n
46- Batuwita, R. and Palade, V, \"A new performance measure for class imbalance learning. application to bioinformatics problems,\" in Machine Learning and Applications, pp.545\u2013550, 2009.
\n\n
47- D. K. Lee, \"Alternatives to P value: confidence interval and effect size,\" Korean journal of anesthesiology, vol. 69, no. 6, p. 555, 2016.
\n\n
48- M. A. Raslich, R. J. Markert, and S. A. Stutes, \"Selecting and interpreting diagnostic tests,\" Biochemia medica: Biochemia medica, vol. 17, no. 2, pp. 151-161, 2007.
\n\n
49- D. E. Hinkle, W. Wiersma, and S. G. Jurs, \"Applied statistics for the behavioral sciences,\" 1988.
\n\n
50- A. Maratea, A. Petrosino, and M. Manzo, \"Adjusted F-measure and kernel scaling for imbalanced data learning,\" Information Sciences, vol. 257, pp. 331-341, 2014.
\n\n
51- L. Mosley, \"A balanced approach to the multi-class imbalance problem,\" 2013.
\n\n
52- M. Vijaymeena and K. Kavitha, \"A survey on similarity measures in text mining,\" Machine Learning and Applications: An International Journal, vol. 3, no. 2, pp. 19-28, 2016.
\n\n
53- Y. Otsuka, \"The faunal character of the Japanese Pleistocene marine Mollusca, as evidence of climate having become colder during the Pleistocene in Japan,\" Biogeograph. Soc. Japan, vol. 6, pp. 165-170, 1936.
\n\n
54- A. Tversky, \"Features of similarity,\" Psychological review, vol. 84, no. 4, p. 327, 1977.
\n\n
55- K. Boyd, K. H. Eng, and C. D. Page, \"Area under the precision-recall curve: point estimates and confidence intervals,\" in Joint European conference on machine learning and knowledge discovery in databases, 2013, pp. 451-466: Springer.
\n\n
56- J. Davis and M. Goadrich, \"The relationship between Precision-Recall and ROC curves,\" in Proceedings of the 23rd international conference on Machine learning, 2006, pp. 233-240: ACM.
\n\n
57- M. Kuhn, \"Building predictive models in R using the caret package,\" Journal of statistical software, vol. 28, no. 5, pp. 1-26, 2008.
\n\n
58- V. Labatut and H. Cherifi, \"Accuracy measures for the comparison of classifiers,\" arXiv preprint, 2012.
\n\n
59- S. Wallis, \"Binomial confidence intervals and contingency tests: mathematical fundamentals and the evaluation of alternative methods,\" Journal of Quantitative Linguistics, vol. 20, no. 3, pp. 178-208, 2013.
\n\n
60- D. Altman, D. Machin, T. Bryant, and M. Gardner, Statistics with confidence: confidence intervals and statistical guidelines. John Wiley & Sons, 2013.
\n\n
61- J. A. Hanley and B. J. McNeil, \"The meaning and use of the area under a receiver operating characteristic (ROC) curve,\" Radiology, vol. 143, no. 1, pp. 29-36, 1982.
\n\n
62- E. B. Wilson, \"Probable inference, the law of succession, and statistical inference,\" Journal of the American Statistical Association, vol. 22, no. 158, pp. 209-212, 1927.
\n\n
63- A. Agresti and B. A. Coull, \"Approximate is better than \u201cexact\u201d for interval estimation of binomial proportions,\" The American Statistician, vol. 52, no. 2, pp. 119-126, 1998.
\n\n\n\n## Cite\n\nIf you use PyCM in your research, we would appreciate citations to the following paper :\n\n
\nHaghighi, S., Jasemi, M., Hessabi, S. and Zolanvari, A. (2018). PyCM: Multiclass confusion matrix library in Python. Journal of Open Source Software, 3(25), p.729.\n
\n
\n\n@article{Haghighi2018,\n  doi = {10.21105/joss.00729},\n  url = {https://doi.org/10.21105/joss.00729},\n  year  = {2018},\n  month = {may},\n  publisher = {The Open Journal},\n  volume = {3},\n  number = {25},\n  pages = {729},\n  author = {Sepand Haghighi and Masoomeh Jasemi and Shaahin Hessabi and Alireza Zolanvari},\n  title = {{PyCM}: Multiclass confusion matrix library in Python},\n  journal = {Journal of Open Source Software}\n}\n\n\n
\n\nDownload [PyCM.bib](http://www.pycm.ir/PYCM.bib)\t\n\n\n\n\t \n\t\t\n\t\t\t\n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\n
JOSS
Zenodo\"DOI\"
Researchgate
\n\t\t\t\t\n\n\n## License\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fsepandhaghighi%2Fpycm.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fsepandhaghighi%2Fpycm?ref=badge_large)\n\n\n## Donate to our project\t\t\n\nIf you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .\n\n\"PyCM\n\n\n\n# Changelog\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)\nand this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n## [2.5] - 2019-10-16\n### Added\n- Individual classification success index (ICSI)\n- Classification success index (CSI)\n- Example-8 (Confidence interval)\n- `install.sh`\n- `autopep8.sh`\n- Dockerfile\n- `CI` method (supported statistics : `ACC`,`AUC`,`Overall ACC`,`Kappa`,`TPR`,`TNR`,`PPV`,`NPV`,`PLR`,`NLR`,`PRE`)\n### Changed\n- `test.sh` moved to `.travis` folder\n- Python 3.4 support dropped\n- Python 2.7 support dropped\n- `AUTHORS.md` updated\n- `save_stat`,`save_csv` and `save_html` methods Non-ASCII character bug fixed\n- `CONTRIBUTING.md` updated\n- Example-3 updated\n- `README.md` modified\n- Document modified\n- `CI` attribute renamed to `CI95`\n- `kappa_se_calc` function renamed to `kappa_SE_calc`\n- `se_calc` function modified and renamed to `SE_calc`\n- CI/SE functions moved to `pycm_ci.py`\n- Minor bug in `save_html` method fixed\n## [2.4] - 2019-07-31\n### Added\n- Tversky index (TI)\n- Area under the PR curve (AUPR)\n- `FUNDING.yml`\n### Changed\n- `AUC_calc` function modified\n- Document modified\n- `summary` parameter added to `save_html`,`save_stat`,`save_csv` and `stat` methods\n- `sample_weight` bug in `numpy` array format fixed\n- Inputs manipulation bug fixed\n- Test system modified \n- Warning system modified\n- `alt_link` parameter added to `save_html` method and `online_help` function\n- `Compare` class tests moved to `compare_test.py`\n- Warning tests moved to `warning_test.py`\n## [2.3] - 2019-06-27\n### Added\n- Adjusted F-score (AGF)\n- Overlap coefficient (OC)\n- Otsuka-Ochiai coefficient (OOC)\n### Changed\n- `save_stat` and `save_vector` parameters added to `save_obj` method\n- Document modified\n- `README.md` modified \n- Parameters recommendation for imbalance dataset modified\n- Minor bug in `Compare` class fixed\n- `pycm_help` function modified\n- Benchmarks color modified\n## [2.2] - 2019-05-30\n### Added\n- Negative likelihood ratio interpretation (NLRI)\n- Cramer's benchmark (SOA5)\n- Matthews correlation coefficient interpretation (MCCI)\n- Matthews's benchmark (SOA6)\n- F1 macro\n- F1 micro\n- Accuracy macro\n### Changed\n- `Compare` class score calculation modified\n- Parameters recommendation for multi-class dataset modified\n- Parameters recommendation for imbalance dataset modified\n- `README.md` modified \n- Document modified\n- Logo updated\n## [2.1] - 2019-05-06\n### Added\n- Adjusted geometric mean (AGM)\n- Yule's Q (Q)\n- `Compare` class and parameters recommendation system block diagrams\n### Changed\n- Document links bug fixed\n- Document modified\n## [2.0] - 2019-04-15\n### Added\n- G-Mean (GM)\n- Index of balanced accuracy (IBA)\n- Optimized precision (OP)\n- Pearson's C (C)\n- `Compare` class\n- Parameters recommendation warning\n- `ConfusionMatrix` equal method\n\n### Changed\n- Document modified\n- `stat_print` function bug fixed\n- `table_print` function bug fixed\n- `Beta` parameter renamed to `beta` (`F_calc` function & `F_beta` method) \n- Parameters recommendation for imbalance dataset modified\n- `normalize` parameter added to `save_html` method\n- `pycm_func.py` splitted into `pycm_class_func.py` and `pycm_overall_func.py`\n- `vector_filter`,`vector_check`,`class_check` and `matrix_check` functions moved to `pycm_util.py`\n- `RACC_calc` and `RACCU_calc` functions exception handler modified\n- Docstrings modified\n\n## [1.9] - 2019-02-25\n### Added\n- Automatic/Manual (AM)\n- Bray-Curtis dissimilarity (BCD)\n- `CODE_OF_CONDUCT.md`\n- `ISSUE_TEMPLATE.md`\n- `PULL_REQUEST_TEMPLATE.md`\n- `CONTRIBUTING.md`\n- X11 color names support for `save_html` method\n- Parameters recommendation system\n- Warning message for high dimension matrix print\n- Interactive notebooks section (binder)\n\n### Changed\n- `save_matrix` and `normalize` parameters added to `save_csv` method\n- `README.md` modified \n- Document modified\n- `ConfusionMatrix.__init__` optimized\n- Document and examples output files moved to different folders\n- Test system modified \n- `relabel` method bug fixed\n\n## [1.8] - 2019-01-05\n### Added\n- Lift score (LS)\n- `version_check.py`\n\n### Changed\n- `color` parameter added to `save_html` method\n- Error messages modified\n- Document modified\n- Website changed to [http://www.pycm.ir](http://www.pycm.ir)\n- Interpretation functions moved to `pycm_interpret.py`\n- Utility functions moved to `pycm_util.py`\n- Unnecessary `else` and `elif` removed\n- `==` changed to `is`\n\n## [1.7] - 2018-12-18\n### Added\n- Gini index (GI)\n- Example-7\n- `pycm_profile.py`\n\n### Changed\n- `class_name` parameter added to `stat`,`save_stat`,`save_csv` and `save_html` methods\n- `overall_param` and `class_param` parameters empty list bug fixed \n- `matrix_params_calc`, `matrix_params_from_table` and `vector_filter` functions optimized\n- `overall_MCC_calc`, `CEN_misclassification_calc` and `convex_combination` functions optimized\n- Document modified\n\n## [1.6] - 2018-12-06\n### Added\n- AUC value interpretation (AUCI)\n- Example-6\n- Anaconda cloud package\n\n### Changed\n- `overall_param` and `class_param` parameters added to `stat`,`save_stat` and `save_html` methods\n- `class_param` parameter added to `save_csv` method\n- `_` removed from overall statistics names\n- `README.md` modified \n- Document modified\n\n## [1.5] - 2018-11-26\n### Added\n- Relative classifier information (RCI)\n- Discriminator power (DP)\n- Youden's index (Y)\n- Discriminant power interpretation (DPI)\n- Positive likelihood ratio interpretation (PLRI)\n- `__len__` method\n- `relabel` method\n- `__class_stat_init__` function\n- `__overall_stat_init__` function\n- `matrix` attribute as dict\n- `normalized_matrix` attribute as dict\n- `normalized_table` attribute as dict\n\n### Changed\n- `README.md` modified\n- Document modified\n- `LR+` renamed to `PLR`\n- `LR-` renamed to `NLR`\n- `normalized_matrix` method renamed to `print_normalized_matrix`\n- `matrix` method renamed to `print_matrix`\n- `entropy_calc` fixed\n- `cross_entropy_calc` fixed\n- `conditional_entropy_calc` fixed\n- `print_table` bug for large numbers fixed\n- JSON key bug in `save_obj` fixed\n- `transpose` bug in `save_obj` fixed\n- `Python 3.7` added to `.travis.yaml` and `appveyor.yml`\n\n## [1.4] - 2018-11-12\n### Added\n- Area under curve (AUC)\n- AUNU\n- AUNP\n- Class balance accuracy (CBA)\n- Global performance index (RR)\n- Overall MCC\n- Distance index (dInd)\n- Similarity index (sInd)\n- `one_vs_all`\n- `dev-requirements.txt`\n\n### Changed\n- `README.md` modified\n- Document modified\n- `save_stat` modified\n- `requirements.txt` modified\n\n## [1.3] - 2018-10-10\n### Added\n- Confusion entropy (CEN)\n- Overall confusion entropy (Overall CEN)\n- Modified confusion entropy (MCEN)\n- Overall modified confusion entropy (Overall MCEN)\n- Information score (IS)\n\n### Changed\n- `README.md` modified\n\n## [1.2] - 2018-10-01\n### Added\n- No information rate (NIR)\n- P-Value\n- `sample_weight`\n- `transpose`\n\n### Changed\n- `README.md` modified\n- Key error in some parameters fixed\n- `OSX` env added to `.travis.yml`\n\n## [1.1] - 2018-09-08\n### Added\n- Zero-one loss\n- Support\n- `online_help` function\n\n### Changed\n- `README.md` modified\n- `html_table` function modified\n- `table_print` function modified\n- `normalized_table_print` function modified\n\n## [1.0] - 2018-08-30\n### Added\n- Hamming loss\n\n### Changed\n- `README.md` modified\n\n## [0.9.5] - 2018-07-08\n### Added\n- Obj load\n- Obj save\n- Example-4\n\n### Changed\n- `README.md` modified\n- Block diagram updated\n\n## [0.9] - 2018-06-28\n### Added\n- Activation threshold\n- Example-3\n- Jaccard index\n- Overall Jaccard index\n\n### Changed\n- `README.md` modified\n- `setup.py` modified\n\n## [0.8.6] - 2018-05-31\n### Added\n- Example section in document\n- Python 2.7 CI\n- JOSS paper pdf\n\n### Changed\n- Cite section\n- ConfusionMatrix docstring\n- round function changed to numpy.around\n- `README.md` modified\n\n## [0.8.5] - 2018-05-21\n### Added\n- Example-1 (Comparison of three different classifiers)\n- Example-2 (How to plot via matplotlib)\n- JOSS paper\n- ConfusionMatrix docstring\n\n### Changed\n- Table size in HTML report\n- Test system\n- `README.md` modified\n\n## [0.8.1] - 2018-03-22\n### Added\n- Goodman and Kruskal's lambda B\n- Goodman and Kruskal's lambda A \n- Cross entropy\n- Conditional entropy\n- Joint entropy\n- Reference entropy \n- Response entropy\n- Kullback-Liebler divergence\n- Direct ConfusionMatrix\n- Kappa unbiased\n- Kappa no prevalence\n- Random accuracy unbiased\n- `pycmVectorError` class\n- `pycmMatrixError` class\n- Mutual information\n- Support `numpy` arrays\n\n### Changed\n- Notebook file updated\n\n\n### Removed\n- `pycmError` class\n\n## [0.7] - 2018-02-26\n### Added\n- Cramer's V\n- 95% confidence interval \n- Chi-Squared\n- Phi-Squared\n- Chi-Squared DF\n- Standard error\n- Kappa standard error\n- Kappa 95% confidence interval\n- Cicchetti benchmark\n\n\n### Changed\n- Overall statistics color in HTML report\n- Parameters description link in HTML report\n\n\n## [0.6] - 2018-02-21\n### Added\n- CSV report\n- Changelog\n- Output files\n- `digit` parameter to `ConfusionMatrix` object\n\n### Changed\n- Confusion matrix color in HTML report\n- Parameters description link in HTML report\n- Capitalize descriptions\n\n## [0.5] - 2018-02-17\n### Added\n- Scott's pi\n- Gwet's AC1\n- Bennett S score\n- HTML report \n\n## [0.4] - 2018-02-05\n### Added\n- TPR micro/macro\n- PPV micro/macro\n- Overall RACC\n- Error rate (ERR)\n- FBeta score\n- F0.5\n- F2\n- Fleiss benchmark\n- Altman benchmark\n- Output file(.pycm)\n\n\n### Changed\n- Class with zero item\n- Normalized matrix\n\n### Removed\n- Kappa and SOA for each class\n\n\n## [0.3] - 2018-01-27\n### Added\n- Kappa\n- Random accuracy\n- Landis and Koch benchmark\n- `overall_stat`\n\n\n## [0.2] - 2018-01-24\n### Added\n- Population\n- Condition positive\n- Condition negative\n- Test outcome positive\n- Test outcome negative\n- Prevalence\n- G-measure\n- Matrix method\n- Normalized matrix method\n- Params method\n\n\n### Changed\n - `statistic_result` to `class_stat`\n - `params` to `stat`\n\n## [0.1] - 2018-01-22\n### Added\n- ACC\n- BM\n- DOR\n- F1-Score\n- FDR\n- FNR\n- FOR\n- FPR\n- LR+\n- LR-\n- MCC\n- MK\n- NPV\n- PPV\n- TNR\n- TPR\n- documents and `README.md`\n\n[Unreleased]: https://github.com/sepandhaghighi/pycm/compare/v2.5...dev\n[2.5]: https://github.com/sepandhaghighi/pycm/compare/v2.4...v2.5\n[2.4]: https://github.com/sepandhaghighi/pycm/compare/v2.3...v2.4\n[2.3]: https://github.com/sepandhaghighi/pycm/compare/v2.2...v2.3\n[2.2]: https://github.com/sepandhaghighi/pycm/compare/v2.1...v2.2\n[2.1]: https://github.com/sepandhaghighi/pycm/compare/v2.0...v2.1\n[2.0]: https://github.com/sepandhaghighi/pycm/compare/v1.9...v2.0\n[1.9]: https://github.com/sepandhaghighi/pycm/compare/v1.8...v1.9\n[1.8]: https://github.com/sepandhaghighi/pycm/compare/v1.7...v1.8\n[1.7]: https://github.com/sepandhaghighi/pycm/compare/v1.6...v1.7\n[1.6]: https://github.com/sepandhaghighi/pycm/compare/v1.5...v1.6\n[1.5]: https://github.com/sepandhaghighi/pycm/compare/v1.4...v1.5\n[1.4]: https://github.com/sepandhaghighi/pycm/compare/v1.3...v1.4\n[1.3]: https://github.com/sepandhaghighi/pycm/compare/v1.2...v1.3\n[1.2]: https://github.com/sepandhaghighi/pycm/compare/v1.1...v1.2\n[1.1]: https://github.com/sepandhaghighi/pycm/compare/v1.0...v1.1\n[1.0]: https://github.com/sepandhaghighi/pycm/compare/v0.9.5...v1.0\n[0.9.5]: https://github.com/sepandhaghighi/pycm/compare/v0.9...v0.9.5\n[0.9]: https://github.com/sepandhaghighi/pycm/compare/v0.8.6...v0.9\n[0.8.6]: https://github.com/sepandhaghighi/pycm/compare/v0.8.5...v0.8.6\n[0.8.5]: https://github.com/sepandhaghighi/pycm/compare/v0.8.1...v0.8.5\n[0.8.1]: https://github.com/sepandhaghighi/pycm/compare/v0.7...v0.8.1\n[0.7]: https://github.com/sepandhaghighi/pycm/compare/v0.6...v0.7\n[0.6]: https://github.com/sepandhaghighi/pycm/compare/v0.5...v0.6\n[0.5]: https://github.com/sepandhaghighi/pycm/compare/v0.4...v0.5\n[0.4]: https://github.com/sepandhaghighi/pycm/compare/v0.3...v0.4\n[0.3]: https://github.com/sepandhaghighi/pycm/compare/v0.2...v0.3\n[0.2]: https://github.com/sepandhaghighi/pycm/compare/v0.1...v0.2\n[0.1]: https://github.com/sepandhaghighi/pycm/compare/1e238cd...v0.1", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/sepandhaghighi/pycm/tarball/v2.5", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sepandhaghighi/pycm", "keywords": "confusion-matrix python3 python machine_learning ML", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pycm", "package_url": "https://pypi.org/project/pycm/", "platform": "", "project_url": "https://pypi.org/project/pycm/", "project_urls": { "Download": "https://github.com/sepandhaghighi/pycm/tarball/v2.5", "Homepage": "https://github.com/sepandhaghighi/pycm", "Source": "https://github.com/sepandhaghighi/pycm", "Webpage": "http://pycm.shaghighi.ir" }, "release_url": "https://pypi.org/project/pycm/2.5/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Multi-class confusion matrix library in Python", "version": "2.5" }, "last_serial": 5983464, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "4d780afa4eaad99572be34d780e9ee71", "sha256": "703229f0074018b503ce79447fe357d930aada1b2a85f864b50d13647c977f19" }, "downloads": -1, "filename": "pycm-0.1.tar.gz", "has_sig": false, "md5_digest": "4d780afa4eaad99572be34d780e9ee71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4407, "upload_time": "2018-01-22T20:14:46", "url": "https://files.pythonhosted.org/packages/f3/0e/f4641c1d6ab1cc44916b46b5f036f5bd4dc7f74fa4cf6bce99c7b11927f9/pycm-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "4b1346fdc178796f1fac30e70c3a6cb6", "sha256": "6380fc1062f93f2344ad983b994f8870dae43cc1d1bb011a8458d7c3b51b0dbf" }, "downloads": -1, "filename": "pycm-0.2.tar.gz", "has_sig": false, "md5_digest": "4b1346fdc178796f1fac30e70c3a6cb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5094, "upload_time": "2018-01-24T15:53:23", "url": "https://files.pythonhosted.org/packages/7e/d8/e0bb5db77955350039379d4b2039bee421cf96a0dac60ac2747a9c7e9189/pycm-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "b85ccd58d4d1c32da23cf0d962eeaa7e", "sha256": "1706f232fc99afb73d6841682f9e47a0f735e6229b96cbf80ae9909fcbff5c62" }, "downloads": -1, "filename": "pycm-0.3.tar.gz", "has_sig": false, "md5_digest": "b85ccd58d4d1c32da23cf0d962eeaa7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6255, "upload_time": "2018-01-27T17:56:50", "url": "https://files.pythonhosted.org/packages/8b/64/f5db3017c98e5f17abc9c427e179e6da02b619b45cc9f98b7290963fc80b/pycm-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "bee7a7977e1c0977c9b5c4949ad0b936", "sha256": "022017668e7f4a01d11177a97b98b6854766b90bcedc231d4a841e9327ce221d" }, "downloads": -1, "filename": "pycm-0.4.tar.gz", "has_sig": false, "md5_digest": "bee7a7977e1c0977c9b5c4949ad0b936", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8104, "upload_time": "2018-02-05T20:52:20", "url": "https://files.pythonhosted.org/packages/89/9b/098825fc7489c6d9f0013106c64c3362cbdc28d88bf745f74f6cac39a73e/pycm-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "8ef38c153b3e6bb2842e9d6fb54f3186", "sha256": "42cfc19fd1a6ef88e58cb6b01713445a3c15ca6ecfb30181cb2fdfd1f8478523" }, "downloads": -1, "filename": "pycm-0.5.tar.gz", "has_sig": false, "md5_digest": "8ef38c153b3e6bb2842e9d6fb54f3186", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9818, "upload_time": "2018-02-17T10:46:23", "url": "https://files.pythonhosted.org/packages/d4/19/e041c8e90df174b1b1b2c76c462c217804a007abe3fb08308078a3182f25/pycm-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "4ecc7a58d8aef2be10e2b281f4998c2a", "sha256": "f09981091275e980218c4cf407d0667aab257ea751ee63b410de3cd85b00cc4a" }, "downloads": -1, "filename": "pycm-0.6.tar.gz", "has_sig": false, "md5_digest": "4ecc7a58d8aef2be10e2b281f4998c2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10977, "upload_time": "2018-02-21T14:38:55", "url": "https://files.pythonhosted.org/packages/b1/ff/94085740363253ae0cbdb5949f4c2bd1718639ece4712c2f8e366d954130/pycm-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "d22424eaa4f75a58b5925f41104b47d2", "sha256": "27fe08924fadcc0c875beffa6e19764f560225a13480ad187922910bf76c9d8e" }, "downloads": -1, "filename": "pycm-0.7.tar.gz", "has_sig": false, "md5_digest": "d22424eaa4f75a58b5925f41104b47d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12663, "upload_time": "2018-02-25T23:23:41", "url": "https://files.pythonhosted.org/packages/19/b5/87b343a19138eb17aec9a6ca81a98a336aceaf0ec6efa3818bd634bddb5d/pycm-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "da8f90b1a909622b2583cd2af11eb714", "sha256": "0abfc423566828ce1526422e5ad8dbfe956d7fa31a6a23284e9bc60af6c68317" }, "downloads": -1, "filename": "pycm-0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "da8f90b1a909622b2583cd2af11eb714", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 20192, "upload_time": "2018-03-22T16:24:26", "url": "https://files.pythonhosted.org/packages/67/bc/76bffd77506b1b07d0e7efa305c2a07a2135c4d79758d2114be376aa6118/pycm-0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d48cf6a5a338f92411a780935a850069", "sha256": "b1f01216ad4a8b1ee160542369fa953839088a7c902e589d76ddc2f7f70bba58" }, "downloads": -1, "filename": "pycm-0.8.tar.gz", "has_sig": false, "md5_digest": "d48cf6a5a338f92411a780935a850069", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22630, "upload_time": "2018-03-22T16:24:23", "url": "https://files.pythonhosted.org/packages/ed/79/71870f0f87874fc75cccf912c47117541c690ed54ecd5b081b542a9cf482/pycm-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "065d27f4ad2ed91804a851b2bf9fd7f3", "sha256": "2923dab0a598a13ee7e736281add27f55ab179cbd979c667663d7aecdd401ff4" }, "downloads": -1, "filename": "pycm-0.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "065d27f4ad2ed91804a851b2bf9fd7f3", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 20231, "upload_time": "2018-03-22T16:54:46", "url": "https://files.pythonhosted.org/packages/02/c7/9f7f1ffc4a517726ccfd96ab43b5cc8f79f42cf66b9be49552915d36c6d4/pycm-0.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63d2b05f881613f23aec150da53d1f91", "sha256": "e49e8d26e06e11f53d83ed4a45a7c6cc8811bac4a0e112d2ddb42e63b40ce20f" }, "downloads": -1, "filename": "pycm-0.8.1.tar.gz", "has_sig": false, "md5_digest": "63d2b05f881613f23aec150da53d1f91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22647, "upload_time": "2018-03-22T16:54:43", "url": "https://files.pythonhosted.org/packages/df/77/ffc8c1d19c9663fe3b20499226f5c215d4a2562cc05c11be74197a259c83/pycm-0.8.1.tar.gz" } ], "0.8.5": [ { "comment_text": "", "digests": { "md5": "63d5d242ab7d6b32a08a9c1ffb448c3e", "sha256": "b749a9c08a1c21864cbc95dd770f49bf31266efce8eff1e6e2bc2f94631bcf4b" }, "downloads": -1, "filename": "pycm-0.8.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "63d5d242ab7d6b32a08a9c1ffb448c3e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 34173, "upload_time": "2018-05-20T21:05:52", "url": "https://files.pythonhosted.org/packages/73/24/73f5ec84fa826ea1edc7d2a28b4da4eb46269c59eb825f03792e6d5eb834/pycm-0.8.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bb3f3cb2da1d03c68d0876d41ed1845", "sha256": "4a8f344a1052e1fa3a923a04930f1d85a6247d1ee5124bfaad315ef4df60694c" }, "downloads": -1, "filename": "pycm-0.8.5.tar.gz", "has_sig": false, "md5_digest": "5bb3f3cb2da1d03c68d0876d41ed1845", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 206372, "upload_time": "2018-05-20T21:05:23", "url": "https://files.pythonhosted.org/packages/df/d2/bd2dfdef53a7cde65e2bd5149ed32195b139dee692ac5579d4a775486361/pycm-0.8.5.tar.gz" } ], "0.8.6": [ { "comment_text": "", "digests": { "md5": "93b874093602243ec37e814c210fdf79", "sha256": "8318307d4410b07ee0b3a98aca1af41d11d26ab70beaac816e59397aabc32e68" }, "downloads": -1, "filename": "pycm-0.8.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "93b874093602243ec37e814c210fdf79", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 26183, "upload_time": "2018-05-30T22:14:16", "url": "https://files.pythonhosted.org/packages/ff/84/08cbecb43008b3a19ef76e2627545085e50f1652acdf73f902dd0f5161a3/pycm-0.8.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9779776296eff30637a4bbc708d4eda0", "sha256": "8ae0d9cfa6543888f200d2999296f0dd179f454c165ba33516b105ff44bfb86f" }, "downloads": -1, "filename": "pycm-0.8.6.tar.gz", "has_sig": false, "md5_digest": "9779776296eff30637a4bbc708d4eda0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 206997, "upload_time": "2018-05-30T22:14:06", "url": "https://files.pythonhosted.org/packages/ed/ac/85ffd12d2afc8fce14c34feb896570ef4a85fb6464f9848562e77b6e5d9d/pycm-0.8.6.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "cfe0ddd8fd78fc01b5749ac3824e8738", "sha256": "60de2040b4b6242306d897135cb5dfeaa704aee5066694e6b08045d57996e16a" }, "downloads": -1, "filename": "pycm-0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cfe0ddd8fd78fc01b5749ac3824e8738", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 26887, "upload_time": "2018-06-27T23:14:42", "url": "https://files.pythonhosted.org/packages/65/2e/d44ea887e13f048d2225e58d819c14e0a57fb8821e0efca21a57181f67dc/pycm-0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba477c75918eec3462a44580e969c797", "sha256": "2cb966ef89840648924392deb198ba07a1e8ba6a941acecb446c94cb44600039" }, "downloads": -1, "filename": "pycm-0.9.tar.gz", "has_sig": false, "md5_digest": "ba477c75918eec3462a44580e969c797", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 208344, "upload_time": "2018-06-27T23:14:31", "url": "https://files.pythonhosted.org/packages/b1/de/3756e641d328d79f72e9efc84785fc4fbbcc2bcb6dbd2aa605c45162e02a/pycm-0.9.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "3e6ac18a2dc468eccff69487731a0751", "sha256": "95945d5c4e6e59f1d756f66c790e075c2cff0edcd767952776033cbc9c7ade7c" }, "downloads": -1, "filename": "pycm-0.9.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3e6ac18a2dc468eccff69487731a0751", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 27726, "upload_time": "2018-07-08T15:06:32", "url": "https://files.pythonhosted.org/packages/1a/7f/d6bc19a192e26643d695d0fd4242b2e48a536ecf9a4638fd774c06522926/pycm-0.9.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74384fe575574443fbfee0dabf930d44", "sha256": "f1936f51c93ad6e1a07dd60458e4589b26dcee835f6b5ccdb4091c05a2b315ac" }, "downloads": -1, "filename": "pycm-0.9.5.tar.gz", "has_sig": false, "md5_digest": "74384fe575574443fbfee0dabf930d44", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 348272, "upload_time": "2018-07-08T15:06:22", "url": "https://files.pythonhosted.org/packages/e0/ed/b5955fd46ccea35339b962ee09383775c6eda85c2f133d0c7e5d288d5547/pycm-0.9.5.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "162263febe873cafff7701cc4936fc11", "sha256": "9f43bfae22b9ba2697bc88883374bd3e90b77af7a9e6024408921a38373e9327" }, "downloads": -1, "filename": "pycm-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "162263febe873cafff7701cc4936fc11", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 28144, "upload_time": "2018-08-30T13:49:26", "url": "https://files.pythonhosted.org/packages/67/36/880fc24bb7286bc7074ffbe2f013c602a63b121d9a5371847100187c73f6/pycm-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24eb891ba9c97ad58148614cf3635cfe", "sha256": "d8b566f079a501f766a89a698e525e0eef3af3621a30b10d349569387ba4de3f" }, "downloads": -1, "filename": "pycm-1.0.tar.gz", "has_sig": false, "md5_digest": "24eb891ba9c97ad58148614cf3635cfe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 474739, "upload_time": "2018-08-30T13:49:17", "url": "https://files.pythonhosted.org/packages/10/50/907b75e6af3285f295a6cd77931ad538b5833e68d53b1f2b2b88cb65e412/pycm-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "f4a059cff2c4105b9ebc19de3d2c5a11", "sha256": "3afa9a5d20308687e6175d40f66737b36f52771cc689a150daf6bafbc2ab60e3" }, "downloads": -1, "filename": "pycm-1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f4a059cff2c4105b9ebc19de3d2c5a11", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 28963, "upload_time": "2018-09-08T06:10:49", "url": "https://files.pythonhosted.org/packages/ab/ad/36e1bfe9d16ad203e85c4589eac071354243ff72a1646bb09c6ccbcd0828/pycm-1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0edf157e4ba4d352e9a3c91f24767b5", "sha256": "86b4757eb38235ea3e4de360603888e747b2c295497ad97f1304398848946b4e" }, "downloads": -1, "filename": "pycm-1.1.tar.gz", "has_sig": false, "md5_digest": "f0edf157e4ba4d352e9a3c91f24767b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 475574, "upload_time": "2018-09-08T06:10:34", "url": "https://files.pythonhosted.org/packages/00/9b/0866d2091b3a2a219ba257d36c6a7779e4437ccf162efa629265ff83505f/pycm-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "ce22dadbd5fa7925f5df7b648f72c6bb", "sha256": "fdf2b70d778379baff1f150ec2a4c5770f2273fec66ffad9e47707599b4e7373" }, "downloads": -1, "filename": "pycm-1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ce22dadbd5fa7925f5df7b648f72c6bb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 31895, "upload_time": "2018-10-01T10:23:15", "url": "https://files.pythonhosted.org/packages/05/ef/b2acad6f4515a717db202b02b70557fa25a8f6481709ad963e11ce84ac4e/pycm-1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eae92b149a99aec1c0c0b2badc8c5460", "sha256": "4697b924e1998b8c155e09a1ee6570115d22372be7d8de7ffe8939390353eddf" }, "downloads": -1, "filename": "pycm-1.2.tar.gz", "has_sig": false, "md5_digest": "eae92b149a99aec1c0c0b2badc8c5460", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 522940, "upload_time": "2018-10-01T10:23:06", "url": "https://files.pythonhosted.org/packages/0c/05/ba5ac7f7f6eedd89d777686204a76f67a5411916cc9c7c1aead0176999fa/pycm-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "2691ecc9e3f00c9e0d1d14500337533f", "sha256": "718a7652d07377d2f0b7e817162e93c0222870ac9d6b155299bf98d3131463ef" }, "downloads": -1, "filename": "pycm-1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2691ecc9e3f00c9e0d1d14500337533f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 33645, "upload_time": "2018-10-09T22:11:23", "url": "https://files.pythonhosted.org/packages/e6/4e/8408bcc0d6d11bdacedc66fe7a73e0ab06269d85c44d5e6d7323c58f9452/pycm-1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "afe75fb6c3fe0aa2219416a3b31f8304", "sha256": "a4b83dbad25a34bb5159df0a4230294dfcfa8b3dc39eec9aad3e6adebcbc1cfb" }, "downloads": -1, "filename": "pycm-1.3.tar.gz", "has_sig": false, "md5_digest": "afe75fb6c3fe0aa2219416a3b31f8304", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 559163, "upload_time": "2018-10-09T22:11:15", "url": "https://files.pythonhosted.org/packages/bb/99/c9115322788c0527953a02921396e7ab613e30fcd739fae8c3b48bdb1a3d/pycm-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "c1516f7ce5417ddc2f72386599c71af9", "sha256": "930c00afd0a4a1f543aad4eb41debfb7011b9c149b5d80d2bc5a76a8c44ded60" }, "downloads": -1, "filename": "pycm-1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c1516f7ce5417ddc2f72386599c71af9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 37059, "upload_time": "2018-11-11T22:11:28", "url": "https://files.pythonhosted.org/packages/00/3d/0b11ed59ff024f0300f99b1dd1efbe93a0a688010c51dac747ea4771e319/pycm-1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a890eda012ccbb031b7178df02541ef7", "sha256": "13b6095e05e6b72d01ab6d8ff15210416d8f59f3d98072d05bb70f5fd8040637" }, "downloads": -1, "filename": "pycm-1.4.tar.gz", "has_sig": false, "md5_digest": "a890eda012ccbb031b7178df02541ef7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 566818, "upload_time": "2018-11-11T22:11:19", "url": "https://files.pythonhosted.org/packages/46/16/0ff9d64c7e07df1fd913c75c2e03144f9309cf56713d8d2e6a09cb8a60ea/pycm-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "d37179bb040b5c36ad6de5e819e459f4", "sha256": "708fe6e687fd5d7779a88a7e0e66647671e0b3e6e1a3e5f6bef7f37388524a76" }, "downloads": -1, "filename": "pycm-1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d37179bb040b5c36ad6de5e819e459f4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 39981, "upload_time": "2018-11-26T15:46:24", "url": "https://files.pythonhosted.org/packages/23/2a/6692332d2d6174cca5cc81f7e8539050a96f81f71d63bdbb7668a91ed1c1/pycm-1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d2eb0e71d33f1d2ceae25fee688e62b", "sha256": "e7ee272053b68cf8a86d03eb20a437634a03028ce281d4eac94c15563662e60a" }, "downloads": -1, "filename": "pycm-1.5.tar.gz", "has_sig": false, "md5_digest": "0d2eb0e71d33f1d2ceae25fee688e62b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 571444, "upload_time": "2018-11-26T15:46:03", "url": "https://files.pythonhosted.org/packages/1d/16/3e1a68bd71aa39386d948e53f5141c29f89858c7e5f6422e986959828fcf/pycm-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "e9541b79b30fd8cf3f4285340923361f", "sha256": "0e8f8bb55701333ce9fbedebe914129a3c2eee6e01debfb373c5d595ba31c988" }, "downloads": -1, "filename": "pycm-1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e9541b79b30fd8cf3f4285340923361f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 40988, "upload_time": "2018-12-05T21:02:34", "url": "https://files.pythonhosted.org/packages/25/b4/6e437842173d314a0f70126049ece109a5992969d03aab8be011dff6aeea/pycm-1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "836fe3863bb5a5cee59044de93c9fe11", "sha256": "0dfff688a3697da72482e0e22635f877f8d183dcb63b25bd27a035a9650790c2" }, "downloads": -1, "filename": "pycm-1.6.tar.gz", "has_sig": false, "md5_digest": "836fe3863bb5a5cee59044de93c9fe11", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 571644, "upload_time": "2018-12-05T21:02:16", "url": "https://files.pythonhosted.org/packages/7e/e4/d60c8e8a38b0ebe2b25ef4fbe1cf1ffe1ad41a7376f717adf81555948fc9/pycm-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "32ed4254c6ab773f4e75b603517d787a", "sha256": "6dee42345e9538444ec5d232fa119766a09b8a8d52b88006c83feef92dff3363" }, "downloads": -1, "filename": "pycm-1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "32ed4254c6ab773f4e75b603517d787a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 42202, "upload_time": "2018-12-18T12:42:12", "url": "https://files.pythonhosted.org/packages/a3/d3/90e6d01a2aa69a18b503e48633e3cfb696811eda1aab82b8a3ec0c4e10d0/pycm-1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "057ca850bb3f49a56a01440aa8b09e34", "sha256": "d633b18d979a50c48f4542bd80174b219d9e3b0ae97b06cde95d5b2cf07ef2ae" }, "downloads": -1, "filename": "pycm-1.7.tar.gz", "has_sig": false, "md5_digest": "057ca850bb3f49a56a01440aa8b09e34", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 572989, "upload_time": "2018-12-18T12:41:53", "url": "https://files.pythonhosted.org/packages/4b/99/2730ec288f1af569c59ebe61c270ed3dcf4b90ca50950e654fa7d7c123b9/pycm-1.7.tar.gz" } ], "1.8": [ { "comment_text": "", "digests": { "md5": "ee01652beedac7f14500b722ab433d56", "sha256": "57fd2556da2395d0415c47c47dd3f87e24b2ae371038bcdd509ee57d2ff1c208" }, "downloads": -1, "filename": "pycm-1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ee01652beedac7f14500b722ab433d56", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 44368, "upload_time": "2019-01-05T11:52:59", "url": "https://files.pythonhosted.org/packages/e9/fe/7c3c7cc0f7f6f8e4e3f38e6196b704f6f6971432a587c23886ddf556c54e/pycm-1.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "addf52ea7fe0c49813926f7fc02f7540", "sha256": "0d9dd70e127e0470baaaae8dca1e8c85829aabff13d3f09fe5eb000cdc06a208" }, "downloads": -1, "filename": "pycm-1.8.tar.gz", "has_sig": false, "md5_digest": "addf52ea7fe0c49813926f7fc02f7540", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 575514, "upload_time": "2019-01-05T11:52:41", "url": "https://files.pythonhosted.org/packages/d4/71/a30c43fb3a64c9b4116f3b76f091baf4ef7bf750ce8fae827e4f1faa34c6/pycm-1.8.tar.gz" } ], "1.9": [ { "comment_text": "", "digests": { "md5": "e297e22e3002c71d2ff00289f869e0bd", "sha256": "c9dc02ca1e993e146a67ba0b20dab5c754459fd6ba14e9b13f7cf69ed5bd9363" }, "downloads": -1, "filename": "pycm-1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e297e22e3002c71d2ff00289f869e0bd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 38857, "upload_time": "2019-02-25T14:33:24", "url": "https://files.pythonhosted.org/packages/35/8a/e66c99ce5c2f7ed2dee370e1e0e477d34947e89c918a53c316171dda83e6/pycm-1.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "365ab64610e56160c906f96651169042", "sha256": "25c5ccd38fbfc10e6331ad95eab89ed696938d1854c81646ee3c110f18b2f057" }, "downloads": -1, "filename": "pycm-1.9.tar.gz", "has_sig": false, "md5_digest": "365ab64610e56160c906f96651169042", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 573538, "upload_time": "2019-02-25T14:33:07", "url": "https://files.pythonhosted.org/packages/fa/6a/849616fca5e54db739db705acb58986f276b15cf168625d63f2286e85a1c/pycm-1.9.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "e098491a1cf2883d8e5432ff0fb9f369", "sha256": "57f6571f0edae14a24077c4e6575b82efe026654f8a2a986994aeb5d1463c866" }, "downloads": -1, "filename": "pycm-2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e098491a1cf2883d8e5432ff0fb9f369", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 44655, "upload_time": "2019-04-15T18:00:19", "url": "https://files.pythonhosted.org/packages/0a/65/21bc9b6c5b4c05ab58a0288cc5ecd0d8b1b4c5971b8a33c2c9f3a7b51ac3/pycm-2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7304fa940124ed0129fe7dd424198389", "sha256": "c3b55c24e379c1561a184b5c162121fea1146d7d947dd77962262378dfb22fad" }, "downloads": -1, "filename": "pycm-2.0.tar.gz", "has_sig": false, "md5_digest": "7304fa940124ed0129fe7dd424198389", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 580942, "upload_time": "2019-04-15T17:59:56", "url": "https://files.pythonhosted.org/packages/d5/4b/ad41948b0b1da155c814cc232b005c7c7c4b312a6d9ab61beea9f5fc420f/pycm-2.0.tar.gz" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "4fb529fb6aeff96e0631623bf6d8d04b", "sha256": "0c346795cd9108ead2c03d74af759a923e0bda336b002f4fb327bb853bfcef08" }, "downloads": -1, "filename": "pycm-2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4fb529fb6aeff96e0631623bf6d8d04b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 45330, "upload_time": "2019-05-06T15:42:30", "url": "https://files.pythonhosted.org/packages/35/86/14ebc41098fb81eb7e458d234622a9ce50857bb7d6f350b29765273c00f5/pycm-2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d07241c1e7aed93be3eb06441fe4b034", "sha256": "928746dec5bf051667acee663370e1a786c8962d5aebe4e9fb9a3f79d8c3b478" }, "downloads": -1, "filename": "pycm-2.1.tar.gz", "has_sig": false, "md5_digest": "d07241c1e7aed93be3eb06441fe4b034", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 639433, "upload_time": "2019-05-06T15:42:08", "url": "https://files.pythonhosted.org/packages/ac/a1/5ccfb7def0090977ecfc27a225343d3c70ac66524ed4d074909fe788fa34/pycm-2.1.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "78e9a371b80ededaf4a6eff874167a82", "sha256": "4f1fbbdb41dc2b5f38c734bf09c30f6e68f61d33adcc237740dfa12c50331adf" }, "downloads": -1, "filename": "pycm-2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "78e9a371b80ededaf4a6eff874167a82", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 46276, "upload_time": "2019-05-29T20:28:35", "url": "https://files.pythonhosted.org/packages/07/c3/3224e074e186c23c8b56178db8e6099b1da45623ecd37136d2c9527b1ce5/pycm-2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2a0e942d26a48a152760312cfcaa4b5f", "sha256": "2a7b1fa42600a5b3c852098415f1a8c3cf592e34240d972467f5a2bb9d140098" }, "downloads": -1, "filename": "pycm-2.2.tar.gz", "has_sig": false, "md5_digest": "2a0e942d26a48a152760312cfcaa4b5f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 719279, "upload_time": "2019-05-29T20:28:15", "url": "https://files.pythonhosted.org/packages/b4/ec/f8c921fb4b87a3e0c7a88567025f496e7b2e38c493dacf633b6fc1428b09/pycm-2.2.tar.gz" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "c818e54f30ee1034acd7e6e7b190f44e", "sha256": "6e529e246b57ca8b31a8a80e076be5720df1fd981d518d3002441257db36a92b" }, "downloads": -1, "filename": "pycm-2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c818e54f30ee1034acd7e6e7b190f44e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 47433, "upload_time": "2019-06-26T21:56:01", "url": "https://files.pythonhosted.org/packages/e8/44/63901f094f7d2ab59b598a5a3aae8bf476a1030368aefa6ada736acf9002/pycm-2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd878866d31f2de7384961afa0e9bac0", "sha256": "25e49df3325b7d38ac61199eb8017a20074434b197f7242f9efb3f856e6ff5ae" }, "downloads": -1, "filename": "pycm-2.3.tar.gz", "has_sig": false, "md5_digest": "dd878866d31f2de7384961afa0e9bac0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 721741, "upload_time": "2019-06-26T21:55:44", "url": "https://files.pythonhosted.org/packages/59/4d/e97ff8f9b60e00c044ca20964d95574aec9a7bd47fbf80910ea09194bbfe/pycm-2.3.tar.gz" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "3a63ac3009022e9e334da135c410849c", "sha256": "dc5f83606231a1c21c88aaf45f4e7428f3e09aad8b64457e2b65bf49071f8760" }, "downloads": -1, "filename": "pycm-2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a63ac3009022e9e334da135c410849c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 48920, "upload_time": "2019-07-31T06:36:40", "url": "https://files.pythonhosted.org/packages/25/10/6525c8fd14aac2ab582506c830c98fe9835299c9ffe7f0d53f76848b5b6e/pycm-2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "497d621b1b1338da7e1796d447311a86", "sha256": "3fa2e06939b291b168d2c8d19944958cba51fc3377665909cd2c5a67d702d162" }, "downloads": -1, "filename": "pycm-2.4.tar.gz", "has_sig": false, "md5_digest": "497d621b1b1338da7e1796d447311a86", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 724503, "upload_time": "2019-07-31T06:36:19", "url": "https://files.pythonhosted.org/packages/32/51/7ce6e4d89e56550ccd91471416d15bd0b14f49d9ab0142f135915715d633/pycm-2.4.tar.gz" } ], "2.5": [ { "comment_text": "", "digests": { "md5": "1abf4f953e91b603f2c101919b4fc197", "sha256": "cfabfefcc726055b7c7216aa8cbcdacdedbba15138834db26e3edaf05807484b" }, "downloads": -1, "filename": "pycm-2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1abf4f953e91b603f2c101919b4fc197", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 52146, "upload_time": "2019-10-16T13:41:38", "url": "https://files.pythonhosted.org/packages/cb/0b/da5b285528def59a12a4b39ed9cc7d0fd45ae8d64d81a4eeec2450c1510d/pycm-2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fed62877ba8ede241640a10f2edf2127", "sha256": "ab039bdb1ffeac7bd5e724d5be584ab2316a202afdffbf2f9154cbe59a42b534" }, "downloads": -1, "filename": "pycm-2.5.tar.gz", "has_sig": false, "md5_digest": "fed62877ba8ede241640a10f2edf2127", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 728774, "upload_time": "2019-10-16T13:41:03", "url": "https://files.pythonhosted.org/packages/48/13/aa7e716557b5d5eff88028c1ef194e024374b2bed2cf4404159ae4301ad3/pycm-2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1abf4f953e91b603f2c101919b4fc197", "sha256": "cfabfefcc726055b7c7216aa8cbcdacdedbba15138834db26e3edaf05807484b" }, "downloads": -1, "filename": "pycm-2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1abf4f953e91b603f2c101919b4fc197", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 52146, "upload_time": "2019-10-16T13:41:38", "url": "https://files.pythonhosted.org/packages/cb/0b/da5b285528def59a12a4b39ed9cc7d0fd45ae8d64d81a4eeec2450c1510d/pycm-2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fed62877ba8ede241640a10f2edf2127", "sha256": "ab039bdb1ffeac7bd5e724d5be584ab2316a202afdffbf2f9154cbe59a42b534" }, "downloads": -1, "filename": "pycm-2.5.tar.gz", "has_sig": false, "md5_digest": "fed62877ba8ede241640a10f2edf2127", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 728774, "upload_time": "2019-10-16T13:41:03", "url": "https://files.pythonhosted.org/packages/48/13/aa7e716557b5d5eff88028c1ef194e024374b2bed2cf4404159ae4301ad3/pycm-2.5.tar.gz" } ] }