我有一组数据点,如果数据代表线性函数或对数函数,我很好奇。
数据集是二维的。
假设一组理想的数据点遵循函数f(x)= x。如果我绘制了数据点,我就能说它是线性的。
同样,如果数据点遵循函数f(x)= log(x),我将能够直观地告诉它是对数的。
另一方面,让程序确定一组数据是线性的还是对数的是非常重要的。我该如何处理?
答案 0 :(得分:9)
一种选择是对数据集执行linear regression以获得最佳拟合线。如果数据是线性的,那么你会得到很好的拟合,mean squared error应该很低。否则,你会得到一个合适的错误和合理的错误。
或者,您可以考虑通过转换每个点来转换数据集(x 0 ,x 1 ,...,x n ,y)到(x 0 ,x 1 ,...,x n ,e y )。如果数据是线性的,那么现在它将是指数级的,如果数据是对数的,现在它将是线性的。现在运行线性回归并获得均方误差将导致对数数据的误差较小,线性数据的误差非常大,因为指数函数的爆炸速度非常快。
要实际实施回归,一种选择是使用least-squares regression。除了模型之外,这还可以为您提供相关系数,这也可以用来区分两个数据集。
因为您已经在Java中询问了如何执行此操作,因此快速Google搜索会出现 this Java code 进行线性回归。但是,您可能更适合使用Matlab这样的语言,该语言专门针对这些类型的查询进行了优化。例如,在Matlab中,您可以通过编写
在一行代码中执行此回归linearFunction = inputs / outputs
希望这有帮助!