Skip to main content

PyTorch Tabular Data Classification (Personality Type Classification)

 

In this article, we will explore how to classify categories from tabular data stored in a .csv file using a neural network built with PyTorch. Suppose you're given a dataset where each row corresponds to an instance, and it includes both numerical features and a target class label such as Class1, Class2, or Class3. Your task is to train a model that can predict the correct class based on the input features.

In our example, the target classes are Introvert, Extrovert, and Ambivert, and the dataset contains 29 other columns representing various input features. We aim to build a classification model using a feedforward neural network in PyTorch. This includes defining multiple layers, selecting an appropriate loss function (e.g., CrossEntropyLoss), and optimizing the model using techniques like the Adam optimizer to improve accuracy.

In the field of machine learning (ML) and deep learning (DL), machines are particularly good at detecting patterns in data. While convolutional neural networks (CNNs) are commonly used for tasks like image recognition, fully connected neural networks are well-suited for tabular classification tasks. These models can learn complex relationships in data and make predictions on abstract categories, such as sentiment, user behavior, or personality type.

In this tutorial, we will use PyTorch to build and train a neural network that classifies individuals into one of the three personality types: Introvert, Extrovert, or Ambivert.

The code is simple and comes with a .ipynb file (Jupyter Notebook) and a dataset so you can start from scratch. 

 

Steps to Run the Code

If you are using Google Colab:

  • 1. Open the .ipynb file in Google Colab.
  • 2. Upload the .zip file containing the dataset.
  • 3. Run the code cells sequentially.
  • 4. Test with your own image or data to verify whether the model is working.

If you are using Jupyter Notebook locally:

  • 1. If not already installed, install Jupyter Notebook using the command:
    pip install jupyter notebook
  • 2. Open the notebook using the command:
    jupyter notebook
  • 3. Run each cell one by one to execute the code.

 

Code for personality-type classification


import torch
import torch.nn as nn
import torch.nn.functional as F
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

# Load your dataset
# Replace this path with your own file or URL
my_df = pd.read_csv('personality_synthetic_dataset.csv')

# Split features and target
X = my_df.drop('personality_type', axis=1).values   # 29 features
y = my_df['personality_type'].values                # target

# Train-test split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=10
)

# Convert to PyTorch tensors
X_train = torch.FloatTensor(X_train)
X_test = torch.FloatTensor(X_test)

# Label encode the target
label_encoder = LabelEncoder()
y_train = torch.LongTensor(label_encoder.fit_transform(y_train))
y_test = torch.LongTensor(label_encoder.transform(y_test))

# Normalize the inputs
X_train_mean = X_train.mean(dim=0)
X_train_std = X_train.std(dim=0)
X_train = (X_train - X_train_mean) / X_train_std
X_test = (X_test - X_train_mean) / X_train_std

# Define the neural network model
class Model(nn.Module):
    def __init__(self, in_features=29, h1=64, h2=32, h3=16, out_features=3):
        super().__init__()
        self.fc1 = nn.Linear(in_features, h1)
        self.fc2 = nn.Linear(h1, h2)
        self.fc3 = nn.Linear(h2, h3)
        self.fc4 = nn.Linear(h3, out_features)

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = F.relu(self.fc3(x))
        return self.fc4(x)

# Instantiate model
model = Model()

# Loss and optimizer
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)

# Train loop
epochs = 100
losses = []

for epoch in range(epochs):
    optimizer.zero_grad()
    y_pred = model(X_train)
    loss = criterion(y_pred, y_train)
    loss.backward()
    optimizer.step()

    losses.append(loss.item())

    if epoch % 10 == 0:
        print(f'Epoch {epoch}: Loss = {loss.item()}')
    

View Full Code on GitHub

Further Reading

  1.  



Contact Us

Name

Email *

Message *

Popular Posts

Online Simulator for ASK, FSK, and PSK Signal Generation

