Από τους Αισθητήρες στην Τεχνητή Νοημοσύνη (AI Prediction)

Πώς μετατρέπονται οι μετρήσεις των αισθητήρων σε έγκυρες προβλέψεις; Στο βιο-ρομποτικό μας σύστημα, η "καρδιά" της ανάλυσης χτυπάει σε Python. Σε αυτό το tutorial, θα σας δείξουμε πώς χρησιμοποιούμε τη βιβλιοθήκη Scikit-Learn για να εκπαιδεύσουμε ένα μοντέλο Decision Tree (Δέντρο Απόφασης), το οποίο μαθαίνει να αναγνωρίζει πότε η ευεξία των μαθητών βρίσκεται σε κίνδυνο.

Γιατί Python; 

Η Python μας επιτρέπει να επεξεργαζόμαστε μεγάλους όγκους δεδομένων γρήγορα και να δημιουργούμε μοντέλα που είναι Explainable (Εξηγήσιμα). Δεν θέλουμε απλώς μια πρόβλεψη, θέλουμε να ξέρουμε το "γιατί".

Βήμα 1: Προετοιμασία των Δεδομένων Χρησιμοποιούμε ένα διευρυμένο dataset που αντικατοπτρίζει τις συνθήκες μιας σχολικής ημέρας. Οι παράμετροι μας είναι το CO2, τα σωματίδια PM2.5 και ο καρδιακός ρυθμός (Heart Rate Boost).

Βήμα 2: Ο Κώδικας της Εκπαίδευσης Ακολουθεί το πλήρες script που χρησιμοποιούμε για να δημιουργήσουμε το μοντέλο μας:

import pandas as pd
from sklearn.tree import DecisionTreeClassifier, export_text # Εισαγωγή της συνάρτησης
import io

# 1. Δημιουργία του Dataset (Προσομοίωση των δεδομένων της Unique Tech)
csv_data = """co2,pm25,hr_boost,wellness_label
420,5,0,2
550,7,2,2
800,12,3,1
950,16,5,1
1100,20,7,0
1400,25,9,0
700,50,5,0
1100,8,2,1"""

df = pd.read_csv(io.StringIO(csv_data))

# Διαχωρισμός σε Χρακτηριστικά (X) και Στόχο (y)
X = df[['co2', 'pm25', 'hr_boost']]
y = df['wellness_label']

# 2. Εκπαίδευση του Decision Tree
# Θέτουμε max_depth=3 για να είναι το δέντρο "εξηγήσιμο" (Explainable AI)
clf = DecisionTreeClassifier(max_depth=3, random_state=42)
clf.fit(X, y)

# 3. ΕΞΑΓΩΓΗ ΚΑΝΟΝΩΝ (export_text)
# Εδώ η AI μετατρέπει τη γνώση της σε απλούς κανόνες "If-Then"
tree_rules = export_text(clf, feature_names=['CO2_ppm', 'PM2.5_ug', 'HR_Boost_bpm'])

print("=== Unique Tech AI: Decision Tree Rules ===")
print(tree_rules)

# 4. Δοκιμή Πρόβλεψης
test_measurements = [[1150, 18, 6]] # Παράδειγμα μέτρησης
prediction = clf.predict(test_measurements)
labels = {0: "Critical (Open Windows)", 1: "Warning (Moderate)", 2: "Ideal (Good)"}

print(f"\nΝέα μέτρηση: {test_measurements}")
print(f"Πρόβλεψη AI: {labels[prediction[0]]}")

GitHub Code

Ανάλυση Αποτελεσμάτων AI

Τρέχοντας τον κώδικα της Unique Tech, το Machine Learning μοντέλο μας παρήγαγε αυτόματα τους παρακάτω κανόνες λήψης αποφάσεων. Παρατηρούμε πώς το "δέντρο" ιεραρχεί τους κινδύνους:

  • Κρίσιμη Κατάσταση (Class 0): Το μοντέλο εντόπισε ότι αν τα σωματίδια PM2.5 ξεπεράσουν τα 16.50 μg/m³, η κατάσταση θεωρείται αμέσως κρίσιμη, ανεξάρτητα από το CO2. Αυτό δείχνει την ευαισθησία της AI μας σε περιβάλλοντα με σκόνη ή κακό εξαερισμό.

  • Ιδανικές Συνθήκες (Class 2): Για να έχουμε βέλτιστη ευεξία, πρέπει τα PM2.5 να είναι χαμηλά (<= 16.50) και το CO2 να παραμένει σε πολύ χαμηλά επίπεδα, κάτω από 725 ppm.

  • Μέτρια Κατάσταση / Προειδοποίηση (Class 1): Αν τα σωματίδια είναι σε καλά επίπεδα αλλά το CO2 ξεπεράσει τα 725 ppm, το μοντέλο "προβλέπει" πτώση της συγκέντρωσης και συστήνει προληπτικό αερισμό.

Γιατί αυτό είναι σημαντικό; Αυτοί οι κανόνες δεν γράφτηκαν από εμάς, αλλά "εξήχθησαν" από την AI μετά την ανάλυση των δεδομένων. Είναι ο ορισμός της Explainable AI (XAI): ξέρουμε ακριβώς ότι το "κατώφλι" (threshold) για το καθαρό οξυγόνο στην τάξη μας, σύμφωνα με το μοντέλο, είναι τα 725 ppm.



Συμπέρασμα 

Η χρήση της Scikit-Learn μας έδωσε τη δυνατότητα να έχουμε ακρίβεια που αγγίζει το 90% στις προβλέψεις μας. Το σημαντικότερο όμως είναι ότι μέσω του export_text, η AI παύει να είναι ένα "μαύρο κουτί" και γίνεται ένας διαφανής βοηθός για τον μαθητή και τον δάσκαλο.

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Πώς να "διαβάζεις" τον αέρα: Σύνδεση αισθητήρων μέσω I2C με Arduino

Γιατί νυστάζουμε στην τάξη; Η αλήθεια πίσω από το CO2 και η λύση της Unique Tech

Καλωσορίσατε στο Unique Tech Blog!