Μονάδα 9 / 11

Ανάλυση δεδομένων αυτοκινήτου με Python: End-to-End

Κέρδη:

  • Δυνατότητα δημιουργίας μιας επαναλαμβανόμενης ροής εργασιών ανάλυσης που φορτώνει και καθαρίζει δεδομένα τηλεμετρίας, δοκιμών και παραγωγής με panda
  • Δυνατότητα κατανόησης και επαλήθευσης της εξόδου γραμμή προς γραμμή κατά τη λήψη κώδικα, ιδιοτήτων και βοήθειας οπτικοποίησης από την τεχνητή νοημοσύνη
  • Δυνατότητα ελέγχου των αποτελεσμάτων ανάλυσης για τη συνέπεια της μονάδας, τη διαρροή δεδομένων και την αναπαραγωγιμότητα

Σε προηγούμενες ενότητες, χρησιμοποιούσαμε την τεχνητή νοημοσύνη σαν «σύμβουλος». Σε αυτή την ενότητα, προχωράμε ένα βήμα παραπέρα και καθιερώνουμε μια ροή εργασίας που αναλύει δεδομένα αυτοκινήτου με τα χέρια μας, χρησιμοποιώντας Python. Ο στόχος δεν είναι να σας κάνουμε προγραμματιστή λογισμικού. Είναι να φτιάξεις έναν μηχανικό που μπορεί να κατανοήσει και να επαληθεύσει αυτόν τον κώδικα γραμμή προς γραμμή ενώ λαμβάνει βοήθεια κώδικα από την τεχνητή νοημοσύνη. Επειδή ο κώδικας που παράγεται από την τεχνητή νοημοσύνη μπορεί να είναι ελαττωματικός, όπως και το κείμενο που παράγεται από την τεχνητή νοημοσύνη. μπορεί να μπερδέψει τον όγκο, να διαρρεύσει δεδομένα, να κεντράρει λάθος στήλη. Το να εκτελείτε τον κώδικα χωρίς να τον καταλαβαίνετε είναι σαν να δημοσιεύετε μια ανυπόγραφη αναφορά.

Python γιατί; Επειδή είναι το de facto πρότυπο στην ανάλυση δεδομένων: μπορείτε εύκολα να επεξεργαστείτε δεδομένα τηλεμετρίας, δοκιμών και παραγωγής με panda (δεδομένα πίνακα), numpy (αριθμητική επεξεργασία), matplotlib (plot) και scikit-learn (μηχανική εκμάθηση).

Έξι βήματα για αναπαραγώγιμη ανάλυση

Μια σταθερή ανάλυση ακολουθεί πάντα το ίδιο πλαίσιο:

  1. Φόρτωση: Διαβάστε δεδομένα από το αρχείο.
  2. Επιθεώρηση: Ιδιότητα, στήλες, τύποι δεδομένων, τιμές που λείπουν.
  3. Καθαρισμός: Λείπει / ακραία τιμή, μονάδα, διόρθωση χρονικής σφραγίδας.
  4. Εξαγωγή χαρακτηριστικού: Εξαγωγή σημαντικών μεταβλητών.
  5. Ανάλυση/μοντέλο: Στατιστικά στοιχεία, οπτικοποίηση ή μοντέλο.
  6. Επαλήθευση και αναφορά: Παροχή αποτελεσμάτων, έλεγχος όγκου/διαρροής, εγγραφή.
Συμβουλή: Όταν ζητάτε κωδικό από το AI, πείτε «σχολιάστε τι κάνετε σε κάθε βήμα και γράψτε τις υποθέσεις σας». Έτσι, μπορείτε να επαληθεύσετε τον κωδικό καθώς τον διαβάζετε.

Παράδειγμα βήμα προς βήμα: ανάλυση τηλεμετρίας

Ο παρακάτω κώδικας φορτώνει μια εγγραφή CAN/τηλεμετρίας και κάνει βασικό έλεγχο. (Σημείωση: βεβαιωθείτε ότι κατανοείτε τους κωδικούς πριν τους εκτελέσετε· τα ονόματα των στηλών διαφέρουν ανάλογα με τα δεδομένα σας.)

εισαγωγή pandas ως pd# 1) Φόρτωση: CSV με ημίστιξη, timestampdf πρώτης στήλης = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # πόσες σειρές, πόσες στήλες print(df.dtypes κάθε στήλης) text)print(df.isna().sum()) # αριθμός τιμών που λείπουν ανά στήληprint(df.describe()) # συνοπτικά στατιστικά: ελάχ., μέγ., μέσος όρος

