This document discusses using machine learning for IoT device virtualization. It outlines challenges with IoT application development like hardware availability and simulating real scenarios. It then describes how KnowThings uses machine learning to automatically discover data protocols from network traffic and generate adaptive virtual devices without expert knowledge. Their solution captures traffic, generates a "living" model using genome sequencing algorithms, and allows the virtual device to playback responses. This enables more effective testing of IoT applications during development.