Laboratorul 09: Introducere în Machine Learning

Scopul Laboratorului:

Obiective:

  • Înțelegerea conceptelor de bază ale Machine Learning (ML) și a regresiei liniare.
  • Utilizarea seturilor de date publice pentru antrenarea și evaluarea unui model de predicție.
  • Implementarea unui model de regresie liniară pentru a analiza relația dintre caracteristici și rezultate.

Teorie

Ce este Machine Learning (ML)?

Machine Learning este o metodă de analiză a datelor care automatizează construirea modelelor predictive. Se bazează pe ideea că sistemele pot învăța din date, identifica modele și lua decizii fără intervenție umană. Acest proces este esențial în aplicații precum:

  • Recomandările personalizate (Netflix, Amazon).
  • Predicții financiare.
  • Diagnostic medical asistat.

Tipuri de Machine Learning:

Supervised Learning
  • Modelul învață dintr-un set de date etichetat, unde fiecare intrare are un răspuns cunoscut.
  • Ex.: Prezicerea prețului unei case pe baza suprafeței.
  • Algoritmi populari: regresie liniară, arbori de decizie, rețele neuronale.
Unsupervised Learning
  • Modelul lucrează cu date neetichetate și găsește structuri ascunse.
  • Ex.: Clustering-ul clienților în funcție de comportament.
  • Algoritmi populari: K-means, PCA (analiza componentelor principale).
Reinforcement Learning
  • Modelul învață să ia decizii bazate pe recompense și penalizări din mediu.
  • Ex.: Un robot care învață să evite obstacolele.

Regresia liniară

Regresia liniară este una dintre cele mai simple metode de predicție folosite în învățarea supervizată. Scopul este de a găsi o relație liniară între o variabilă dependentă yy (de ex., prețul casei) și una sau mai multe variabile independente xx (de ex., suprafața casei).

Ecuația generală: y=m⋅x+by = m \cdot x + b

Unde:

  • yy: valoarea prezisă.
  • xx: variabila predictivă.
  • mm: panta liniei (impactul variabilei predictive asupra rezultatului).
  • bb: interceptul (valoarea yy când x=0x = 0).

Ce este setul de date Boston Housing?

Setul de date Boston Housing este utilizat frecvent în problemele de regresie. El conține informații despre prețurile caselor din suburbii ale Bostonului și caracteristici relevante, precum:

  • RM: Numărul mediu de camere.
  • CRIM: Rata criminalității.
  • DIS: Distanța față de centrele de afaceri.
Partea 1: Explorarea setului de date
from sklearn.datasets import load_boston
import pandas as pd
 
# Încărcarea datelor
boston = load_boston()
 
# Crearea unui DataFrame pentru o vizualizare mai bună
data = pd.DataFrame(boston.data, columns=boston.feature_names)
data['PRICE'] = boston.target
 
# Afișarea primelor 5 rânduri
print(data.head())
 
# Informații despre setul de date
print(data.info())
 
# Statistici descriptive
print(data.describe())
Partea 2: Implementarea regresiei liniare
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
 
# Încărcarea datelor
boston = load_boston()
X = boston.data[:, 5].reshape(-1, 1)  # RM (număr de camere)
y = boston.target  # Prețul locuinței
 
# Împărțirea datelor în seturi de antrenament și testare
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
 
# Crearea modelului de regresie liniară
model = LinearRegression()
 
# Antrenarea modelului
model.fit(X_train, y_train)
 
# Prezicerea valorilor pe setul de testare
predictions = model.predict(X_test)
 
# Calcularea erorii medii pătratice (MSE)
mse = mean_squared_error(y_test, predictions)
print(f"Eroarea medie pătratică: {mse:.2f}")
 
