最小二乘法的java代码
时间: 2023-08-30 11:09:14 浏览: 42
以下是一个简单的最小二乘法的Java代码实现:
```java
public class LinearRegression {
private final double[] x;
private final double[] y;
public LinearRegression(double[] x, double[] y) {
this.x = x;
this.y = y;
}
public double slope() {
double xBar = mean(x);
double yBar = mean(y);
double numerator = 0.0;
double denominator = 0.0;
for (int i = 0; i < x.length; i++) {
numerator += (x[i] - xBar) * (y[i] - yBar);
denominator += Math.pow(x[i] - xBar, 2);
}
return numerator / denominator;
}
public double intercept() {
return mean(y) - slope() * mean(x);
}
private double mean(double[] values) {
double sum = 0.0;
for (double value : values) {
sum += value;
}
return sum / values.length;
}
}
```
使用示例:
```java
double[] x = new double[]{1, 2, 3, 4, 5};
double[] y = new double[]{1, 3, 2, 3, 5};
LinearRegression lr = new LinearRegression(x, y);
double slope = lr.slope();
double intercept = lr.intercept();
System.out.println("Slope: " + slope);
System.out.println("Intercept: " + intercept);
```
输出结果:
```
Slope: 0.8
Intercept: 0.39999999999999947
```