# Supervised Learning vs Unsupervised Learning

Supervised Learning and Unsupervised Learning are two core subsets of machine learning, each with distinct approaches to analyzing data.

### Supervised Learning

Supervised learning involves training a machine learning model on a labeled dataset, which means that each training example is paired with an output label. The model learns from this data in order to make predictions or decisions, without requiring explicit programming. It's called "supervised" learning because the process of an algorithm learning from the training dataset can be thought of as a teacher supervising the learning process.

**Examples of Supervised Learning**:

- Classification tasks: Assigning categories (e.g., spam or not spam).
- Regression tasks: Predicting numerical values (e.g., price of a house).

**Code Example**: Here's a simple example of supervised learning using Python's scikit-learn library to implement linear regression.

`from sklearn.linear_model import LinearRegression`

from sklearn.model_selection import train_test_split

from sklearn.metrics import mean_squared_error

import numpy as np

# Sample data - let's say it's house sizes and their prices

X = np.array([[600], [800], [1000], [1200], [1400]]) # Features (house sizes)

y = np.array([150000, 200000, 250000, 300000, 350000]) # Labels (house prices)

# Split the data into training and testing sets

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Create and train the model

model = LinearRegression()

model.fit(X_train, y_train)

# Make predictions

predictions = model.predict(X_test)

# Evaluate the model

mse = mean_squared_error(y_test, predictions)

print(f"Mean Squared Error: {mse}")

# Expected output: Some numerical value representing the mean squared error

### Unsupervised Learning

Unsupervised learning, on the other hand, deals with unlabeled data. The system tries to learn the patterns and the structure from the data without any reference to known or labeled outcomes.

**Examples of Unsupervised Learning**:

- Clustering: Discovering groupings in the data (e.g., customer segments).
- Association: Identifying rules that highlight general patterns in the data (e.g., people that buy X also tend to buy Y).

**Code Example**: Below is an example of unsupervised learning where we use k-means clustering to find clusters in the data.

`from sklearn.cluster import KMeans`

import numpy as np

# Sample data - let's say we have some points in a 2D space

X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])

# Create the kmeans object with 2 clusters

kmeans = KMeans(n_clusters=2, random_state=42)

# Fit the model

kmeans.fit(X)

# Predict the clusters

predicted_clusters = kmeans.predict(X)

print(f"Predicted Clusters: {predicted_clusters}")

# Expected output: The cluster assignment for each point in the dataset

### Key Differences

**Data Labeling**:- Supervised: Requires labeled data.
- Unsupervised: Works with unlabeled data.

**Complexity**:- Supervised: Can be more complex to train as it may require large labeled datasets.
- Unsupervised: Less complex as it doesn't need labeled data.

**Usage**:- Supervised: When the output is known and the model needs to learn the mapping from input to output.
- Unsupervised: When the output is not known and the model needs to find the structure or relationships between different inputs.

**Algorithms**:- Supervised: Linear Regression, Logistic Regression, Support Vector Machine, Neural Networks, Decision Trees, etc.
- Unsupervised: K-Means, Hierarchical Clustering, DBSCAN, Principal Component Analysis, etc.

**Evaluation**:- Supervised: Easier to evaluate using methods such as accuracy, precision, recall, F1 score, etc.
- Unsupervised: Harder to evaluate due to the absence of ground truth, but metrics like Silhouette Score can be used for clustering.

## Last word

In the code examples, the supervised learning model predicts house prices based on sizes, and we use mean squared error to evaluate its performance. In unsupervised learning, k-means clustering algorithm groups the data points into two clusters without prior knowledge of the data labels.