# Vizualizarea rezultatelor
plt.scatter(X_test, y_test, color='blue', label='Valori reale')
plt.plot(X_test, predictions, color='red', label='Linia de regresie')
plt.xlabel('Număr mediu de camere')
plt.ylabel('Prețul mediu al locuinței (în mii USD)')
plt.title('Regresie liniară - Boston Housing')
plt.legend()
plt.show()
 
# Predicție pentru o casă cu 6 camere
prediction = model.predict([[6]])
print(f"Prețul prezis pentru o casă cu 6 camere: {prediction[0]:.2f} mii USD")

Partea 3: Sarcina pentru studenți (1)

1.Explorare:

  • Schimbați predictorul principal din RM (număr de camere) cu o altă caracteristică, cum ar fi DIS (distanța față de centrele de afaceri) sau CRIM (rata criminalității).
  • Vizualizați relația dintre predictor și prețul locuinței folosind un grafic scatter.

2.Evaluare:

  • Calculați erorile medii pătratice (MSE) pentru diferite modele folosind diverși predictori.
  • Identificați predictorul care are cel mai mare impact asupra prețului.

3.Extindere:

  • Aplicați regresia liniară multiplă folosind mai multe caracteristici (de exemplu, RM, DIS și CRIM) pentru a prezice prețul.

Introducere în ESP32-CAM pentru aplicații IoT și TinyML

Obiective

  • Înțelegerea conceptelor de bază ale modulului ESP32-CAM.
  • Învățarea modului de configurare a mediului hardware și software pentru ESP32-CAM.
  • Explorarea potențialului de a implementa modele TinyML pe ESP32 folosind TensorFlow Lite.

Prezentare Teoretică

Ce este ESP32-CAM?

ESP32-CAM AI-Thinker este o variantă specializată a seriei ESP32, concepută pentru aplicații cu camere:

  • Echipat cu un modul de cameră OV2640.
  • Suportă stocarea pe carduri microSD pentru salvarea imaginilor sau videoclipurilor.
  • Utilizat frecvent în supraveghere, aplicații IoT și dispozitive edge alimentate de AI.

ESP32-CAM-MB este un programatorul micro USB de la Espressif Systems, având support pentru chipul serial CH340G.

IoT și TinyML cu ESP32

  • Aplicații IoT: ESP32 poate conecta dispozitive la servicii cloud pentru a înregistra date, a controla dispozitive de la distanță sau a transmite media.
  • TinyML: Folosind TensorFlow Lite, ESP32 poate rula modele de învățare automată pentru aplicații precum detectarea obiectelor, recunoașterea vocală și analiza predictivă.

Instructiuni demonstrative ESP32-CAM Ai-Thinker

Configurare hardware și software:

Urmați acest ghid pentru a configura ESP32-CAM Ai-Thinker:

In caz ca intampinati probleme consultati link-ul urmator: ESP32-CAM Troubleshooting

1. Dupa ce setup-ul a fost realizat il validam folosind urmatorul cod demo:

/*********
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/vs-code-platformio-ide-esp32-esp8266-arduino/
*********/

#include <Arduino.h>

#define LED 4

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED, HIGH);
  Serial.println("LED is on");
  delay(1000);
  digitalWrite(LED, LOW);
  Serial.println("LED is off");
  delay(1000);
}

Ce să faceți mai departe (implementarea TinyML):

2. Identificati cum se ruleaza un demo ce foloseste camera: CameraWebServer

3. Aflați cum să implementați modele TensorFlow Lite pe ESP32-CAM pentru sarcini TinyML urmând acest tutorial:TinyML ESP32.

Asigurati-va ca aveti instalate urmatoarele biblioteci:

  • EloquentTensorFlow32
  • EloquentTinyML
  • tflm_esp32
  • TensorFlowLite_ESP32</note>

Pentru a nu aparea eroare de build pentru tflm_esp32 redenumiti folderul esp32s3 in esp32 din cadrul librariei.

Lecturi și Resurse Suplimentare

priot/laboratoare/09.txt · Last modified: 2024/12/05 21:12 by jan.vaduva
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0