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ó
- Classificació Binària: Assigna una de dues etiquetes possibles.
- Classificació Multiclasse: Assigna una de múltiples etiquetes possibles.
- Classificació Multietiqueta: Assigna múltiples etiquetes a una sola instància.
Mètriques d'Avaluació
- Precisió (Accuracy): Proporció de prediccions correctes.
- Precisió (Precision): Proporció de prediccions positives correctes.
- Record (Recall): Proporció de positius reals correctament identificats.
- F1-Score: Mitjana harmònica de precisió i record.
Algoritmes de Classificació
- 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
- Importació de Llibreries: Importem les llibreries necessàries.
- Generació de Dades: Creem un conjunt de dades d'exemple.
- Divisió de Dades: Dividim les dades en conjunts d'entrenament i prova.
- Creació del Model: Instanciem un model de regressió logística.
- Entrenament del Model: Entrenem el model amb les dades d'entrenament.
- Predicció: Utilitzem el model per predir les etiquetes del conjunt de prova.
- Avaluació: Calculem la precisió del model.
- 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
- Creació del Model: Instanciem un model KNN amb k=3.
- Entrenament del Model: Entrenem el model amb les dades d'entrenament.
- Predicció: Utilitzem el model per predir les etiquetes del conjunt de prova.
- Avaluació: Calculem la precisió del model.
- 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
- Creació del Model: Instanciem un model SVM amb un kernel lineal.
- Entrenament del Model: Entrenem el model amb les dades d'entrenament.
- Predicció: Utilitzem el model per predir les etiquetes del conjunt de prova.
- 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.
Algoritmes Avançats
Mòdul 1: Introducció als Algoritmes Avançats
Mòdul 2: Algoritmes d'Optimització
- Programació Lineal
- Algoritmes d'Optimització Combinatòria
- Algoritmes Genètics
- Optimització de Colònia de Formigues
Mòdul 3: Algoritmes en Grafs
- Representació de Grafs
- Cerca en Grafs: BFS i DFS
- Algoritmes de Camins Mínims
- Algoritmes de Flux Màxim
- Algoritmes d'Aparellament en Grafs
Mòdul 4: Algoritmes de Cerca i Ordenació
Mòdul 5: Algoritmes d'Aprenentatge Automàtic
- Introducció a l'Aprenentatge Automàtic
- Algoritmes de Classificació
- Algoritmes de Regressió
- Xarxes Neuronals i Deep Learning
- Algoritmes de Clustering
Mòdul 6: Casos d'Estudi i Aplicacions
- Optimització en la Indústria
- Aplicacions de Grafs en Xarxes Socials
- Cerca i Ordenació en Grans Volums de Dades
- Aplicacions d'Aprenentatge Automàtic en la Vida Real