Loading
Loading
Machine learning has three main types, each suited to a different kind of problem. Understanding the difference is the first step toward choosing the right algorithm.
Definition: The model learns from labeled data ā every example has a known correct answer.
When to use: When you have data with known correct answers.
Two subtypes:
Definition: The model finds patterns in unlabeled data ā no correct answers provided upfront.
When to use: When you want to discover hidden patterns in data.
Subtypes:
Definition: An agent learns by trial and error to maximize a reward signal.
Applications: AlphaGo, robotics, game AI, data center optimization.
Do you have labeled data?
āāā Yes ā Supervised
ā āāā Numeric or category output?
ā āāā Numeric ā Regression
ā āāā Category ā Classification
āāā No ā Unsupervised
āāā Group or compress?
āāā Group ā Clustering
āāā Compress ā Dimensionality Reduction
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification, make_blobs, make_regression
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.cluster import KMeans
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, mean_squared_error
print("=" * 55)
print("Ł
ŁŲ§Ų±ŁŲ©: Supervised vs Unsupervised Learning")
print("=" * 55)
# āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
# 1. Supervised ā Regression
# āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print("\n1. SUPERVISED ā Regression (Ų§ŁŲŖŁŲØŲ¤ ŲØŲ§ŁŲ£Ų³Ų¹Ų§Ų±)")
X_reg, y_reg = make_regression(n_samples=200, n_features=1,
noise=30, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(
X_reg, y_reg, test_size=0.2, random_state=42
)
reg_model = LinearRegression()
reg_model.fit(X_train, y_train)
y_pred = reg_model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f" RMSE = {rmse:.2f} (ŁŁŁ
Ų§ Ų£ŲµŲŗŲ±Ų Ų£ŁŲ¶Ł)")
# āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
# 2. Supervised ā Classification
# āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print("\n2. SUPERVISED ā Classification (ŲŖŲµŁŁŁ)")
X_clf, y_clf = make_classification(n_samples=300, n_features=2,
n_redundant=0, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(
X_clf, y_clf, test_size=0.2, random_state=42
)
clf_model = LogisticRegression()
clf_model.fit(X_train, y_train)
accuracy = accuracy_score(y_test, clf_model.predict(X_test))
print(f" Accuracy = {accuracy:.1%}")
# āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
# 3. Unsupervised ā Clustering
# āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print("\n3. UNSUPERVISED ā Clustering (ŲŖŲ¬Ł
ŁŲ¹ ŲØŲÆŁŁ ŲŖŲ³Ł
ŁŲ§ŲŖ)")
# ŲØŁŲ§ŁŲ§ŲŖ ŲØŲÆŁŁ labels ā Ų§ŁŁŁ
ŁŲ°Ų¬ ŁŁŲŖŲ“Ł Ų§ŁŁ
Ų¬Ł
ŁŲ¹Ų§ŲŖ ŲØŁŁŲ³Ł
X_cluster, _ = make_blobs(n_samples=300, centers=4,
cluster_std=0.8, random_state=42)
kmeans = KMeans(n_clusters=4, random_state=42, n_init="auto")
kmeans.fit(X_cluster)
labels = kmeans.labels_
# Ų¹ŲÆŲÆ Ų§ŁŲ¹ŁŲ§ŲµŲ± ŁŁ ŁŁ Ł
Ų¬Ł
ŁŲ¹Ų©
unique, counts = np.unique(labels, return_counts=True)
print(" Ų§ŁŁ
Ų¬Ł
ŁŲ¹Ų§ŲŖ Ų§ŁŁ
ŁŲŖŲ“ŁŲ©:")
for g, c in zip(unique, counts):
print(f" Ł
Ų¬Ł
ŁŲ¹Ų© {g}: {c} Ų¹ŁŲµŲ±")
print("\n" + "=" * 55)
print("Ł
ŁŲ®Ųµ:")
print(" Regression ā ŁŲŖŁŲØŲ£ ŲØŲ£Ų±ŁŲ§Ł
Ł
Ų³ŲŖŁ
Ų±Ų© (Ł
Ų¹ labels)")
print(" Classification ā ŁŲµŁŁŁ ŁŁŲ¦Ų§ŲŖ (Ł
Ų¹ labels)")
print(" Clustering ā ŁŲ¬Ł
ŁŲ¹ ŲØŲÆŁŁ labels")
print("=" * 55)