Cluster Analysis

I would like to create a project that can give me Cluster Analysis. How would I go about doing that in EI? I think I would use K-Means Clustering? I want to generate a type of heat map thing with BLE RSSI readings.

Hi @davidloew, we use K-Means clustering currently for anomaly detection, but not for anything else. Could you give some examples of training data and the results you would expect? We can see how well it maps to our current blocks.

Hi, thanks for the quick turnaround. I’m thinking about using Bluetooth and RSSI data as it pertains to groups of devices. I want to see if I can identify trends of devices grouping together and how often they tend to stay together and if there are unknown devices that might interact with a group occasionally. It would be similar to Covid social distancing types of things but in reverse. The data would be device id’s or names, RSSI and power values. Just a theory I’m working on.

@dansitu any ideas on how to set something like this up?

Hi David,

This sounds like an interesting project. Is the goal here to have a model that would run on-device, or are you just trying to do some exploratory data analysis?

Assuming you’re looking to build an on-device model, what is the variable you would be trying to predict using the on-device model?

It maybe that you’re going for exploratory data analysis—for example, you might have a dataset of multiple time series of bluetooth interactions and you wish to to try to figure out how they relate to one another. In this case, it will make more sense to work in a general purpose Python data science environment (like a Jupyter notebook) rather than Edge Impulse.


Hi Dan,
Thanks for the reply. I was thinking that it could be a general purpose Python environment thing. I’m thinking the bluetooth devices just send their information up and the post processing is what determines how these devices interact and have interacted with each other.

The possible on-device scenario:

The variable might be an indicator that alarms when a device (B) that hasn’t typically interacted with device (A) occurs. It assumes that a cluster of devices seem to always interact with each other and when a new device enters the cluster an alarm could be raised. This could make each device smart about all other devices it interacts with regularly. So another way to look at it would be that a list of devices seem to always interact with each other and a new device has entered that scenario and we want to know that happened.

Not sure if this is a ML type thing but it’s interesting to explore!


OK, that makes sense! I think you can get away without using ML to solve this problem. If I understand correctly it’s also simpler than the COVID problem, since you’re not trying to trace contacts, so there doesn’t need to be any centralized tracking of interactions. All you need to know is that a previously unseen device has been spotted.

To implement this on an individual device, you might maintain a list of devices and number of recent interactions. When a device is spotted that isn’t in that list, or that has engaged in more interactions than its previous average, you can raise the alarm. You could set a threshold for how much interaction is required before raising the alarm.


Thanks Dan, Darn, I’ll have to find another thing to do with Edge Impulse and ML. Interesting point is to not try to force problems into AI/ML. Thanks for the input.


For sure! ML adds a lot of complexity, so if there’s a simpler way to solve a problem then it’s usually the better bet.