Usually, when I am given a dataset of $d\le 3$, I just plot the data and observe if linearly separable behaviour exists. When the dataset is of high dimensionality, I always follow a simple trick to identify if it is linearly separable or not: I run an `SVM` classifier using `Linear kernel`, and if the resulting accuracy is high (more than 90%), then I can say this dataset is linearly separable. If not, then I know this dataset is not linearly separable so I go to sophisticated ML algorithms like neural networks. Do you think this is a good approach?