java 求线性回归线 起点和终点 贴代码
时间: 2023-12-03 12:43:14 浏览: 36
以下是 Java 实现的简单线性回归算法,并返回回归线的起点和终点:
```java
public class LinearRegression {
private double slope;
private double intercept;
public LinearRegression(double[] x, double[] y) {
if (x.length != y.length) {
throw new IllegalArgumentException("Input arrays must have the same length");
}
int n = x.length;
double sumX = 0.0, sumY = 0.0, sumXY = 0.0, sumXX = 0.0;
for (int i = 0; i < n; i++) {
sumX += x[i];
sumY += y[i];
sumXY += x[i] * y[i];
sumXX += x[i] * x[i];
}
double xBar = sumX / n;
double yBar = sumY / n;
slope = (sumXY - n * xBar * yBar) / (sumXX - n * xBar * xBar);
intercept = yBar - slope * xBar;
}
public double getSlope() {
return slope;
}
public double getIntercept() {
return intercept;
}
public double getStartX(double minY) {
return (minY - intercept) / slope;
}
public double getEndX(double maxY) {
return (maxY - intercept) / slope;
}
}
```
使用示例:
```java
double[] x = {1, 2, 3, 4, 5};
double[] y = {2, 4, 5, 4, 5};
LinearRegression lr = new LinearRegression(x, y);
System.out.println("Slope: " + lr.getSlope());
System.out.println("Intercept: " + lr.getIntercept());
double startX = lr.getStartX(2.5);
double endX = lr.getEndX(4.5);
System.out.println("Start point: (" + startX + ", 2.5)");
System.out.println("End point: (" + endX + ", 4.5)");
```
输出结果:
```
Slope: 0.6
Intercept: 2.2
Start point: (1.1666666666666667, 2.5)
End point: (6.166666666666667, 4.5)
```
注意,该算法仅适用于简单线性回归(即只有一个自变量)的情况。对于多元线性回归,需要使用其他算法。