En aquest tema, explorarem els conceptes bàsics del Machine Learning (ML) i com utilitzar la biblioteca scikit-learn per implementar models de ML en Python. Scikit-learn és una de les biblioteques més populars per a l'aprenentatge automàtic en Python, oferint eines simples i eficients per a l'anàlisi de dades i la mineria de dades.
Objectius del Tema
- Entendre els conceptes bàsics del Machine Learning.
- Familiaritzar-se amb la biblioteca scikit-learn.
- Aprendre a preparar les dades per a l'entrenament de models.
- Implementar models de ML bàsics amb scikit-learn.
- Avaluar el rendiment dels models.
Conceptes Bàsics del Machine Learning
Què és el Machine Learning?
El Machine Learning és una branca de la intel·ligència artificial que se centra en el desenvolupament d'algoritmes que permeten als ordinadors aprendre a partir de dades i fer prediccions o decisions sense ser explícitament programats per a cada tasca.
Tipus de Machine Learning
- Aprenentatge Supervisat: Els models s'entrenen amb dades etiquetades. Exemples inclouen la regressió i la classificació.
- Aprenentatge No Supervisat: Els models s'entrenen amb dades no etiquetades. Exemples inclouen el clustering i l'anàlisi de components principals (PCA).
- Aprenentatge per Reforç: Els models aprenen a prendre decisions a través de recompenses i càstigs.
Introducció a scikit-learn
Instal·lació
Per instal·lar scikit-learn, pots utilitzar pip:
Importació de la Biblioteca
Preparació de les Dades
Carregar un Dataset
Scikit-learn proporciona diversos datasets per a practicar. Un dels més utilitzats és el dataset Iris.
Divisió del Dataset
Abans d'entrenar un model, és important dividir les dades en conjunts d'entrenament i prova.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
Normalització de les Dades
La normalització és crucial per a molts algoritmes de ML.
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test)
Implementació de Models de Machine Learning
Regressió Lineal
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train)
Classificació amb K-Nearest Neighbors (KNN)
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train)
Avaluació del Rendiment del Model
Mètriques de Regressió
from sklearn.metrics import mean_squared_error, r2_score y_pred = model.predict(X_test) print("Mean Squared Error:", mean_squared_error(y_test, y_pred)) print("R2 Score:", r2_score(y_test, y_pred))
Mètriques de Classificació
from sklearn.metrics import accuracy_score, classification_report y_pred = knn.predict(X_test) print("Accuracy:", accuracy_score(y_test, y_pred)) print("Classification Report:\n", classification_report(y_test, y_pred))
Exercicis Pràctics
Exercici 1: Regressió Lineal amb el Dataset Boston
- Carrega el dataset Boston de scikit-learn.
- Divideix les dades en conjunts d'entrenament i prova.
- Normalitza les dades.
- Entrena un model de regressió lineal.
- Avalua el rendiment del model.
Solució
from sklearn.datasets import load_boston from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error, r2_score # Carregar el dataset boston = load_boston() X = boston.data y = boston.target # Dividir les dades X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Normalitzar les dades scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Entrenar el model model = LinearRegression() model.fit(X_train, y_train) # Predir i avaluar y_pred = model.predict(X_test) print("Mean Squared Error:", mean_squared_error(y_test, y_pred)) print("R2 Score:", r2_score(y_test, y_pred))
Exercici 2: Classificació amb el Dataset Digits
- Carrega el dataset Digits de scikit-learn.
- Divideix les dades en conjunts d'entrenament i prova.
- Entrena un model KNN.
- Avalua el rendiment del model.
Solució
from sklearn.datasets import load_digits from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, classification_report # Carregar el dataset digits = load_digits() X = digits.data y = digits.target # Dividir les dades X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Entrenar el model knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) # Predir i avaluar y_pred = knn.predict(X_test) print("Accuracy:", accuracy_score(y_test, y_pred)) print("Classification Report:\n", classification_report(y_test, y_pred))
Resum
En aquest tema, hem après els conceptes bàsics del Machine Learning i com utilitzar la biblioteca scikit-learn per implementar models de ML. Hem cobert la preparació de dades, la implementació de models de regressió i classificació, i l'avaluació del rendiment dels models. Els exercicis pràctics proporcionats ajudaran a reforçar aquests conceptes i habilitats.
Curs de Programació en Python
Mòdul 1: Introducció a Python
- Introducció a Python
- Configuració de l'Entorn de Desenvolupament
- Sintaxi de Python i Tipus de Dades Bàsics
- Variables i Constants
- Entrada i Sortida Bàsiques
Mòdul 2: Estructures de Control
Mòdul 3: Funcions i Mòduls
- Definició de Funcions
- Arguments de Funció
- Funcions Lambda
- Mòduls i Paquets
- Visió General de la Biblioteca Estàndard
Mòdul 4: Estructures de Dades
Mòdul 5: Programació Orientada a Objectes
Mòdul 6: Gestió de Fitxers
- Lectura i Escriptura de Fitxers
- Treballant amb Fitxers CSV
- Gestió de Dades JSON
- Operacions amb Fitxers i Directoris
Mòdul 7: Gestió d'Errors i Excepcions
Mòdul 8: Temes Avançats
- Decoradors
- Generadors
- Gestors de Context
- Concurrència: Fils i Processos
- Asyncio per a Programació Asíncrona
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb unittest
- Desenvolupament Guiat per Proves
- Tècniques de Depuració
- Ús de pdb per a la Depuració
Mòdul 10: Desenvolupament Web amb Python
- Introducció al Desenvolupament Web
- Conceptes Bàsics del Framework Flask
- Construcció d'APIs REST amb Flask
- Introducció a Django
- Construcció d'Aplicacions Web amb Django
Mòdul 11: Ciència de Dades amb Python
- Introducció a la Ciència de Dades
- NumPy per al Càlcul Numèric
- Pandas per a la Manipulació de Dades
- Matplotlib per a la Visualització de Dades
- Introducció al Machine Learning amb scikit-learn