## Introduction

Welcome, Python enthusiasts! If you’re on a quest to become a Python pro and delve into the exciting world of machine learning, you’ve come to the right place. In this comprehensive blog post, we’ll take you on a journey through the intricacies of machine learning, focusing on logistic regression in Python 3.

Logistic regression is a vital tool in the machine learning toolbox, often used for binary classification tasks. By the end of this guide, you’ll not only understand the theory behind logistic regression but also be equipped with complete Python code examples to implement it effectively.

So, let’s embark on this learning adventure, combining theory with practicality, and uncover the magic of logistic regression in Python 3.

## What is Logistic Regression?

Logistic regression is a classification algorithm used to predict the probability of a binary outcome (1 / 0, Yes / No, True / False) based on one or more independent variables. Unlike linear regression, which predicts continuous numerical values, logistic regression predicts probabilities and is particularly suitable for problems such as spam email detection, disease diagnosis, and customer churn prediction.

### When to Use Logistic Regression?

This is an excellent choice when you want to:

- Classify data into two distinct categories.
- Understand the impact of one or more features on the probability of a particular outcome.
- Make predictions based on input data.

Now, let’s dive into the implementation of logi stic regression in Python 3.

## Setting Up Your Python Environment

Before we start coding, ensure you have the necessary tools and libraries installed. It’s a straightforward process, so let’s get started.

### Step 1: Installing Python 3

If you haven’t already installed Python 3, visit the official Python website (https://www.python.org/downloads/) to download and install the latest version compatible with your operating system.

### Step 2: Installing Python Libraries

Python’s strength in machine learning comes from its libraries. The essential libraries for this regression are NumPy, pandas, scikit-learn, and Matplotlib for visualization. Open your terminal or command prompt and run the following command to install them:

`pip install numpy pandas scikit-learn matplotlib`

With your environment set up, we’re ready to delve into logistic regression through Python.

## Understanding Logistic Regression

### The Basics: Binary Logistic Regression

Let’s begin with the most fundamental form of regression: binary logistic regression. In this scenario, we aim to classify data into one of two categories (e.g., Yes or No).

Imagine you want to predict whether a student will be admitted to a university based on two factors: their past exam scores and the number of hours they studied. Here’s how you can implement binary logistic regression in Python:

```
import numpy as np
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
# Sample data
exam_scores = np.array([60, 75, 85, 40, 55, 80, 65, 90, 70, 30])
study_hours = np.array([5, 7, 8, 3, 4, 6, 5, 9, 7, 2])
admission_status = np.array([1, 1, 1, 0, 1, 1, 1, 1, 1, 0])
# Create feature matrix with two variables
X = np.column_stack((exam_scores, study_hours))
# Create and train the logistic regression model
model = LogisticRegression()
model.fit(X, admission_status)
# Make predictions
predicted_status = model.predict(X)
# Visualize the results
plt.scatter(exam_scores, study_hours, c=admission_status, cmap='bwr', marker='o', label='Actual')
plt.xlabel('Exam Scores')
plt.ylabel('Study Hours')
plt.legend()
plt.show()
```

In this example, we import the necessary libraries, prepare our data, create a logistic regression model, make predictions, and visualize the results. It’s a simple yet powerful demonstration of binary logistic regression in action.

### Going Further: Multinomial Logistic Regression

While binary logistic regression deals with two categories, multinomial logistic regression extends the concept to scenarios with more than two categories. This is commonly used in applications like image classification and text categorization.

Suppose you’re working on a project to classify images of fruits into three categories: apples, bananas, and oranges. Here’s how you can implement multinomial logistic regression in Python:

```
import numpy as np
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
# Sample data
width = np.array([6, 5, 7, 4, 5, 6, 7, 8, 6, 5, 4, 7, 8, 7, 6])
height = np.array([8, 7, 9, 5, 6, 7, 8, 9, 8, 6, 5, 8, 9, 8, 7])
fruit_type = np.array(['apple', 'apple', 'apple', 'banana', 'banana', 'banana', 'orange', 'orange', 'orange',
'apple', 'banana', 'banana', 'orange', 'orange', 'apple'])
fruit_type=[0 if i=='apple' else 1 if i=='banana' else 2 for i in fruit_type]
# Create feature matrix with two variables
X = np.column_stack((width, height))
# Create and train the multinomial logistic regression model
model = LogisticRegression(solver='lbfgs', multi_class='multinomial')
model.fit(X, fruit_type)
# Make predictions
predicted_fruit = model.predict(X)
# Visualize the results
plt.scatter(width, height, c=predicted_fruit, cmap='Set1', marker='o', label='Predicted')
plt.xlabel('Width')
plt.ylabel('Height')
plt.legend()
plt.show()
```

In this example, we use two features (width and height) to classify fruits into three categories. The code demonstrates how to create a multinomial logistic regression model and make predictions.

## Evaluating Your Model

Building a model is just the beginning. To ensure your logistic regression model is accurate and reliable, you need to evaluate its performance. Here are some common evaluation metrics:

### Accuracy

Accuracy measures the proportion of correctly predicted outcomes. It’s calculated by dividing the number of correct predictions by the total number of predictions.

```
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(admission_status, predicted_status)
print("Accuracy:", accuracy)
```

### Confusion Matrix

A confusion matrix provides a detailed view of model performance, showing the number of true positives, true negatives, false positives, and false negatives.

```
from sklearn.metrics import confusion_matrix
confusion = confusion_matrix(admission_status, predicted_status)
print("Confusion Matrix:")
print(confusion)
```

### Classification Report

The classification report includes precision, recall, and F1-score for each class, providing insight into the model’s ability to distinguish between categories.

```
from sklearn.metrics import classification_report
report = classification_report(admission_status, predicted_status)
print("Classification Report:")
print(report)
```

## Conclusion

Congratulations! You’ve embarked on a journey into the realm of logistic regression in Python 3. We’ve covered the basics, from setting up your environment to understanding the theory and writing Python code.

But remember, the world of machine learning is vast and ever-evolving. As you continue your Python journey, consider exploring more advanced topics like regularization techniques, feature engineering, and deep learning.

With dedication and practice, you’ll not only become a Python pro but also a master of machine learning. Keep coding, experimenting, and enjoying the process, for the possibilities in Python and machine learning are boundless.

Also, check out our other playlist Rasa Chatbot, Internet of things, Docker, Python Programming, MQTT, Tech News, ESP-IDF etc.

Become a member of our social family on youtube here.

Stay tuned and Happy Learning. ✌🏻😃

Happy coding, and welcome to the exciting world of logistic regression! ❤️🔥