Η έξοδος describe() είναι η πρώτη σας ευκαιρία να επαληθεύσετε: εάν η μέγιστη τιμή στροφών κινητήρα είναι 45.000 rpm (συνήθης κινητήρας επιβατών ~7.000 rpm), υπάρχει σφάλμα μονάδας ή αισθητήρα.

Οι πιο συχνά χρησιμοποιούμενες εντολές panda στο βήμα ελέγχου και τι κάνουν:

εντολή

Τι κάνει

Τι επιβεβαιώνει;

δφ.σχήμα

Αριθμός σειρών/στηλών

Είναι το αναμενόμενο μέγεθος;

df.dtypes

Τύποι στηλών

Έχει γίνει κείμενο η στήλη του αριθμού;

df.isna().sum()

Λείπει ο αριθμός τιμών

Πόσος χώρος υπάρχει;

df.describe()

Ελάχ./μέγιστο/μέσος όρος

Είναι σωματικά λογικό;

df.duplicated().sum()

διπλότυπη σειρά

Υπάρχει διπλή εγγραφή;

# 3) Διαγραφή: επισημάνετε φυσικώς αδύνατες τιμές

Προσοχή: Μην διαγράψετε αμέσως το outlier. Κατανοήστε πρώτα γιατί είναι ακραίο. Είναι πραγματικό συμβάν (ξαφνική θέρμανση) ή βλάβη αισθητήρα; Η τυφλή διαγραφή μπορεί να κρύψει το πραγματικό σφάλμα.

# 4) Χαρακτηριστικό εξαγωγής: ρυθμός αύξησης της θερμοκρασίας (παράγωγο)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()Visualplotplot,# 5) pltplt.plot(df["time"], df["motor_sic"])plt.xlabel("Time"); plt.ylabel("Θερμοκρασία κινητήρα (C)")plt.title("Πορεία θερμοκρασίας κινητήρα")plt.show()

Αποτροπή διαρροής δεδομένων στην Python

Το πιο επικίνδυνο λάθος κατά τη δημιουργία ενός μοντέλου πρόβλεψης είναι η διαρροή δεδομένων (μονάδα 5): όταν το μοντέλο βλέπει πληροφορίες που δεν είναι γνωστές τη στιγμή της πρόβλεψης. Ο χρυσός κανόνας για να το αποφύγετε αυτό στις χρονοσειρές: προπονηθείτε με το παρελθόν, δοκιμή με το μέλλον — χωρίς τυχαία ανακάτεμα.

από sklearn.model_selection εισαγωγή train_test_split# FALSE: τυχαία διαίρεση της χρονοσειράς διαρρέει το μέλλον# df[df["time"] > όριο] # τελευταίο 20% μέλλον

Προσοχή: το train_test_split ανακατεύει τα δεδομένα από προεπιλογή (shuffle=True). Στη χρονολογική σειρά, αυτό μπερδεύει το μέλλον με την εκπαίδευση και παράγει μια ψευδή υψηλή βαθμολογία. Εάν το AI το έχει κάνει στον κώδικα που παράγει, φροντίστε να το διορθώσετε.

Συνέπεια μονάδας: σιωπηλός δολοφόνος

Τα πιο ύπουλα σφάλματα στην αυτοκινητοβιομηχανία είναι τα σφάλματα μονάδας: km/h σε m/s, Nm σε lb-ft, bar σε kPa, °C έως K. Η διατήρηση ενός λεξικού της μονάδας κάθε στήλης στην ανάλυση και η καταγραφή των μετατροπών σώζει σαφώς ζωές.

# Τεκμηριώστε τις μονάδες ρητά = {"speed": "km/h", "motor_sic": "C", "pressure": "bar"}# Ρητή μετατροπή εάν είναι απαραίτητο (km/h -> m/s)df["speed_ms"] = df["speed"] / 3,6

Μίνι περιπτωσιολογικές μελέτες

Περίπτωση 1 - Εντοπίστηκε σφάλμα με το describe(). Ένας αναλυτής εκτελεί τον κώδικα από το AI και κάνει μια εκτίμηση εύρους. Το αποτέλεσμα είναι παράλογα υψηλό. Όταν κοιτάμε την έξοδο describe(), βλέπουμε ότι η χωρητικότητα της μπαταρίας εισάγεται σε Wh σε ορισμένες γραμμές και σε kWh σε άλλες (1000 φορές διαφορά). Όταν η μονάδα φτάσει σε ομοιόμορφο τύπο, το αποτέλεσμα βελτιώνεται. Συμπέρασμα: Μια απλή συνοπτική στατιστική απέτρεψε μια κακή πρόβλεψη.

