Introducció

Els algoritmes de classificació són una part fonamental de l'aprenentatge automàtic supervisat. Aquests algoritmes s'utilitzen per assignar etiquetes a les dades d'entrada basant-se en exemples anteriors. En aquesta secció, explorarem els conceptes bàsics, els tipus d'algoritmes de classificació, i proporcionarem exemples pràctics i exercicis per reforçar els conceptes apresos.

Conceptes Bàsics

Definició

La classificació és el procés de predir l'etiqueta d'una instància d'entrada. Les etiquetes poden ser categories discretes com "spam" o "no spam", "malalt" o "sa", etc.

Tipus de Classificació

  1. Classificació Binària: Assigna una de dues etiquetes possibles.
  2. Classificació Multiclasse: Assigna una de múltiples etiquetes possibles.
  3. Classificació Multietiqueta: Assigna múltiples etiquetes a una sola instància.

Mètriques d'Avaluació

  1. Precisió (Accuracy): Proporció de prediccions correctes.
  2. Precisió (Precision): Proporció de prediccions positives correctes.
  3. Record (Recall): Proporció de positius reals correctament identificats.
  4. F1-Score: Mitjana harmònica de precisió i record.

Algoritmes de Classificació

  1. Regresió Logística

Descripció

La regressió logística és un model estadístic que utilitza una funció logística per modelar una variable binària dependent.

Exemple de Codi

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# Generar dades d'exemple
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([0, 0, 1, 1, 1])

# Dividir les dades en entrenament i prova
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear el model de regressió logística
model = LogisticRegression()

# Entrenar el model
model.fit(X_train, y_train)

# Predir les etiquetes
y_pred = model.predict(X_test)

# Avaluar el model
accuracy = accuracy_score(y_test, y_pred)
print(f'Precisió: {accuracy}')

Explicació del Codi

  1. Importació de Llibreries: Importem les llibreries necessàries.
  2. Generació de Dades: Creem un conjunt de dades d'exemple.
  3. Divisió de Dades: Dividim les dades en conjunts d'entrenament i prova.
  4. Creació del Model: Instanciem un model de regressió logística.
  5. Entrenament del Model: Entrenem el model amb les dades d'entrenament.
  6. Predicció: Utilitzem el model per predir les etiquetes del conjunt de prova.
  7. Avaluació: Calculem la precisió del model.

  1. K-Nearest Neighbors (KNN)

Descripció

KNN és un algoritme senzill que classifica una instància basant-se en la majoria de les etiquetes dels seus k veïns més propers.

Exemple de Codi

from sklearn.neighbors import KNeighborsClassifier

# Crear el model KNN
knn = KNeighborsClassifier(n_neighbors=3)

# Entrenar el model
knn.fit(X_train, y_train)

# Predir les etiquetes
y_pred_knn = knn.predict(X_test)

# Avaluar el model
accuracy_knn = accuracy_score(y_test, y_pred_knn)
print(f'Precisió KNN: {accuracy_knn}')

Explicació del Codi

  1. Creació del Model: Instanciem un model KNN amb k=3.
  2. Entrenament del Model: Entrenem el model amb les dades d'entrenament.
  3. Predicció: Utilitzem el model per predir les etiquetes del conjunt de prova.
  4. Avaluació: Calculem la precisió del model.

  1. Suport Vector Machines (SVM)

Descripció

SVM és un algoritme que troba un hiperplà que separa les dades en diferents classes amb el màxim marge possible.

Exemple de Codi

from sklearn.svm import SVC

# Crear el model SVM
svm = SVC(kernel='linear')

# Entrenar el model
svm.fit(X_train, y_train)

# Predir les etiquetes
y_pred_svm = svm.predict(X_test)

# Avaluar el model
accuracy_svm = accuracy_score(y_test, y_pred_svm)
print(f'Precisió SVM: {accuracy_svm}')

Explicació del Codi

  1. Creació del Model: Instanciem un model SVM amb un kernel lineal.
  2. Entrenament del Model: Entrenem el model amb les dades d'entrenament.
  3. Predicció: Utilitzem el model per predir les etiquetes del conjunt de prova.
  4. Avaluació: Calculem la precisió del model.

Exercicis Pràctics

Exercici 1: Implementació de Regressió Logística

Descripció: Utilitza el conjunt de dades Iris per entrenar un model de regressió logística i avaluar-ne la precisió.

Codi Base:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# Carregar el conjunt de dades Iris
iris = load_iris()
X = iris.data
y = iris.target

# Dividir les dades en entrenament i prova
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear el model de regressió logística
model = LogisticRegression(max_iter=200)

# Entrenar el model
model.fit(X_train, y_train)

# Predir les etiquetes
y_pred = model.predict(X_test)

# Avaluar el model
accuracy = accuracy_score(y_test, y_pred)
print(f'Precisió: {accuracy}')

Exercici 2: Comparació de KNN i SVM

Descripció: Utilitza el conjunt de dades Wine per entrenar models KNN i SVM, i compara les seves precisions.

Codi Base:

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# Carregar el conjunt de dades Wine
wine = load_wine()
X = wine.data
y = wine.target

# Dividir les dades en entrenament i prova
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear i entrenar el model KNN
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
y_pred_knn = knn.predict(X_test)
accuracy_knn = accuracy_score(y_test, y_pred_knn)
print(f'Precisió KNN: {accuracy_knn}')

# Crear i entrenar el model SVM
svm = SVC(kernel='linear')
svm.fit(X_train, y_train)
y_pred_svm = svm.predict(X_test)
accuracy_svm = accuracy_score(y_test, y_pred_svm)
print(f'Precisió SVM: {accuracy_svm}')

Resum

En aquesta secció, hem explorat diversos algoritmes de classificació, incloent la regressió logística, KNN i SVM. Hem vist exemples pràctics de codi per a cada algoritme i hem proporcionat exercicis per reforçar els conceptes apresos. La classificació és una eina poderosa en l'aprenentatge automàtic que permet resoldre una àmplia varietat de problemes del món real.

© Copyright 2024. Tots els drets reservats