java 求线性回归线 起点和终点 贴代码
时间: 2023-12-03 11:43:13 浏览: 35
以下是使用Java实现线性回归并绘制回归线的示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.math3.stat.regression.SimpleRegression;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.scene.chart.XYChart.Series;
import javafx.stage.Stage;
public class LinearRegressionExample extends Application {
@Override
public void start(Stage stage) {
// Generate sample data
List<DataPoint> dataPoints = generateData(50);
// Create scatter chart
ScatterChart<Number, Number> chart = createChart(dataPoints);
// Perform linear regression
SimpleRegression regression = new SimpleRegression();
for (DataPoint dataPoint : dataPoints) {
regression.addData(dataPoint.x, dataPoint.y);
}
// Add regression line to chart
Series<Number, Number> regressionLine = createRegressionLine(regression);
chart.getData().add(regressionLine);
// Show chart
Scene scene = new Scene(chart, 600, 400);
stage.setScene(scene);
stage.show();
}
private List<DataPoint> generateData(int count) {
List<DataPoint> dataPoints = new ArrayList<>();
for (int i = 0; i < count; i++) {
double x = Math.random() * 100;
double y = Math.random() * 100;
dataPoints.add(new DataPoint(x, y));
}
return dataPoints;
}
private ScatterChart<Number, Number> createChart(List<DataPoint> dataPoints) {
NumberAxis xAxis = new NumberAxis();
NumberAxis yAxis = new NumberAxis();
ScatterChart<Number, Number> chart = new ScatterChart<>(xAxis, yAxis);
Series<Number, Number> series = new Series<>();
for (DataPoint dataPoint : dataPoints) {
series.getData().add(new XYChart.Data<>(dataPoint.x, dataPoint.y));
}
chart.getData().add(series);
return chart;
}
private Series<Number, Number> createRegressionLine(SimpleRegression regression) {
double minY = regression.predict(0);
double maxY = regression.predict(100);
Series<Number, Number> regressionLine = new Series<>();
regressionLine.getData().add(new XYChart.Data<>(0, minY));
regressionLine.getData().add(new XYChart.Data<>(100, maxY));
return regressionLine;
}
private static class DataPoint {
public double x;
public double y;
public DataPoint(double x, double y) {
this.x = x;
this.y = y;
}
}
public static void main(String[] args) {
launch(args);
}
}
```
代码中使用了Apache Commons Math库中的 `SimpleRegression` 类来执行线性回归。在 `createRegressionLine` 方法中,我们使用 `predict` 方法来计算回归线的起点和终点。最后,使用JavaFX的ScatterChart来展示散点图和回归线。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)