Один из вариантов - сделать линейную регрессию для набора данных, чтобы получить наиболее подходящую линию. Если данные линейные, вы получите очень хорошее соответствие, и средняя ошибка должна быть низкой. В противном случае вы получите хорошую посадку и разумную ошибку.
В качестве альтернативы, вы можете рассмотреть преобразование набора данных путем преобразования каждой точки (x 0 , x 1 , ..., x n , y) до (x 0 , x 1 , ..., x n , e y ). Если данные были линейными, теперь они будут экспоненциальными, а если данные были логарифмическими, то теперь они будут линейными. Выполнение линейной регрессии и получение среднеквадратичной ошибки теперь будут иметь низкую ошибку для логарифмических данных и потрясающе огромную ошибку для линейных данных, поскольку экспоненциальная функция взрывается очень быстро.
Чтобы на самом деле реализовать регрессию, можно было бы использовать регрессию наименьших квадратов . Это даст дополнительное преимущество, заключающееся в том, что в дополнение к модели вы получите коэффициент корреляции, который также можно использовать для различения двух наборов данных.
Поскольку вы спрашивали, как это сделать в Java, быстрый поиск в Google показал этот код Java , чтобы выполнить линейную регрессию. Тем не менее, вы можете лучше подходить к языку, подобному Matlab, который специально оптимизирован для выполнения подобных запросов. Например, в Matlab вы можете сделать эту регрессию в одной строке кода, написав
linearFunction = inputs / outputs
Надеюсь, это поможет!