Implementing Multiclass Classification using Perceptron

In this example, our goal is to create a model based on pixel values that can identify handwritten digits (0-9) in text. The MNIST dataset is a well-known dataset for this job, which is a classic machine learning problem called handwritten digit recognition.

Step 1 : Importing necessary libraries

We start by loading the necessary libraries, including the MNIST dataset from sklearn.datasets and Scikit-Learn for machine learning operations.

Python3

from sklearn.datasets import fetch_openml
from sklearn.linear_model import Perceptron
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import seaborn as sns

                    

Step 2 : Loading dataset

Using the fetch_openml method from Scikit-Learn, we import the MNIST dataset. The MNIST dataset comprises of handwritten digits (0–9) and their related labels in 28×28 pixel pictures.

Python3

# Load the MNIST dataset
mnist = fetch_openml('mnist_784')
X = mnist.data
y = mnist.target.astype(int)
print(X.shape)
print(y.shape)

                    

Output:

(70000, 784)
(70000,)

The dataset is loaded as a dictionary-like object in which the digit labels for each image’s pixels are located in mnist.target and its pixel values are stored in mnist.data.

Step 3: Splitting the Dataset into Test and Training set

Utilizing the train_test_split function of Scikit-Learn, we divided the dataset into training and testing sets. In this instance, 30% of the data are set aside for testing.

Python3

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

                    

Step 4: Creating Perceptron Model

Using the Perceptron class from Scikit-Learn, we build a Perceptron model. We give the training’s maximum iteration count (max_iter) as well as the learning rate (eta0).

Python3

# Create a Perceptron model
perceptron = Perceptron(max_iter=1000, eta0=0.1)

                    

Step 4: Model Training

Using the training set of data, we train the Perceptron model. Based on the pixel values of the images, the model develops the ability to differentiate between several digit classes.

Python3

# Train the model
perceptron.fit(X_train, y_train)

                    

Step 5: Prediction

In order to forecast the digit labels for the test images, we use the trained Perceptron model to make predictions on the testing data after training.

Python3

# Make predictions
y_pred = perceptron.predict(X_test)
print(y_pred)

                    

Output:

['8' '4' '8' ... '2' '9' '5']

Step 6: Evaluation

We determine the accuracy of the model’s predictions to evaluate its performance.

Python3

# Evaluate accuracy
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

                    

Output:

Accuracy: 0.87

Step 7: Confusion Matrix

Python3

# Calculate confusion matrix
conf_matrix = confusion_matrix(y_test, y_pred)
  
sns.heatmap(conf_matrix, annot = True, cmap= 'Blues')
plt.ylabel('True')
plt.xlabel('False')
plt.title('Confusion Matrix')
plt.show()

                    

Output:

Heatmap for the Confusion Matrix

We calculate the confusion matrix using confusion_matrix(y_test, y_pred), where y_test contains the true labels, and y_pred contains the predicted labels. We use matplotlib and seaborn to create a heatmap visualization of the confusion matrix, making it easier to interpret. The heatmap is annotated with the actual numerical values from the confusion matrix. The x-axis represents the predicted labels, and the y-axis represents the true labels.

Perceptron Algorithm for Classification using Sklearn

Assigning a label or category to an input based on its features is the fundamental task of classification in machine learning. One of the earliest and most straightforward machine learning techniques for binary classification is the perceptron. It serves as the framework for more sophisticated neural networks. This post will examine how to use Scikit-Learn, a well-known Python machine-learning toolkit, to conduct binary classification using the Perceptron algorithm.

Similar Reads

Perceptron

A simple binary linear classifier called a perceptron generates predictions based on the weighted average of the input data. Based on whether the weighted total exceeds a predetermined threshold, a threshold function determines whether to output a 0 or a 1. One of the earliest and most basic machine learning methods used for binary classification is the perceptron. Frank Rosenblatt created it in the late 1950s, and it is a key component of more intricate neural network topologies....

Components of a Perceptron:

Input Features (x): Predictions are based on the characteristics or qualities of the input data, or input features (x). A number value is used to represent each feature. The two classes in binary classification are commonly represented by the numbers 0 (negative class) and 1 (positive class).Input Weights (w): Each input information has a weight (w), which establishes its significance when formulating predictions. The weights are numerical numbers as well and are either initialized to zeros or small random values.Weighted Sum (): To calculate the weighted sum, use the dot product of the input features’ (x) weights and their associated features’ (w) weights. Mathematically, it is written as . Activation Function (Step Function) : The activation function, which is commonly a step function, is applied to the weighted sum (). If the weighted total exceeds a predetermined threshold, the step function is utilized to decide the perceptron’s output. The output is 1 (positive class) if is greater than or equal to the threshold and 0 (negative class) otherwise....

Working of the Perceptron:

Initialization: The weights (w) are initially initialized, frequently using tiny random values or zeros.Prediction: The Perceptron calculates the weighted total () of the input features and weights in order to provide a forecast for a particular input.Activation Function: Following the computation of the weighted sum (), an activation function is used. The perceptron outputs 1 (positive class) if is greater than or equal to a specific threshold; otherwise, it outputs 0 (negative class) because the activation function is a step function. Updating Weight: Weights are updated if a misclassification, or an inaccurate prediction, is made by the perceptron. The weight update is carried out to reduce prediction inaccuracy in the future. Typically, the update rule involves shifting the weights in a way that lowers the error. The perceptron learning rule, which is based on the discrepancy between the expected and actual class labels, is the most widely used rule.Repeat: Each input data point in the training dataset is repeated through steps 2 through 4 one more time. This procedure keeps going until the model converges and accurately categorizes the training data, which could take a certain amount of iterations....

Steps required for classification using Perceptron:

There are various steps involved in performing classification using the Perceptron algorithm in Scikit-Learn:...

Implementing Binary Classification using Perceptron

Let’s consider the few examples to understand the classification using Sklearn. In this example, we identify tumors as malignant or benign using the Breast Cancer Wisconsin dataset and a variety of characteristics, including mean radius, mean texture, and others....

Implementing Multiclass Classification using Perceptron

...

Challenges and Limitations

...

Conclusion

...