Περίπτωση 2 - Παγίδα σύγχυσης. Το μοντέλο φθοράς φρένων ενός ασκούμενου ήταν 98% ακριβές στο σετ δοκιμής. Όταν εξετάζεται ο κώδικας, μπορεί να φανεί ότι το train_test_split(shuffle=True) και οι χρονοσειρές αναμειγνύονται, πράγμα που σημαίνει ότι μελλοντικά σημεία διαρρέουν στην εκπαίδευση. Όταν διαιρείται με το χρόνο, η ακρίβεια πέφτει στο 80%, αλλά είναι πλέον ρεαλιστική. Συμπέρασμα: Ακριβώς επειδή ο κώδικας AI λειτούργησε, δεν ήταν σωστός. Ο άνθρωπος έπιασε τη διαρροή.

Περίπτωση 3 - Κατανόηση του ακραίου. Σε ένα αρχείο ανθεκτικότητας, ο κωδικός AI διαγράφει αυτόματα τις ακραίες τιμές καταπόνησης. Ο μηχανικός κοιτάζει τα διαγραμμένα σημεία. Αυτές ήταν ακριβώς οι στιγμές έναρξης ρωγμής που ενδιέφερε η δοκιμή. Η διαγραφή καταργείται και οι παραβιάσεις εξετάζονται ξεχωριστά. Αποτέλεσμα: Στην ενότητα "Καθαρισμός" το πραγματικό σήμα μπορεί να διαγραφεί. αμφισβητεί κάθε βήμα.

πρότυπα προτροπής

Πρότυπο 1 - Κωδικός αιτήματος (με εξήγηση):

Ρόλος: Είστε μέντορας αναλυτών δεδομένων Python. Εργασία: Γράψτε κώδικα που φορτώνει και ελέγχει ένα τηλεμετρικό CSV. Πλαίσιο: Στήλες: χρόνος, ταχύτητα (km/h), engine_sic (C), περιστροφή (rpm). Περιορισμός: Σχολιάστε κάθε σειρά. Εξηγήστε ποιος έλεγχος έγινε και γιατί. Προσθήκη φυσικώς αδύνατου ελέγχου αξίας. σιωπηλά διαγράφοντας τίποτα.Έξοδος: Σχολιασμένος κώδικας + ποια έξοδο πρέπει να κοιτάξω και γιατί.

Πρότυπο 2 - Επιθεώρηση διαρροών:

Ρόλος: Είστε αναθεωρητής κώδικα μηχανικής εκμάθησης. Εργασία: Ελέγξτε τον ακόλουθο κωδικό διαχωρισμού εκπαίδευσης/δοκιμής για διαρροές δεδομένων. Πλαίσιο: Πρόκειται για χρονοσειρά (τηλεμετρία οχήματος). Περιορισμός: Προειδοποίηση εάν υπάρχει τυχαία ανακάτεμα. Προτείνετε και αιτιολογήστε τη διάσπαση με βάση το χρόνο. Έξοδος: Ευρήματα + διορθωμένος κώδικας + επεξήγηση.

Πρότυπο 3 - Επικύρωση μονάδας:

Ρόλος: Είστε ελεγκτής ποιότητας δεδομένων. Εργασία: Προτείνετε ελέγχους που αναζητούν ασυνέπεια μονάδας σε ένα DataFrame. Πλαίσιο: Η χωρητικότητα μπορεί να είναι kWh σε ορισμένες σειρές και Wh σε άλλες. Έξοδος: Ελέγξτε τον κωδικό + πώς να βρείτε το ύποπτο μοτίβο.

Πρότυπο 4 - Οπτικοποίηση + σχόλιο:

Ρόλος: Είστε ειδικός στην οπτικοποίηση δεδομένων. Εργασία: Γράψτε κώδικα που απεικονίζει την πορεία της θερμοκρασίας του κινητήρα και τον ρυθμό αύξησης. Περιορισμός: Επισημάνετε τους άξονες με τη μονάδα. επισημάνετε οπτικά την ανωμαλία. μην ισχυρίζεστε οριστικό σφάλμα κατά την ερμηνεία του γραφήματος. Έξοδος: Κωδικός + τι να αναζητήσετε στο γράφημα.

Αδύναμη προτροπή / Ισχυρή προτροπή

Αδύναμη προτροπή:

Κατασκευάστε ένα μοντέλο με αυτά τα δεδομένα.

Δεν είναι σαφές ποιος στόχος, ποιο διαμέρισμα, ποια επαλήθευση. Η τεχνητή νοημοσύνη μπορεί να εξάγει κωδικοποιημένο, με διαρροή, τυφλή μονάδα.

