 ## Multi-class Classification Problem: Geoscience instance (Facies)

In this half, we are going to elaborate on some mannequin analysis metrics particularly for multi-class classification issues. Accuracy, precision, recall, and confusion matrix are mentioned beneath for our facies downside. This put up is the third a part of part1, part2. You can discover the jupyter pocket book file of this half right here.

When I used to be contemporary in machine learning, I all the time considered setting up a mannequin as an important step of the ML duties, whereas now, I’ve one other idea; mannequin analysis talent is the elemental key to modeling success. We must be sure that our mannequin is working properly with new knowledge. On the opposite hand, we now have to have the ability to interpret varied analysis metrics to grasp our mannequin’s strengths and weaknesses main us to mannequin enchancment hints. As we’re coping with the multi-class downside on this tutorial, we are going to concentrate on associated analysis metrics, however earlier than that, we have to get conversant in some definitions.

## 3–1 Model Metrics

When we’re working with classification issues, we can have Four sorts of chance with mannequin outcomes:

A) True Positive(TP) is the result of the mannequin accurately predicts the constructive class. In our dataset, a constructive class is a label that we’re in search of particularly for that label prediction. For instance, if we’re analyzing ‘Dolomite’ class prediction, TP is the variety of really predicted Dolomite samples of take a look at knowledge by the mannequin.

B) True Negative(TN) is an end result the place the mannequin accurately predicts the adverse class. Negative class in our dataset for Dolomite prediction are these facies lessons that really predicted as not Dolomite(predicted as the remainder of lessons and really weren’t Dolomite).

C) False Positive(FP) is an end result the place the mannequin incorrectly predicts the constructive class. In our dataset, all facies lessons that incorrectly predicted as Dolomite once we are evaluating Dolomite class prediction.

D) False Negative(FN) is an end result the place the mannequin incorrectly predicts adverse class. Again for Dolomite prediction, FN is the prediction of Dolomite as non-Dolomite lessons.

1.Accuracy: it’s merely calculated as a fraction of right predictions over the overall variety of predictions.

Accuracy = (TP+TN) / (TP+TN+FP+FN)

2. Precision: this metric solutions this query: what quantity of constructive predictions is completely right?

Precision = TP / (TP+FP)
trying on the equation, we will see that if a mannequin has zero False Positive prediction, the precision will probably be 1. Again, in Dolomite prediction, this index reveals what quantity of predicted Dolomite is really Dolomite (not different facies are categorised as Dolomite).

3. Recall: recall reply this query: what quantity of precise positives is classed accurately?

Recall= TP / (TP+FN)
trying on the equation, we will see that if a mannequin has zero False Negative prediction, the recall will probably be 1. In our instance, recall reveals the proportion of Dolomite class that accurately recognized by the mannequin.

Note: to judge the mannequin effectivity, we have to contemplate each precision and recall collectively. Unfortunately, these two parameters act towards one another, enhancing one results in lowering the opposite. The preferrred case is that each of them present close to 1 values.

4. f1_score: The F1 rating might be interpreted as a weighted common of the precision and recall, the place an F1 rating reaches its finest worth at 1 and the worst rating at 0. The relative contribution of precision and recall to the F1 rating are equal. The components for the F1 rating is:

F1 = 2 * (precision * recall) / (precision + recall)

Let’s see one instance of Logistic Regression classifier efficiency:

Run:

`from sklearn.metrics import precision_recall_fscore_supportmodel_log=LogisticRegression(C = 10, solver = ‘lbfgs’, max_iter= 200 ) model_log.match(X_train, y_train)y_pred_log = model_log.predict(X_test)print(classification_report(y_test, y_pred_log, target_names= facies_labels))`