Published 09/2025
Updated 10/2025

Machine Learning Internship - EFI Automotive

Completed a 3-month internship focusing on data analysis of actuators and developing a machine learning model for actuator classification. Additionally, gained hands-on experience with Azure DevOps, exploring version control and workflow management in a professional setting.

Contributor
Machine Learning Internship - EFI Automotive

During the summer after my third year studying Computer Science at INSA Lyon, I had the opportunity to join EFI Automotive in Beynost, France for a three-month internship. This experience allowed me to apply what I had learned in class to a real-world challenge and dive deep into the world of data analysis, automation, and machine learning.

EFI Automotive HQ, Beynost, France

Figure: EFI Automotive HQ, Beynost, France

Understanding the Problem

EFI Automotive produces electromechanical actuators — key components in modern vehicles that transform electrical energy into precise motion. To ensure high-quality products, the company conducts rigorous testing, particularly looking for faults like over-current during actuator operation.

However, I quickly learned that this testing process was entirely manual, which made it slow, error-prone, and difficult to scale. My mission? Automate the validation of test results using data science and ML tools.

Working with .dmd Files: Data in the Wild

The test data was stored in a format I had never seen before: .dmd (Dewetron Measurement Data) files. These files recorded everything from current to position over time — thousands of data points captured at high frequency.

To handle them, I used the PyDmdReader Python library to load the data, then transformed it into Pandas DataFrames for analysis. The focus was on two main channels:

  • Current (to detect anomalies)
  • Position (to identify when the actuator was operating)

Building a Model: Thresholds and Templates

  • I built a basic but effective model using a threshold-based technique:
  • For all "OK" signals, I created upper and lower limits to define a safe zone.
  • Any new signal that exceeded these limits was considered potentially faulty.

While simple, the initial results weren’t perfect (F1-score < 0.7). But it was a solid foundation.

Digging Deeper: Noise, Normalization, and Synchronization

Real-world data is rarely clean, and I faced challenges like:

  • Noisy signals
  • Varying amplitude across operations
  • Time misalignments between actuator events

To tackle these, I implemented:

  • Normalization
  • Moving Average Smoothing
  • Synchronization

These changes drastically improved the model's accuracy. After tuning hyperparameters, we achieved a perfect F1-score (0.9) on our labeled test set.

Making It Useful: A CLI Tool for Engineers

To bridge the gap between model and practical usage, I built a Command Line Interface (CLI) using the Typer Python library. This tool allowed engineers to:

  • Train new models
  • Predict test results
  • Log history of predictions

I structured the project using the MVC (Model-View-Controller) pattern to keep it clean and maintainable.

Key Takeaways

This internship wasn’t just a technical challenge — it was a lesson in communication, autonomy, and real-world problem solving. I had to:

  • Learn new data formats and libraries on the fly
  • Collaborate with both engineers and developers
  • Translate noisy measurements into actionable insights

By the end, we had a working prototype that saved time, reduced errors, and proved how even simple ML models can bring huge value when applied thoughtfully.

What’s Next?

I hope to continue improving the model by:

  • Adding more diverse training data
  • Speeding up processing with multiprocessing
  • Testing with deep learning methods for even higher accuracy

This internship confirmed my passion for building practical, data-driven solutions — and reminded me that sometimes, even a Python script can make a big difference.