Ισχυρή προτροπή:

Ρόλος: Είστε μέντορας Python ML. Εργασία: Γράψτε μια αρχική ροή εργασίας για να προβλέψετε τη φθορά των τακακιών και να επιδείξετε παγίδες επικύρωσης. Πλαίσιο: Τηλεμετρία χρονοσειρών. Στόχος: πάχος του υπολειπόμενου μαξιλαριού. Περιορισμός: Διαχωρισμός χρονοσειρών ανά χρόνο (χωρίς ανακάτεμα). επισημάνετε χαρακτηριστικά σε κίνδυνο διαρροής δεδομένων· Μονάδες εγγράφων, ερμηνεύστε κάθε βήμα. Σημειώστε ποιοι έλεγχοι απαιτούνται πριν το αποτέλεσμα βγει στο πεδίο. Έξοδος: Σχολιασμένος κωδικός + λίστα ελέγχου επαλήθευσης.

Συνήθη λάθη

  • Εκτέλεση του κώδικα χωρίς να τον καταλάβετε. Ο κωδικός AI μπορεί επίσης να είναι ελαττωματικός. Διαβάστε γραμμή προς γραμμή.
  • Ανάμιξη χρονοσειρών. shuffle=Το True διαρρέει το μέλλον και παράγει ένα ψεύτικο σκορ.
  • Διαγράψτε τυφλά το outlier. Το πραγματικό σήμα (έναρξη σφάλματος) μπορεί να διαγραφεί.
  • Χωρίς τεκμηρίωση της μονάδας. Σφάλματα όπως km/h vs m/s, Wh vs kWh αυξάνονται αθόρυβα.
  • Παράλειψη του βήματος describe()/check. Τα περισσότερα σφάλματα εμφανίζονται στα πρώτα συνοπτικά στατιστικά.

Συνοπτικά

  • Η Python (pandas, numpy, matplotlib, scikit-learn) είναι το de facto πρότυπο ανάλυσης δεδομένων αυτοκινήτου.
  • Επαναλαμβανόμενη ανάλυση: φόρτωση, επιθεώρηση, καθαρισμός, λειτουργία, ανάλυση, επικύρωση και αναφορά.
  • Είναι επιτακτική ανάγκη να κατανοήσετε και να επαληθεύσετε τον κώδικα που παράγει η τεχνητή νοημοσύνη γραμμή προς γραμμή. Ακριβώς επειδή λειτουργεί δεν σημαίνει ότι είναι σωστό.
  • Διατήρηση της διάκρισης παρελθόντος/μελλοντικού σε χρονοσειρές. Η τυχαία ανακάτεμα δημιουργεί διαρροή δεδομένων.
  • Η μοναδιαία συνέπεια και η ακραία ερμηνεία είναι σιωπηλά αλλά κρίσιμα σημεία επαλήθευσης.

Εργασία εφαρμογής

Πάρτε ένα μικρό σύνολο δεδομένων (πραγματική ή συνθετική τηλεμετρία). (1) Ακολουθώντας το πλαίσιο των έξι βημάτων, δημιουργήστε τον κώδικα φόρτωσης και ελέγχου με το Πρότυπο 1 και επιβεβαιώστε ότι κατανοείτε κάθε γραμμή. (2) Βρείτε τουλάχιστον μία ύποπτη τιμή στην έξοδο describe() και διερευνήστε γιατί. (3) Σε μια εργασία πρόβλεψης, χρονομετρήστε τη διαίρεση της εκπαίδευσης/δοκιμής και ελέγξτε τον κίνδυνο διαρροής με το Πρότυπο 2. (4) Τεκμηριώστε τη μονάδα κάθε στήλης που χρησιμοποιείτε σε ένα λεξικό.

λίστα ελέγχου

  • [ ] Ρύθμισα την ανάλυση με ένα πλαίσιο έξι βημάτων.
  • [ ] Διάβασα και κατάλαβα τον κώδικα που παράγει η τεχνητή νοημοσύνη γραμμή προς γραμμή.
  • [ ] Αναζήτησα ύποπτες τιμές με το describe()/audit.
  • [ ] Χώρισα τις χρονοσειρές κατά χρόνο (χωρίς ανακάτεμα).
  • [ ] Επισήμανα τα χαρακτηριστικά που διατρέχουν κίνδυνο διαρροής δεδομένων.
  • [ ] Τεκμηρίωσα τη μονάδα κάθε στήλης και έγραψα ρητά τις μετατροπές.