Interactive Digital Signal Processing (DSP) Tutorial and Simulator for ASK, FSK, and BPSK modulation techniques. Try our new Digital Signal Processing Simulator!   •   Interactive ASK, FSK, and BPSK tools updated for 2025. Start Now Digital Modulation Visualizer: ASK, FSK, & BPSK Simulator Learn and visualize binary modulation techniques (ASK, FSK, BPSK) in real-time with adjustable carrier and sampling parameters. Perfect for DSP students and engineers. 📡 ASK Simulator 📶 FSK Simulator 🎚️ BPSK Simulator 📚 More Topics ASK Modulator FSK Modulator BPSK Modulator Demodulation More Topics 1. ASK (Ampli...

UGC NET Electronic Science Previous Year Question Papers with Solutions

Download Papers and Solutions Exam Pattern Preparation Tips FAQs More Home / Engineering & Other Exams / UGC NET 2026 PYQ 📊 Exam Highlights: Electronic Science (88) Feature Details Junior Research Fellowship (JRF) ₹37,000 + HRA per month Eligibility M.Sc/M.Tech in Electronics (55%) Validity of Certificate JRF (3 Years) | Lectureship (Lifetime) 📥 Download UGC NET Electronics PDFs Complete collection of previous year question papers, answer keys and explanations for Subject Code 88. Start Downloading 📂 View All Question Papers June 2025 - Question Paper Download PDF June 2025 - Sol...

Direction of Arrival (DoA) Online Simulator (using MUSIC)

Interactive DOA Simulator X-axis XY angle (deg): 45 XZ angle (deg): 30 Noise: 0.05 Y-axis XY angle (deg): 60 YZ angle (deg): 45 Noise: 0.05 Z-axis XZ angle (deg): 60 YZ angle (deg): 30 Noise: 0.05 Estimated DOA (deg): 0 Simulation Workflow and Mathematical Background This simulator demonstrates Direction of Arrival (DOA) estimation using three-axis sensor signals (X, Y, Z), Maximal Ratio Combining (MRC) , and the MUSIC algorithm . It allows interactive control of signal angles and noise for teaching purposes. 1. Signal Generation A pure sinewave signal of frequency f is projected onto three axes using user-defined angles in different planes: X-axis: θ XY , θ XZ Y-axis: θ XY , θ YZ Z-axis: θ XZ , θ YZ Mathematically, for each time sample t : x(t) = s(t) * cos(θ_xy_x) * cos(θ_xz_x) + n_x(t) y(t) = s(t) * sin(θ_xy_y) * cos(θ_yz_y) + n_y(t) z(t) = s(t) * sin(θ_xz_z) * sin(θ_yz_z) + n_z(t) wh...

Constellation Diagrams of ASK, PSK, and FSK (with MATLAB Code + Simulator)

Constellation Diagrams: ASK, FSK, and PSK Comprehensive guide to signal space representation, including interactive simulators and MATLAB implementations. 📘 Overview 🧮 Simulator ⚖️ Theory 📈 Q-function 📚 Resources BASK Modulation Transmits one of two signals: 0 or $\sqrt{E_b}$, representing binary 0 and 1. Simple but sensitive to noise. BFSK Modulation Transmits one of two signals: $\sqrt{E_b}$ on the Y-axis or $\sqrt{E_b}$ on the X-axis. These are orthogonal signals. BPSK Modulation Transmits $+\sqrt{E_b}$ or $-\sqrt{E_b}$ (antipodal signaling). Most efficient binary scheme. ...

OFDM Symbols and Subcarriers Explained

This article explains how OFDM (Orthogonal Frequency Division Multiplexing) symbols and subcarriers work. It covers modulation, mapping symbols to subcarriers, subcarrier frequency spacing, IFFT synthesis, cyclic prefix, and transmission. Step 1: Modulation First, modulate the input bitstream. For example, with 16-QAM , each group of 4 bits maps to one QAM symbol. Suppose we generate a sequence of QAM symbols: s0, s1, s2, s3, s4, s5, …, s63 Step 2: Mapping Symbols to Subcarriers Assume N sub = 8 subcarriers. Each OFDM symbol in the frequency domain contains 8 QAM symbols (one per subcarrier): Mapping (example) OFDM symbol 1 → s0, s1, s2, s3, s4, s5, s6, s7 OFDM symbol 2 → s8, s9, s10, s11, s12, s13, s14, s15 … OFDM sym...

Design of CMOS XOR/XNOR Gates

Design of CMOS XOR/XNOR Gates The semiconductor industry has experienced rapid integration of multimedia applications into mobile electronics, leading to very high integration density in CMOS VLSI. As operating frequencies increase, power consumption, speed, silicon area, and reliability become critical considerations. The XOR-XNOR circuits are fundamental building blocks in arithmetic circuits (Full Adders, Multipliers), compressors, comparators, parity checkers, code converters, error-detecting/correcting codes, and phase detectors. Their performance directly impacts the complex circuits they are used in. Design goals include full output voltage swing, low power consumption, reduced transistor count, minimal delay, and simultaneous non-skewed outputs. Static Logic (Static CMOS) Stat...

DSB-SC Modulation and Demodulation

📘 Overview 🧮 DSB-SC Modulator 🧮 DSB-SC Detector 🧮 Comparisons 🧮 Q & A Summary 📚 Further Reading Double-sideband suppressed-carrier transmission (DSB-SC) is transmission in which frequencies produced by amplitude modulation (AM) are symmetrically spaced above and below the carrier frequency and the carrier level is reduced to the lowest practical level, ideally being completely suppressed. In the DSB-SC modulation, unlike in AM, the wave carrier is not transmitted; thus, much of the power is distributed between the sidebands, which implies an increase of the cover in DSB-SC, compared to AM, for the same power use. DSB-SC transmission is a special case of double-sideband reduced carrier transmission. It is used for radio data systems. This model is frequently used in Amateur radio voice communications, especially on High-Frequency bands. Spectrum DSB-SC i...