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.

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.

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.