</p> <h2 class="code-line" data-line-end="1" data-line-start="0"><a id="Metrics_for_Classification_0"/>Metrics for Classification</h2> <p class="has-line-data" data-line-end="7" data-line-start="1">Think about the following scenario. As a seasoned data scientist, you spent a lot of time and effort tackling a challenging dataset. Finally, you built a good model, with creative feature engineering and smart data cleaning. The screen displays a great AUC (0.9, unbelievable!) score. How exciting!</p> <p class="has-line-data" data-line-end="7" data-line-start="1">Then the stakeholder comes in and throws out a question: How does such a high AUC score help me in targeting customers? Sometimes there is a gap between data science terminology and business needs. AUC can be a perfect example. How to explain the AUC to people unfamiliar with machine learning? It is not that easy. The good news is that we can use multiple metrics to evaluate model performance. Depending on business needs, some metrics fit particular user scenarios better and helps to bridge the gap between the data scientist and the line-of-business.</p> <p class="has-line-data" data-line-end="7" data-line-start="1">Open source packages provide abundant APIs to compute various kinds of model metrics. When the dataset is large enough, it is not that easy to scale up the computation. If the dataset resides in Oracle Database, we can leverage Oracle Machine Learning tools to compute such metrics without moving the data out of the database.</p> <p class="has-line-data" data-line-end="7" data-line-start="1">The newly released Oracle Machine Learning for Python <a href="https://blogs.oracle.com/machinelearning/introducing-oracle-machine-learning-for-python-v2">OML4Py</a> API brings benefits that are similar to those in <a href="https://www.oracle.com/database/technologies/datawarehouse-bigdata/oml4r.html">OML4R</a>: transparency layer, in-database algorithms, and embedded Python execution. New in OML4Py is automated machine learning.<br />In this blog, we will demonstrate how to compute metrics in a scalable way using OML4Py and Oracle SQL. We can see the benefit of computing the needed statistics for metrics using SQL queries and then generate plots.</p> <h2 class="code-line" data-line-end="8" data-line-start="7"><a id="Data_Overview_7"/>Data Overview</h2> <p class="has-line-data" data-line-end="9" data-line-start="8">We use the dataset customer insurance lifetime value for our demonstration, an Oracle-produced dataset. The use case involves an insurance company targeting customers likely to buy insurance based on their lifetime value, demographics, and financial features for each customer. The following is a glimpse into this dataset with a subset of the columns.</p> <p class="has-line-data" data-line-end="12" data-line-start="10"><img alt src="https://i2.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/7248b80d89b213a1427cf47aad11a17e/data1.png?w=1440&ssl=1" style="width: 950px; height: 236px;" data-recalc-dims="1" data-lazy-src="https://i2.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/7248b80d89b213a1427cf47aad11a17e/data1.png?w=1440&is-pending-load=1#038;ssl=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class=" jetpack-lazy-image"><noscript><img alt="" src="https://i2.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/7248b80d89b213a1427cf47aad11a17e/data1.png?w=1440&ssl=1" style="width: 950px; height: 236px;" data-recalc-dims="1"/></noscript><img alt src="https://i1.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/9bec832e91ea08b713eee4285b9cc8cb/data2.png?w=1440&ssl=1" style="width: 833px; height: 241px;" data-recalc-dims="1" data-lazy-src="https://i1.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/9bec832e91ea08b713eee4285b9cc8cb/data2.png?w=1440&is-pending-load=1#038;ssl=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class=" jetpack-lazy-image"><noscript><img alt="" src="https://i1.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/9bec832e91ea08b713eee4285b9cc8cb/data2.png?w=1440&ssl=1" style="width: 833px; height: 241px;" data-recalc-dims="1"/></noscript></p> <p class="has-line-data" data-line-end="12" data-line-start="10">Based on the column names, we can see that the dataset contains user demographic features such as state, region, gender, marital status, and some financial features like income, credit card limits.</p> <p class="has-line-data" data-line-end="12" data-line-start="10">The main business problem here is to find out which customers are likely to buy an insurance policy. From the dataset, the ground truth is that a customer has purchased an insurance policy based on the column BUY_INSURANCE. This is a typical binary classification problem, and we can use all the features (columns) provided in this dataset to build a model.</p> <h2 class="code-line" data-line-end="17" data-line-start="16"><a id="Model_Building_16"/>Model Building</h2> <p class="has-line-data" data-line-end="19" data-line-start="17">In this blog, we pick a basic logistic regression model as an example for later discussion. In OML4Py, we can use the following code to build a model.<br />First, we load the data from table CUSTOMER_INSURANCE_LTV in Oracle database and create a table with a subset of its columns.</p> <pre> <code class="has-line-data" data-line-end="27" data-line-start="20"><span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd <span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np <span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt <span class="hljs-keyword">import</span> oml CUST_DF = oml.sync(schema = <span class="hljs-string">'JIE'</span>, table = <span class="hljs-string">'CUSTOMER_INSURANCE_LTV'</span>) CUST_DF = CUST_DF[[<span class="hljs-string">'CUSTOMER_ID'</span>,<span class="hljs-string">'BUY_INSURANCE'</span>, <span class="hljs-string">'MARITAL_STATUS'</span>, <span class="hljs-string">'STATE'</span>, <span class="hljs-string">'GENDER'</span>, <span class="hljs-string">'PROFESSION'</span>, <span class="hljs-string">'REGION'</span>, <span class="hljs-string">'CREDIT_BALANCE'</span>, <span class="hljs-string">'LTV_BIN'</span>, <span class="hljs-string">'MORTGAGE_AMOUNT'</span>, <span class="hljs-string">'BANK_FUNDS'</span>, <span class="hljs-string">'NUM_DEPENDENTS'</span>, <span class="hljs-string">'INCOME'</span>, <span class="hljs-string">'CREDIT_CARD_LIMITS'</span>]] </code></pre> <p class="has-line-data" data-line-end="28" data-line-start="27">We recode the BUY_INSURANCE column to numerical values for convenience of later computation. We use 1 for positive label ‘Yes’ and 0 for negative label ‘No’. This can be done using the replace function in OML4Py.</p> <pre> <code class="has-line-data" data-line-end="31" data-line-start="29">CUST_DF = CUST_DF.replace(old = [<span class="hljs-string">'Yes'</span>], new = [<span class="hljs-number">1.0</span>], default = <span class="hljs-number">0.0</span>, columns = [<span class="hljs-string">'BUY_INSURANCE'</span>]) </code></pre> <p class="has-line-data" data-line-end="32" data-line-start="31">After that, we materialized the OML data frame into a table for later use.</p> <pre> <code class="has-line-data" data-line-end="39" data-line-start="33"><span class="hljs-keyword">try</span>: oml.drop(table = <span class="hljs-string">'CUST_SUBSET_TBL'</span>) <span class="hljs-keyword">except</span>: print(<span class="hljs-string">"No such table"</span>) CUST_SUBSET_DF = CUST_DF.materialize(table = <span class="hljs-string">'CUST_SUBSET_TBL'</span>) </code></pre> <p class="has-line-data" data-line-end="40" data-line-start="39">Split the data into train and test datasets. We will build the model on the train dataset and evaluate the model on the test dataset. The default split ratio is 70% training data, 30% test data.</p> <pre> <code class="has-line-data" data-line-end="47" data-line-start="41">dat = CUST_SUBSET_DF.split(seed = <span class="hljs-number">1</span>) train_x = dat[<span class="hljs-number">0</span>].drop([<span class="hljs-string">'BUY_INSURANCE'</span>]) train_y = dat[<span class="hljs-number">0</span>][<span class="hljs-string">'BUY_INSURANCE'</span>] test_x = dat[<span class="hljs-number">1</span>] test_y = dat[<span class="hljs-number">1</span>][<span class="hljs-string">'BUY_INSURANCE'</span>] </code></pre> <p class="has-line-data" data-line-end="48" data-line-start="47">We materialize the test dataset for later use. This is convenient for running SQL queries against the materialized table to compute metrics, which will be shown later.</p> <pre> <code class="has-line-data" data-line-end="55" data-line-start="49"><span class="hljs-keyword">try</span>: oml.drop(table = <span class="hljs-string">'CUST_TEST_TBL'</span>) <span class="hljs-keyword">except</span>: print(<span class="hljs-string">"No such table"</span>) _ = dat[<span class="hljs-number">1</span>].materialize(table = <span class="hljs-string">'CUST_TEST_TBL'</span>) </code></pre> <p class="has-line-data" data-line-end="56" data-line-start="55">Now we build the model.</p> <pre> <code class="has-line-data" data-line-end="66" data-line-start="58"><span class="hljs-keyword">try</span>: oml.drop(model = <span class="hljs-string">'GLM_METRIC_MDL'</span>) <span class="hljs-keyword">except</span>: print(<span class="hljs-string">"No such model"</span>) setting = dict() glm_mod = oml.glm(<span class="hljs-string">"classification"</span>, **setting) glm_mod.fit(train_x, train_y, case_id = <span class="hljs-string">'CUSTOMER_ID'</span>, model_name = <span class="hljs-string">'GLM_METRIC_MDL'</span>) </code></pre> <h2 class="code-line" data-line-end="68" data-line-start="67"><a id="Metrics_for_Model_Evaluation_67"/>Metrics for Model Evaluation</h2> <p class="has-line-data" data-line-end="69" data-line-start="68">To validate the model, we need to choose which metric we want to use. The choice of metric depends on the type of machine learning task. For classification, we can use metrics like accuracy, AUC (area under curve), precision, recall, precision-recall curve, F1 – score etc. For regression, we can choose metrics like mean squared error (MSE), mean absolute err (MAE) and R squared, which will be covered by another blog. In this blog, we will focus on metrics for classification.</p> <h2 class="code-line" data-line-end="70" data-line-start="69"><a id="Accuracy_69"/>Accuracy</h2> <p class="has-line-data" data-line-end="71" data-line-start="70">Accuracy measures the ratio of the number of correct predictions and the total number of data points in the test dataset. In OML4Py, after a model is built. We can simply call</p> <pre> <code class="has-line-data" data-line-end="74" data-line-start="72">glm_mod.score(test_x, test_y) </code></pre> <p class="has-line-data" data-line-end="76" data-line-start="74">In this case, the accuracy is 0.715193<br />The problem with accuracy is that it cannot provide the full picture, especially when the class is unbalanced. Suppose we have only 1% of customers who bought an insurance policy. If the model predicted all customers as negative, then the accuracy is still 99%. We need to get a full picture of how the model behaves.</p> <h2 class="code-line" data-line-end="77" data-line-start="76"><a id="Confusion_Matrix_76"/>Confusion Matrix</h2> <p class="has-line-data" data-line-end="78" data-line-start="77">A confusion matrix gives all possible scenarios after we apply the model predictions.</p> <ol> <li class="has-line-data" data-line-end="79" data-line-start="78">True positive: the customer who buys insurance is predicted as the case that customer buys insurance (PREDICTION = 1, BUY_INSURANCE = 1)</li> <li class="has-line-data" data-line-end="80" data-line-start="79">False positive: the customer who does not buy insurance is predicted as the case that customer buys insurance (PREDICTION = 0, BUY_INSURANCE = 1)</li> <li class="has-line-data" data-line-end="81" data-line-start="80">True negative: the customer who does not buy insurance is predicted as the case that customer does not buy insurance ( PREDICTION = 0, BUY_INSURANCE = 0)</li> <li class="has-line-data" data-line-end="85" data-line-start="81">False negative: the customer who buys insurance is predicted as the case that customer does not buy insurance ( PREDICTION = 1, BUY_INSURANCE = 0)<br />Note that for a model that generates a probability score only, the confusion matrix needs a threshold for the prediction.<br />To obtain the confusion matrix and all other statistics, we can aggregate the prediction results as follows:</li> </ol> <p class="has-line-data" data-line-end="87" data-line-start="85">Note that for a model that generates a probability score only, the confusion matrix needs a threshold for the prediction.</p> <p class="has-line-data" data-line-end="87" data-line-start="85">To obtain the confusion matrix and all other statistics, we can aggregate the prediction results as follows:</p> <pre> <code class="has-line-data" data-line-end="93" data-line-start="88">GLM_RES_DF = glm_mod.predict(test_x, supplemental_cols = test_x[[<span class="hljs-string">'CUSTOMER_ID'</span>, <span class="hljs-string">'BUY_INSURANCE'</span>]]) GLM_RES_PROB = glm_mod.predict_proba(test_x, supplemental_cols = test_x[<span class="hljs-string">'CUSTOMER_ID'</span>]) GLM_RES_DF = GLM_RES_DF.merge(GLM_RES_PROB, how = <span class="hljs-string">"inner"</span>, on = <span class="hljs-string">'CUSTOMER_ID'</span>, suffixes = [<span class="hljs-string">""</span>, <span class="hljs-string">""</span>]) </code></pre> <p class="has-line-data" data-line-end="95" data-line-start="93">The table obtained is as follows</p> <p class="has-line-data" data-line-end="95" data-line-start="93"><img alt src="https://i1.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/fd51b53c883f3165ba26a293079578ad/res.png?w=1440&ssl=1" style="width: 843px; height: 195px;" data-recalc-dims="1" data-lazy-src="https://i1.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/fd51b53c883f3165ba26a293079578ad/res.png?w=1440&is-pending-load=1#038;ssl=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class=" jetpack-lazy-image"><noscript><img alt="" src="https://i1.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/fd51b53c883f3165ba26a293079578ad/res.png?w=1440&ssl=1" style="width: 843px; height: 195px;" data-recalc-dims="1"/></noscript><br />Note that here the model produces PROBABILITY_OF_1 and PROBABILITY_OF_0, which are the predicted probability of both cases. Then the final prediction is based on the probability scores. If PROBABILITY_OF_1 > 0.5, then the prediction is 1, otherwise the prediction is 0.</p> <pre> <code class="has-line-data" data-line-end="122" data-line-start="98">CONF_MAT = GLM_RES_DF.crosstab(<span class="hljs-string">'BUY_INSURANCE'</span>, <span class="hljs-string">'PREDICTION'</span>, pivot = <span class="hljs-keyword">True</span>) conf_mat = CONF_MAT.pull() TP = conf_mat[conf_mat[<span class="hljs-string">'BUY_INSURANCE'</span>] == <span class="hljs-number">1</span>][<span class="hljs-string">'count_(1)'</span>].values[<span class="hljs-number">0</span>] TN = conf_mat[conf_mat[<span class="hljs-string">'BUY_INSURANCE'</span>] == <span class="hljs-number">0</span>][<span class="hljs-string">'count_(0)'</span>].values[<span class="hljs-number">0</span>] FP = conf_mat[conf_mat[<span class="hljs-string">'BUY_INSURANCE'</span>] == <span class="hljs-number">0</span>][<span class="hljs-string">'count_(1)'</span>].values[<span class="hljs-number">0</span>] FN = conf_mat[conf_mat[<span class="hljs-string">'BUY_INSURANCE'</span>] == <span class="hljs-number">1</span>][<span class="hljs-string">'count_(0)'</span>].values[<span class="hljs-number">0</span>] TPR = TP/(TP+FN) FPR = FP/(FP+TN) TNR = TN/(TN+FP) FNR = FN/(FN+TP) Accuracy = (TP+TN)/(TP+TN+FP+FN) TOTAL = TP+TN+FP+FN TN_P = np.round(TN/TOTAL*<span class="hljs-number">100</span>, <span class="hljs-number">1</span>) FP_P = np.round(FP/TOTAL*<span class="hljs-number">100</span>, <span class="hljs-number">1</span>) FN_P = np.round(FN/TOTAL*<span class="hljs-number">100</span>, <span class="hljs-number">1</span>) TP_P = np.round(TP/TOTAL*<span class="hljs-number">100</span>, <span class="hljs-number">1</span>) acc_p = np.round(Accuracy*<span class="hljs-number">100</span>, <span class="hljs-number">1</span>) print(<span class="hljs-string">"%table CONFUSION MATRIXtPREDICTED 0tPREDICTED 1nACTUAL 0t"</span>+ <span class="hljs-string">"True Negative: "</span>+str(TN)+<span class="hljs-string">" ("</span>+str(TN_P)+<span class="hljs-string">"%)t"</span>+ <span class="hljs-string">"False Positive: "</span>+str(FP)+<span class="hljs-string">" ("</span>+str(FP_P)+<span class="hljs-string">"%)nACTUAL 1t"</span>+ <span class="hljs-string">"False Negative: "</span>+str(FN)+<span class="hljs-string">" ("</span>+str(FN_P)+<span class="hljs-string">"%)t"</span>+ <span class="hljs-string">"True Positive: "</span>+str(TP)+<span class="hljs-string">" ("</span>+str(TP_P)+<span class="hljs-string">"%)n"</span>+ <span class="hljs-string">"Accuracy: "</span>+str(acc_p)+<span class="hljs-string">"%"</span>) </code></pre> <p class="has-line-data" data-line-end="126" data-line-start="122">Note that the formatting code inside print is to generate a zeppelin style table as below:</p> <p class="has-line-data" data-line-end="126" data-line-start="122"><img alt src="https://i0.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/94a66cc685a1ad1ef4e6d4f2e00cf329/conf.png?w=1440&ssl=1" style="width: 765px; height: 98px;" data-recalc-dims="1" data-lazy-src="https://i0.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/94a66cc685a1ad1ef4e6d4f2e00cf329/conf.png?w=1440&is-pending-load=1#038;ssl=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class=" jetpack-lazy-image"><noscript><img alt="" src="https://i0.wp.com/cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/00b40098-051d-415c-be23-4ceb933d5311/Image/94a66cc685a1ad1ef4e6d4f2e00cf329/conf.png?w=1440&ssl=1" style="width: 765px; height: 98px;" data-recalc-dims="1"/></noscript></p> <p class="has-line-data" data-line-end="126" data-line-start="122">Now we have a clear picture of how the model behaves. It looks like the model did very well in terms of false negatives but with high false positives. But what would be the impact on the business?</p> <p class="has-line-data" data-line-end="126" data-line-start="122">In order to understand more about this prediction performance. We can further look at precision and recall.</p> <h2 class="code-line" data-line-end="127" data-line-start="126"><a id="Precision_Recall_F1score_126"/>Precision, Recall, F1-score</h2> <p class="has-line-data" data-line-end="129" data-line-start="127">Precision means that among the examples that are predicted as positive, what is the percentage of those cases are truly positive. In our user scenario, it means among the customers predicted as buying insurance, the percentage of those who really buys insurance. If we target the customers predicted as buying insurance, that is related to the ratio of our budget which is effective. Of course, 1 – precision also tells us how much budget is wasted in the campaign.</p> <p class="has-line-data" data-line-end="129" data-line-start="127">Recall means that among the examples that are truly positive, what is the percentage of those is correctly predicted. In our case, this means among the customers who buys insurance, the percentage of those who are correctly identified. In this use case, this translates to how much real customers the marketing campaign can reach.</p> <pre> <code class="has-line-data" data-line-end="134" data-line-start="131">Precision = TP/(TP+FP) Recall = TP/(TP+FN) </code></pre> <p class="has-line-data" data-line-end="138" data-line-start="134">In this case, we have precision = 0.43 and recall = 0.11. The precision tells us among the targeted customers , 43% of them will buy insurance eventually. The recall tells us, targeting the customer in this way, we can actually cover 43% of total customers who want to buy insurance.</p> <p class="has-line-data" data-line-end="138" data-line-start="134">In most cases, the business target prefers one measure to the other. In this case, we have a relatively high precision. This is actually great for our use case. In advertising campaign, sometimes we do not expect the ad can reach all customers with conversion but actually try to avoid wasting the budget. In this case, although we only reached 11% of the converted customers but we can guarantee that 43% of the budget is not wasted.</p> <p class="has-line-data" data-line-end="138" data-line-start="134">Sometimes, one wants to evaluate the performance on the whole and make a balance between this two measures. F1- score can be used in this scenario.<br />F1-score is defined as</p> <pre> <code class="has-line-data" data-line-end="141" data-line-start="139"><span class="hljs-number">2</span>/ ( <span class="hljs-number">1</span>/Precision + <span class="hljs-number">1</span>/Recall) </code></pre> <p class="has-line-data" data-line-end="143" data-line-start="141">It is a value between (0, 1). When the precision and recall are both high, F1-score is approaching to 1. If either of precision or recall is very low, then F1 -score becomes very low. In our case, F1 score is 0.17, which is low because we have a low precision.</p> <p class="has-line-data" data-line-end="143" data-line-start="141">Note that those metrics depends on the threshold used in prediction. If we increase the threshold, then we will have a higher recall and lower precision. How the precision and recall are affected when one adjusts the threshold? The precision-recall curve can provide a full picture. We will continue our journey in Part II of this blog with a discussion of precision and recall with visualizations.</p> </p></div> <p><br /> <br /><a href="https://blogs.oracle.com/machinelearning/metrics-for-classification-using-oml4py-part-i"> Source link </a></p> <div class="post-views post-1518 entry-meta"> <span class="post-views-icon dashicons dashicons-chart-bar"></span> <span class="post-views-label">Post Views:</span> <span class="post-views-count">61</span> </div><!-- AddThis Advanced Settings above via filter on the_content --><!-- AddThis Advanced Settings below via filter on the_content --><!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons above via filter on the_content --><!-- AddThis Share Buttons below via filter on the_content --><div class="at-below-post addthis_tool" data-url="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/"></div><!-- AddThis Share Buttons generic via filter on the_content --><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/" data-text="Metrics for Classification Using OML4Py Part I" data-via="sitworld" >Tweet</a></li><li class="share-facebook"><div class="fb-share-button" data-href="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/" data-layout="button_count"></div></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/" data-counter="right"></script></div></li><li class="share-reddit"><div class="reddit_button"><iframe src="https://www.reddit.com/static/button/button1.html?newwindow=true&width=120&url=https%3A%2F%2Fmachinelearningmastery.in%2F2021%2F06%2F02%2Fmetrics-for-classification-using-oml4py-part-i%2F&title=Metrics%20for%20Classification%20Using%20OML4Py%20Part%20I" height="22" width="120" scrolling="no" frameborder="0"></iframe></div></li><li class="share-telegram"><a rel="nofollow noopener noreferrer" data-shared="" class="share-telegram sd-button" href="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/?share=telegram" target="_blank" title="Click to share on Telegram"><span>Telegram</span></a></li><li class="share-jetpack-whatsapp"><a rel="nofollow noopener noreferrer" data-shared="" class="share-jetpack-whatsapp sd-button" href="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/?share=jetpack-whatsapp" target="_blank" title="Click to share on WhatsApp"><span>WhatsApp</span></a></li><li class="share-print"><a rel="nofollow noopener noreferrer" data-shared="" class="share-print sd-button" href="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/#print" target="_blank" title="Click to print"><span>Print</span></a></li><li class="share-tumblr"><a class="tumblr-share-button" target="_blank" href="https://www.tumblr.com/share" data-title="Metrics for Classification Using OML4Py Part I" data-content="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/" title="Share on Tumblr">Share on Tumblr</a></li><li class="share-pinterest"><div class="pinterest_button"><a href="https://www.pinterest.com/pin/create/button/?url=https%3A%2F%2Fmachinelearningmastery.in%2F2021%2F06%2F02%2Fmetrics-for-classification-using-oml4py-part-i%2F&media=https%3A%2F%2Fi1.wp.com%2Fmachinelearningmastery.in%2Fwp-content%2Fuploads%2F2021%2F07%2Fdata1.png%3Ffit%3D950%252C236%26ssl%3D1&description=Metrics%20for%20Classification%20Using%20OML4Py%20Part%20I" data-pin-do="buttonPin" data-pin-config="beside"><img src="https://i2.wp.com/assets.pinterest.com/images/pidgets/pinit_fg_en_rect_gray_20.png?w=1440" data-recalc-dims="1" data-lazy-src="https://i2.wp.com/assets.pinterest.com/images/pidgets/pinit_fg_en_rect_gray_20.png?w=1440&is-pending-load=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class=" jetpack-lazy-image"><noscript><img src="https://i2.wp.com/assets.pinterest.com/images/pidgets/pinit_fg_en_rect_gray_20.png?w=1440" data-recalc-dims="1" /></noscript></a></div></li><li class="share-skype"><div class="skype-share" data-href="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/" data-lang="en-US" data-style="small" data-source="jetpack" ></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="https://machinelearningmastery.in/2021/06/02/metrics-for-classification-using-oml4py-part-i/?share=email" target="_blank" title="Click to email this to a friend"><span>Email</span></a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-170785677-1518-6145fdec6d408' data-src='https://widgets.wp.com/likes/#blog_id=170785677&post_id=1518&origin=machinelearningmastery.in&obj_id=170785677-1518-6145fdec6d408' data-name='like-post-frame-170785677-1518-6145fdec6d408'><h3 class="sd-title">Like this:</h3><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class="loading">Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div> <div id='jp-relatedposts' class='jp-relatedposts' > <h3 class="jp-relatedposts-headline"><em>Related</em></h3> </div> </div> </div><!-- .entry-content --> <div class="screen-reader-text" itemprop="datePublished" itemtype="https://schema.org/Date">2021-06-02</div> </article><!-- .entry --> <div id="loop-nav-wrap" class="loop-nav"><div class="prev">Previous Post: <a href="https://machinelearningmastery.in/2021/06/01/use-amazon-translate-in-amazon-sagemaker-notebooks/" rel="prev">Use Amazon Translate in Amazon SageMaker Notebooks</a></div><div class="next">Next Post: <a href="https://machinelearningmastery.in/2021/06/02/edelweiss-improves-cross-sell-using-machine-learning-on-amazon-sagemaker/" rel="next">Edelweiss improves cross-sell using machine learning on Amazon SageMaker</a></div></div><!-- .loop-nav --> <section id="comments-template"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2021/06/02/metrics-for-classification-using-oml4py-part-i/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://machinelearningmastery.in/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">Your email address will not be published.</span></p><p class="comment-form-comment"><label for="comment">Comment</label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required"></textarea></p><p class="comment-form-author"><label for="author">Name</label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" /></p> <p class="comment-form-email"><label for="email">Email</label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" /></p> <p class="comment-form-url"><label for="url">Website</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" /></p> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">Save my name, email, and website in this browser for the next time I comment.</label></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='1518' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="e507031e54" /></p><input type="hidden" id="ak_js" name="ak_js" value="93"/><textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100" style="display: none !important;"></textarea></form> </div><!-- #respond --> </section><!-- #comments-template --> </div><!-- #content-wrap --> </main><!-- #content --> <aside id="sidebar-primary" class="sidebar sidebar-primary hgrid-span-3 layout-narrow-right " role="complementary" itemscope="itemscope" itemtype="https://schema.org/WPSideBar"> <div class=" sidebar-wrap"> <section id="tag_cloud-3" class="widget widget_tag_cloud"><h3 class="widget-title"><span>Categories</span></h3><div class="tagcloud"><a href="https://machinelearningmastery.in/category/articles/" class="tag-cloud-link tag-link-404 tag-link-position-1" style="font-size: 11.529411764706pt;" aria-label="Articles (7 items)">Articles</a> <a href="https://machinelearningmastery.in/category/automation-anywhere/" class="tag-cloud-link tag-link-158 tag-link-position-2" style="font-size: 9.0588235294118pt;" aria-label="Automation Anywhere (2 items)">Automation Anywhere</a> <a href="https://machinelearningmastery.in/category/certification/" class="tag-cloud-link tag-link-12 tag-link-position-3" style="font-size: 10.352941176471pt;" aria-label="Certification (4 items)">Certification</a> <a href="https://machinelearningmastery.in/category/cloud/" class="tag-cloud-link tag-link-289 tag-link-position-4" style="font-size: 10.352941176471pt;" aria-label="Cloud (4 items)">Cloud</a> <a href="https://machinelearningmastery.in/category/code/" class="tag-cloud-link tag-link-511 tag-link-position-5" style="font-size: 8pt;" aria-label="Code (1 item)">Code</a> <a href="https://machinelearningmastery.in/category/database-2/" class="tag-cloud-link tag-link-593 tag-link-position-6" style="font-size: 8pt;" aria-label="Database (1 item)">Database</a> <a href="https://machinelearningmastery.in/category/data-science/" class="tag-cloud-link tag-link-9 tag-link-position-7" style="font-size: 12.117647058824pt;" aria-label="Data Science (9 items)">Data Science</a> <a href="https://machinelearningmastery.in/category/data-science-topics/" class="tag-cloud-link tag-link-530 tag-link-position-8" style="font-size: 9.0588235294118pt;" aria-label="data science topics (2 items)">data science topics</a> <a href="https://machinelearningmastery.in/category/data-science-update/" class="tag-cloud-link tag-link-13 tag-link-position-9" style="font-size: 22pt;" aria-label="Data Science Update (475 items)">Data Science Update</a> <a href="https://machinelearningmastery.in/category/deep-learning/" class="tag-cloud-link tag-link-290 tag-link-position-10" style="font-size: 11.235294117647pt;" aria-label="Deep Learning (6 items)">Deep Learning</a> <a href="https://machinelearningmastery.in/category/financial-assistance/" class="tag-cloud-link tag-link-8 tag-link-position-11" style="font-size: 8pt;" aria-label="Financial assistance (1 item)">Financial assistance</a> <a href="https://machinelearningmastery.in/category/google-cloud/" class="tag-cloud-link tag-link-583 tag-link-position-12" style="font-size: 9.0588235294118pt;" aria-label="Google Cloud (2 items)">Google Cloud</a> <a href="https://machinelearningmastery.in/category/interview-tips/" class="tag-cloud-link tag-link-181 tag-link-position-13" style="font-size: 8pt;" aria-label="Interview tips (1 item)">Interview tips</a> <a href="https://machinelearningmastery.in/category/machine-learning/" class="tag-cloud-link tag-link-11 tag-link-position-14" style="font-size: 15.647058823529pt;" aria-label="Machine Learning (39 items)">Machine Learning</a> <a href="https://machinelearningmastery.in/category/open-data-source/" class="tag-cloud-link tag-link-207 tag-link-position-15" style="font-size: 9.7647058823529pt;" aria-label="Open Data Source (3 items)">Open Data Source</a> <a href="https://machinelearningmastery.in/category/power-bi/" class="tag-cloud-link tag-link-341 tag-link-position-16" style="font-size: 9.0588235294118pt;" aria-label="Power BI (2 items)">Power BI</a> <a href="https://machinelearningmastery.in/category/project-management/" class="tag-cloud-link tag-link-409 tag-link-position-17" style="font-size: 9.7647058823529pt;" aria-label="Project Management (3 items)">Project Management</a> <a href="https://machinelearningmastery.in/category/python/" class="tag-cloud-link tag-link-2 tag-link-position-18" style="font-size: 12.117647058824pt;" aria-label="Python (9 items)">Python</a> <a href="https://machinelearningmastery.in/category/quiz-of-the-day/" class="tag-cloud-link tag-link-429 tag-link-position-19" style="font-size: 8pt;" aria-label="Quiz of the Day (1 item)">Quiz of the Day</a> <a href="https://machinelearningmastery.in/category/robotic-process-automation/" class="tag-cloud-link tag-link-159 tag-link-position-20" style="font-size: 9.0588235294118pt;" aria-label="Robotic Process Automation (2 items)">Robotic Process Automation</a> <a href="https://machinelearningmastery.in/category/r-programming/" class="tag-cloud-link tag-link-157 tag-link-position-21" style="font-size: 9.0588235294118pt;" aria-label="R Programming (2 items)">R Programming</a> <a href="https://machinelearningmastery.in/category/sas/" class="tag-cloud-link tag-link-156 tag-link-position-22" style="font-size: 10.823529411765pt;" aria-label="SAS (5 items)">SAS</a> <a href="https://machinelearningmastery.in/category/statistics/" class="tag-cloud-link tag-link-337 tag-link-position-23" style="font-size: 10.352941176471pt;" aria-label="Statistics (4 items)">Statistics</a> <a href="https://machinelearningmastery.in/category/tableau/" class="tag-cloud-link tag-link-340 tag-link-position-24" style="font-size: 9.0588235294118pt;" aria-label="Tableau (2 items)">Tableau</a> <a href="https://machinelearningmastery.in/category/visualization/" class="tag-cloud-link tag-link-10 tag-link-position-25" style="font-size: 12.352941176471pt;" aria-label="visualization (10 items)">visualization</a></div> </section><section id="newsletterwidget-2" class="widget widget_newsletterwidget"><div class="tnp tnp-widget"><form method="post" action="https://machinelearningmastery.in/?na=s"> <input type="hidden" name="nr" value="widget"><input type="hidden" name="nlang" value=""><div class="tnp-field tnp-field-email"><label for="tnp-email">Email</label> <input class="tnp-email" type="email" name="ne" value="" required></div> <div class="tnp-field tnp-field-button"><input class="tnp-submit" type="submit" value="Subscribe" > </div> </form> </div></section> <section id="recent-posts-2" class="widget widget_recent_entries"> <h3 class="widget-title"><span>Recent Posts</span></h3> <ul> <li> <a href="https://machinelearningmastery.in/2021/09/17/paradoxes-in-data-science-kdnuggets/">Paradoxes in Data Science – KDnuggets</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/17/what-2-years-of-self-teaching-data-science-taught-me/">What 2 years of self-teaching data science taught me</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/17/introducing-tensorflow-similarity-kdnuggets/">Introducing TensorFlow Similarity – KDnuggets</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/16/what-is-the-real-difference-between-data-engineers-and-data-scientists/">What Is The Real Difference Between Data Engineers and Data Scientists?</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/16/adventures-in-mlops-with-github-actions-iterative-ai-label-studio-and-nbdev/">Adventures in MLOps with Github Actions, Iterative.ai, Label Studio and NBDEV</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/16/the-machine-deep-learning-compendium-open-book/">The Machine & Deep Learning Compendium Open Book</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/16/easy-sql-in-native-python/">Easy SQL in Native Python</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/15/launch-amazon-sagemaker-studio-from-external-applications-using-presigned-urls/">Launch Amazon SageMaker Studio from external applications using presigned URLs</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/15/kdnuggets-top-blogs-rewards-for-august-2021/">KDnuggets Top Blogs Rewards for August 2021</a> </li> <li> <a href="https://machinelearningmastery.in/2021/09/15/datacated-expo-oct-5-live-streamedexplore-new-ai-data-science-tech/">DATAcated Expo, Oct 5, Live-streamed,Explore new AI / Data Science Tech</a> </li> </ul> </section> </div><!-- .sidebar-wrap --> </aside><!-- #sidebar-primary --> </div><!-- .main-content-grid --> </div><!-- #main --> <footer id="footer" class="site-footer footer hgrid-stretch inline-nav" role="contentinfo" itemscope="itemscope" itemtype="https://schema.org/WPFooter"> <div class="hgrid"> <div class="hgrid-span-6 footer-column"> <section id="hootkit-ticker-9" class="widget widget_hootkit-ticker"> <div class="ticker-widget ticker-usercontent ticker-simple ticker-userstyle ticker-withbg ticker-style1" style="background:#f1f1f1;color:#ff4530;" ><i class="fa-weixin fab ticker-icon"></i> <div class="ticker-msg-box" data-speed='0.03'> <div class="ticker-msgs"> <div class="ticker-msg"><div class="ticker-msg-inner">Subscribe for the latest news, updates, tips and more delivered right to your inbox.</div></div> </div> </div> </div></section> </div> <div class="hgrid-span-3 footer-column"> <section id="media_image-13" class="widget widget_media_image"><img width="220" height="49" src="https://i2.wp.com/machinelearningmastery.in/wp-content/uploads/2019/12/Machine-Learning-Mastery-banner.gif?fit=220%2C49&ssl=1" class="image wp-image-127 attachment-full size-full jetpack-lazy-image" alt="" loading="lazy" style="max-width: 100%; height: auto;" data-lazy-src="https://i2.wp.com/machinelearningmastery.in/wp-content/uploads/2019/12/Machine-Learning-Mastery-banner.gif?fit=220%2C49&ssl=1&is-pending-load=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></section> </div> <div class="hgrid-span-3 footer-column"> <section id="hootkit-social-icons-8" class="widget widget_hootkit-social-icons"> <div class="social-icons-widget social-icons-small"><a href="https://github.com/machinelearningmasteryindia" class=" social-icons-icon fa-github-block" target="_blank"> <i class="fa-github fab"></i> </a><a href="mailto:machinelearningmasteryindia@gmail.com" class=" social-icons-icon fa-envelope-block"> <i class="fa-envelope fas"></i> </a><a href="https://www.linkedin.com/in/machine-learning-b065081a9/" class=" social-icons-icon fa-linkedin-block" target="_blank"> <i class="fa-linkedin-in fab"></i> </a><a href="https://twitter.com/sitworld" class=" social-icons-icon fa-twitter-block" target="_blank"> <i class="fa-twitter fab"></i> </a></div></section> </div> </div> </footer><!-- #footer --> <div id="post-footer" class=" post-footer hgrid-stretch linkstyle"> <div class="hgrid"> <div class="hgrid-span-12"> <p class="credit small"> <a class="privacy-policy-link" href="https://machinelearningmastery.in/privacy-policy/">Privacy Policy</a> Designed using <a class="theme-link" href="https://wphoot.com/themes/unos/" title="Unos WordPress Theme">Unos</a>. Powered by <a class="wp-link" href="https://wordpress.org">WordPress</a>. </p><!-- .credit --> </div> </div> </div> </div><!-- #page-wrapper --> <!--googleoff: all--><div id="cookie-law-info-bar" data-nosnippet="true"><span>This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. <a role='button' tabindex='0' class="cli_settings_button" style="margin:5px 20px 5px 20px;" >Cookie settings</a><a role='button' tabindex='0' data-cli_action="accept" id="cookie_action_close_header" class="medium cli-plugin-button cli-plugin-main-button cookie_action_close_header cli_action_button" style="display:inline-block; margin:5px; ">ACCEPT</a></span></div><div id="cookie-law-info-again" style="display:none;" data-nosnippet="true"><span id="cookie_hdr_showagain">Privacy & Cookies Policy</span></div><div class="cli-modal" data-nosnippet="true" id="cliSettingsPopup" tabindex="-1" role="dialog" aria-labelledby="cliSettingsPopup" aria-hidden="true"> <div class="cli-modal-dialog" role="document"> <div class="cli-modal-content cli-bar-popup"> <button type="button" class="cli-modal-close" id="cliModalClose"> <svg class="" viewBox="0 0 24 24"><path d="M19 6.41l-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z"></path><path d="M0 0h24v24h-24z" fill="none"></path></svg> <span class="wt-cli-sr-only">Close</span> </button> <div class="cli-modal-body"> <div class="cli-container-fluid cli-tab-container"> <div class="cli-row"> <div class="cli-col-12 cli-align-items-stretch cli-px-0"> <div class="cli-privacy-overview"> <h4>Privacy Overview</h4> <div class="cli-privacy-content"> <div class="cli-privacy-content-text">This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.</div> </div> <a class="cli-privacy-readmore" aria-label="Show more" tabindex="0" role="button" data-readmore-text="Show more" data-readless-text="Show less"></a> </div> </div> <div class="cli-col-12 cli-align-items-stretch cli-px-0 cli-tab-section-container"> <div class="cli-tab-section"> <div class="cli-tab-header"> <a role="button" tabindex="0" class="cli-nav-link cli-settings-mobile" data-target="necessary" data-toggle="cli-toggle-tab"> Necessary </a> <div class="wt-cli-necessary-checkbox"> <input type="checkbox" class="cli-user-preference-checkbox" id="wt-cli-checkbox-necessary" data-id="checkbox-necessary" checked="checked" /> <label class="form-check-label" for="wt-cli-checkbox-necessary">Necessary</label> </div> <span class="cli-necessary-caption">Always Enabled</span> </div> <div class="cli-tab-content"> <div class="cli-tab-pane cli-fade" data-id="necessary"> <div class="wt-cli-cookie-description"> Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information. </div> </div> </div> </div> <div class="cli-tab-section"> <div class="cli-tab-header"> <a role="button" tabindex="0" class="cli-nav-link cli-settings-mobile" data-target="non-necessary" data-toggle="cli-toggle-tab"> Non-necessary </a> <div class="cli-switch"> <input type="checkbox" id="wt-cli-checkbox-non-necessary" class="cli-user-preference-checkbox" data-id="checkbox-non-necessary" checked='checked' /> <label for="wt-cli-checkbox-non-necessary" class="cli-slider" data-cli-enable="Enabled" data-cli-disable="Disabled"><span class="wt-cli-sr-only">Non-necessary</span></label> </div> </div> <div class="cli-tab-content"> <div class="cli-tab-pane cli-fade" data-id="non-necessary"> <div class="wt-cli-cookie-description"> Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website. </div> </div> </div> </div> </div> </div> </div> </div> <div class="cli-modal-footer"> <div class="wt-cli-element cli-container-fluid cli-tab-container"> <div class="cli-row"> <div class="cli-col-12 cli-align-items-stretch cli-px-0"> <div class="cli-tab-footer wt-cli-privacy-overview-actions"> <a id="wt-cli-privacy-save-btn" role="button" tabindex="0" data-cli-action="accept" class="wt-cli-privacy-btn cli_setting_save_button wt-cli-privacy-accept-btn cli-btn">SAVE & ACCEPT</a> </div> </div> </div> </div> </div> </div> </div> </div> <div class="cli-modal-backdrop cli-fade cli-settings-overlay"></div> <div class="cli-modal-backdrop cli-fade cli-popupbar-overlay"></div> <!--googleon: all--> <div id="fb-root"></div> <script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v8.0&appId=683648729088349&autoLogAppEvents=1"> </script> <!--Start of Tawk.to Script (0.5.5)--> <script type="text/javascript"> var Tawk_API=Tawk_API||{}; var Tawk_LoadStart=new Date(); (function(){ var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0]; s1.async=true; s1.src='https://embed.tawk.to/5ec04a92967ae56c521a742a/default'; s1.charset='UTF-8'; s1.setAttribute('crossorigin','*'); s0.parentNode.insertBefore(s1,s0); })(); </script> <!--End of Tawk.to Script (0.5.5)--> <script type="text/javascript"> window.WPCOM_sharing_counts = {"https:\/\/machinelearningmastery.in\/2021\/06\/02\/metrics-for-classification-using-oml4py-part-i\/":1518}; </script> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = 'https://connect.facebook.net/en_US/sdk.js#xfbml=1&appId=249643311490&version=v2.3'; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <script> document.body.addEventListener( 'is.post-load', function() { if ( 'undefined' !== typeof FB ) { FB.XFBML.parse(); } } ); </script> <script type="text/javascript"> ( function () { var currentScript = document.currentScript; // Helper function to load an external script. function loadScript( url, cb ) { var script = document.createElement( 'script' ); var prev = currentScript || document.getElementsByTagName( 'script' )[ 0 ]; script.setAttribute( 'async', true ); script.setAttribute( 'src', url ); prev.parentNode.insertBefore( script, prev ); script.addEventListener( 'load', cb ); } function init() { loadScript( 'https://platform.linkedin.com/in.js?async=true', function () { if ( typeof IN !== 'undefined' ) { IN.init(); } } ); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', init ); } else { init(); } document.body.addEventListener( 'is.post-load', function() { if ( typeof IN !== 'undefined' ) { IN.parse(); } } ); } )(); </script> <script id="tumblr-js" type="text/javascript" src="https://assets.tumblr.com/share-button.js"></script> <script type="text/javascript"> ( function () { // Pinterest shared resources var s = document.createElement( 'script' ); s.type = 'text/javascript'; s.async = true; s.setAttribute( 'data-pin-hover', true ); s.src = window.location.protocol + '//assets.pinterest.com/js/pinit.js'; var x = document.getElementsByTagName( 'script' )[ 0 ]; x.parentNode.insertBefore(s, x); // if 'Pin it' button has 'counts' make container wider function init() { var shares = document.querySelectorAll( 'li.share-pinterest' ); for ( var i = 0; i < shares.length; i++ ) { var share = shares[ i ]; if ( share.querySelector( 'a span:visible' ) ) { share.style.width = '80px'; } } } if ( document.readyState !== 'complete' ) { document.addEventListener( 'load', init ); } else { init(); } } )(); </script> <script> (function(r, d, s) { r.loadSkypeWebSdkAsync = r.loadSkypeWebSdkAsync || function(p) { var js, sjs = d.getElementsByTagName(s)[0]; if (d.getElementById(p.id)) { return; } js = d.createElement(s); js.id = p.id; js.src = p.scriptToLoad; js.onload = p.callback sjs.parentNode.insertBefore(js, sjs); }; var p = { scriptToLoad: 'https://swx.cdn.skype.com/shared/v/latest/skypewebsdk.js', id: 'skype_web_sdk' }; r.loadSkypeWebSdkAsync(p); })(window, document, 'script'); </script> <div id="sharing_email" style="display: none;"> <form action="/2021/06/02/metrics-for-classification-using-oml4py-part-i/" method="post"> <label for="target_email">Send to Email Address</label> <input type="email" name="target_email" id="target_email" value="" /> <label for="source_name">Your Name</label> <input type="text" name="source_name" id="source_name" value="" /> <label for="source_email">Your Email Address</label> <input type="email" name="source_email" id="source_email" value="" /> <input type="text" id="jetpack-source_f_name" name="source_f_name" class="input" value="" size="25" autocomplete="off" title="This field is for validation and should not be changed" /> <img style="float: right; display: none" class="loading" src="https://machinelearningmastery.in/wp-content/plugins/jetpack/modules/sharedaddy/images/loading.gif" alt="loading" width="16" height="16" /> <input type="submit" value="Send Email" class="sharing_send" /> <a rel="nofollow" href="#cancel" class="sharing_cancel" role="button">Cancel</a> <div class="errors errors-1" style="display: none;"> Post was not sent - check your email addresses! </div> <div class="errors errors-2" style="display: none;"> Email check failed, please try again </div> <div class="errors errors-3" style="display: none;"> Sorry, your blog cannot share posts by email. </div> </form> </div> <script data-cfasync="false" type="text/javascript">if (window.addthis_product === undefined) { window.addthis_product = "wpp"; } if (window.wp_product_version === undefined) { window.wp_product_version = "wpp-6.2.6"; } if (window.addthis_share === undefined) { window.addthis_share = {}; } if (window.addthis_config === undefined) { window.addthis_config = {"data_track_clickback":true,"ui_atversion":"300"}; } if (window.addthis_plugin_info === undefined) { window.addthis_plugin_info = {"info_status":"enabled","cms_name":"WordPress","plugin_name":"Share Buttons by AddThis","plugin_version":"6.2.6","plugin_mode":"AddThis","anonymous_profile_id":"wp-2f16336e765908d13c2d341ff0393457","page_info":{"template":"posts","post_type":["post","page","e-landing-page"]},"sharing_enabled_on_post_via_metabox":false}; } (function() { var first_load_interval_id = setInterval(function () { if (typeof window.addthis !== 'undefined') { window.clearInterval(first_load_interval_id); if (typeof window.addthis_layers !== 'undefined' && Object.getOwnPropertyNames(window.addthis_layers).length > 0) { window.addthis.layers(window.addthis_layers); } if (Array.isArray(window.addthis_layers_tools)) { for (i = 0; i < window.addthis_layers_tools.length; i++) { window.addthis.layers(window.addthis_layers_tools[i]); } } } },1000) }()); </script><script src='https://machinelearningmastery.in/wp-content/plugins/jetpack/_inc/build/photon/photon.min.js?ver=20191001' id='jetpack-photon-js'></script> <script src='https://machinelearningmastery.in/wp-includes/js/comment-reply.min.js?ver=5.6.5' id='comment-reply-js'></script> <script id='hoverIntent-js-extra'> var hootData = {"stickySidebar":"disable","contentblockhover":"enable","contentblockhovertext":"disable"}; </script> <script src='https://machinelearningmastery.in/wp-includes/js/hoverIntent.min.js?ver=1.8.1' id='hoverIntent-js'></script> <script src='https://machinelearningmastery.in/wp-content/themes/unos/js/jquery.superfish.min.js?ver=1.7.5' id='jquery-superfish-js'></script> <script src='https://machinelearningmastery.in/wp-content/themes/unos/js/jquery.fitvids.min.js?ver=1.1' id='jquery-fitvids-js'></script> <script src='https://machinelearningmastery.in/wp-content/themes/unos/js/jquery.parallax.min.js?ver=1.4.2' id='jquery-parallax-js'></script> <script id='ap-frontend-js-js-extra'> var ap_form_required_message = ["This field is required","accesspress-anonymous-post"]; var ap_captcha_error_message = ["Sum is not correct.","accesspress-anonymous-post"]; </script> <script src='https://machinelearningmastery.in/wp-content/plugins/accesspress-anonymous-post/js/frontend.js?ver=2.8.1' id='ap-frontend-js-js'></script> <script src='https://machinelearningmastery.in/wp-content/plugins/hootkit/assets/jquery.lightSlider.min.js?ver=1.1.2' id='jquery-lightSlider-js'></script> <script src='https://machinelearningmastery.in/wp-content/plugins/hootkit/assets/widgets.min.js?ver=2.0.7' id='hootkit-widgets-js'></script> <script id='hootkit-miscmods-js-extra'> var hootkitMiscmodsData = {"ajaxurl":"https:\/\/machinelearningmastery.in\/wp-admin\/admin-ajax.php"}; </script> <script src='https://machinelearningmastery.in/wp-content/plugins/hootkit/assets/miscmods.min.js?ver=2.0.7' id='hootkit-miscmods-js'></script> <script src='https://machinelearningmastery.in/wp-content/plugins/page-links-to/dist/new-tab.js?ver=3.3.5' id='page-links-to-js'></script> <script src='https://s7.addthis.com/js/300/addthis_widget.js?ver=5.6.5#pubid=ra-5e0c443d44eeeb15' id='addthis_widget-js'></script> <script src='https://machinelearningmastery.in/wp-content/plugins/jetpack/vendor/automattic/jetpack-lazy-images/src/js/intersectionobserver-polyfill.min.js?ver=1.1.2' id='jetpack-lazy-images-polyfill-intersectionobserver-js'></script> <script id='jetpack-lazy-images-js-extra'> var jetpackLazyImagesL10n = {"loading_warning":"Images are still loading. Please cancel your print and try again."}; </script> <script src='https://machinelearningmastery.in/wp-content/plugins/jetpack/vendor/automattic/jetpack-lazy-images/src/js/lazy-images.min.js?ver=1.1.2' id='jetpack-lazy-images-js'></script> <script src='https://machinelearningmastery.in/wp-content/plugins/jetpack/_inc/build/postmessage.min.js?ver=9.8.1' id='postmessage-js'></script> <script src='https://machinelearningmastery.in/wp-content/plugins/jetpack/_inc/build/jquery.jetpack-resize.min.js?ver=9.8.1' id='jetpack_resize-js'></script> <script src='https://machinelearningmastery.in/wp-content/plugins/jetpack/_inc/build/likes/queuehandler.min.js?ver=9.8.1' id='jetpack_likes_queuehandler-js'></script> <script src='https://machinelearningmastery.in/wp-content/themes/unos/js/hoot.theme.min.js?ver=2.9.11' id='hoot-theme-js'></script> <script src='https://machinelearningmastery.in/wp-content/plugins/youtube-embed-plus/scripts/fitvids.min.js?ver=13.4.3' id='__ytprefsfitvids__-js'></script> <script id='wpgdprc.js-js-extra'> var wpgdprcData = {"ajaxURL":"https:\/\/machinelearningmastery.in\/wp-admin\/admin-ajax.php","ajaxSecurity":"5f20633e8d","isMultisite":"","path":"\/","blogId":""}; </script> <script src='https://machinelearningmastery.in/wp-content/plugins/wp-gdpr-compliance/dist/js/front.min.js?ver=1629244814' id='wpgdprc.js-js'></script> <script src='https://machinelearningmastery.in/wp-includes/js/wp-embed.min.js?ver=5.6.5' id='wp-embed-js'></script> <script id='jetpack_related-posts-js-extra'> var related_posts_js_options = {"post_heading":"h4"}; </script> <script src='https://machinelearningmastery.in/wp-content/plugins/jetpack/_inc/build/related-posts/related-posts.min.js?ver=20210604' id='jetpack_related-posts-js'></script> <script defer src='https://machinelearningmastery.in/wp-content/plugins/akismet/_inc/form.js?ver=4.1.12' id='akismet-form-js'></script> <script id='sharing-js-js-extra'> var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"}; </script> <script src='https://machinelearningmastery.in/wp-content/plugins/jetpack/_inc/build/sharedaddy/sharing.min.js?ver=9.8.1' id='sharing-js-js'></script> <script id='sharing-js-js-after'> var windowOpen; ( function () { function matches( el, sel ) { return !! ( el.matches && el.matches( sel ) || el.msMatchesSelector && el.msMatchesSelector( sel ) ); } document.body.addEventListener( 'click', function ( event ) { if ( ! event.target ) { return; } var el; if ( matches( event.target, 'a.share-facebook' ) ) { el = event.target; } else if ( event.target.parentNode && matches( event.target.parentNode, 'a.share-facebook' ) ) { el = event.target.parentNode; } if ( el ) { event.preventDefault(); // If there's another sharing window open, close it. if ( typeof windowOpen !== 'undefined' ) { windowOpen.close(); } windowOpen = window.open( el.getAttribute( 'href' ), 'wpcomfacebook', 'menubar=1,resizable=1,width=600,height=400' ); return false; } } ); } )(); var windowOpen; ( function () { function matches( el, sel ) { return !! ( el.matches && el.matches( sel ) || el.msMatchesSelector && el.msMatchesSelector( sel ) ); } document.body.addEventListener( 'click', function ( event ) { if ( ! event.target ) { return; } var el; if ( matches( event.target, 'a.share-telegram' ) ) { el = event.target; } else if ( event.target.parentNode && matches( event.target.parentNode, 'a.share-telegram' ) ) { el = event.target.parentNode; } if ( el ) { event.preventDefault(); // If there's another sharing window open, close it. if ( typeof windowOpen !== 'undefined' ) { windowOpen.close(); } windowOpen = window.open( el.getAttribute( 'href' ), 'wpcomtelegram', 'menubar=1,resizable=1,width=450,height=450' ); return false; } } ); } )(); </script> <iframe src='https://widgets.wp.com/likes/master.html?ver=202137#ver=202137' scrolling='no' id='likes-master' name='likes-master' style='display:none;'></iframe> <div id='likes-other-gravatars'><div class="likes-text"><span>%d</span> bloggers like this:</div><ul class="wpl-avatars sd-like-gravatars"></ul></div> <script>!function(){window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[],advanced_ads_ready_queue.push=window.advanced_ads_ready;for(var d=0,a=advanced_ads_ready_queue.length;d<a;d++)advanced_ads_ready(advanced_ads_ready_queue[d])}();</script><script src='https://stats.wp.com/e-202137.js' defer></script> <script> _stq = window._stq || []; _stq.push([ 'view', {v:'ext',j:'1:9.8.1',blog:'170785677',post:'1518',tz:'-5.5',srv:'machinelearningmastery.in'} ]); _stq.push([ 'clickTrackerInit', '170785677', '1518' ]); </script> </body> </html> <!-- Page generated by LiteSpeed Cache 4.4.1 on 2021-09-18 09:25:40 -->