Tôi đã tìm kiếm cách tạo thùng cho tập dữ liệu cụ thể (bằng cách chỉ định băng tần thấp hơn, dải trên và số lượng thùng yêu cầu) bằng cách sử dụng phép toán phổ biến apache 3.0. Tôi đã xem xét tần số http://commons.apache.org/math/apidocs/org/apache/commons/math3/stat/Frequency.html nhưng nó không cho tôi những gì tôi muốn .. tôi muốn một phương pháp cho tôi tần số cho các giá trị trong một khoảng thời gian (ví dụ: có bao nhiêu giá trị nằm trong khoảng từ 0 đến 5). Bất kỳ đề xuất hoặc ý tưởng?cách tạo thùng cho biểu đồ bằng cách sử dụng apache math 3.0 trong java?
Trả lời
Theo như tôi biết không có lớp biểu đồ tốt trong Apache Commons. Tôi đã tự viết cho mình. Nếu tất cả những gì bạn muốn là các thùng phân phối tuyến tính từ min đến max, thì nó khá dễ viết.
Có lẽ một cái gì đó như thế này:
public static int[] calcHistogram(double[] data, double min, double max, int numBins) {
final int[] result = new int[numBins];
final double binSize = (max - min)/numBins;
for (double d : data) {
int bin = (int) ((d - min)/binSize);
if (bin < 0) { /* this data is smaller than min */ }
else if (bin >= numBins) { /* this data point is bigger than max */ }
else {
result[bin] += 1;
}
}
return result;
}
Sửa: Dưới đây là một ví dụ.
double[] data = { 2, 4, 6, 7, 8, 9 };
int[] histogram = calcHistogram(data, 0, 10, 4);
// This is a histogram with 4 bins, 0-2.5, 2.5-5, 5-7.5, 7.5-10.
assert histogram[0] == 1; // one point (2) in range 0-2.5
assert histogram[1] == 1; // one point (4) in range 2.5-5.
// etc..
nhưng làm thế nào sẽ nhận được tần số cho mỗi bin? Tôi không tìm thấy bất kỳ lớp hoặc phương thức nào thực hiện điều đó trong Apache Math 3.0. – Sami
Tần suất cho mỗi thùng? 'result [i]' cho bạn biết có bao nhiêu điểm dữ liệu nằm trong thùng 'i'-th. Nếu bạn muốn tần số (tỷ lệ), chỉ cần làm 'kết quả [i]/data.length' ... – Max
Tôi đã viết một ví dụ cho bạn. – Max
Đây là một cách đơn giản để thực hiện biểu đồ sử dụng Apache Commons Math 3:
final int BIN_COUNT = 20;
double[] data = {1.2, 0.2, 0.333, 1.4, 1.5, 1.2, 1.3, 10.4, 1, 2.0};
long[] histogram = new long[BIN_COUNT];
org.apache.commons.math3.random.EmpiricalDistribution distribution = new org.apache.commons.math3.random.EmpiricalDistribution(BIN_COUNT);
distribution.load(data);
int k = 0;
for(org.apache.commons.math3.stat.descriptive.SummaryStatistics stats: distribution.getBinStats())
{
histogram[k++] = stats.getN();
}
Có thể nhận được biên giới khoảng cách từ EmpiricalDistribution # getUpperBounds. –
Tôi nghĩ rằng mã của bạn có một lỗi trong nó - vui lòng xem mã chỉnh dưới đây:
public static int[] calcHistogram(double[] data, double min, double max, int numBins) {
final int[] result = new int[numBins];
final double binSize = (max - min)/numBins;
for (double d : data) {
int bin = (int) ((d - min)/binSize); // changed this from numBins
if (bin < 0) { /* this data is smaller than min */ }
else if (bin >= numBins) { /* this data point is bigger than max */ }
else {
result[bin] += 1;
}
}
return result;
}
Cảm ơn bạn đã bắt nó! – Max
Đây phải là bản chỉnh sửa câu trả lời của Max chứ không phải câu trả lời riêng biệt –
- 1. Tạo biểu đồ excel bằng cách sử dụng Apache POI
- 2. Làm cách nào để tạo một Biểu đồ bằng cách sử dụng api biểu đồ google?
- 3. Cách lấy dữ liệu trong thùng biểu đồ
- 4. Tạo biểu đồ Excel trong Java
- 5. Tạo biểu đồ trong java
- 6. Tải xuống tệp bằng cách sử dụng commons java apache?
- 7. Cách tạo biểu đồ
- 8. cách tạo nhãn cho dữ liệu trong biểu đồ bánh rán bằng cách sử dụng d3.js
- 9. Exponential Fit với apache commons math
- 10. Cách tạo biểu đồ bằng cách sử dụng d3.js và dữ liệu crossfilter?
- 11. Tạo biểu đồ đường bao đầy bằng cách sử dụng dữ liệu trong danh sách
- 12. Tạo thùng cho bất kỳ giá trị nào trên X trong GGPlot2 Biểu đồ
- 13. Xác thực lược đồ JSON bằng cách sử dụng java
- 14. Độ lệch chuẩn với Apache Commons Math
- 15. Số lượng thùng chính xác trong Biểu đồ trong R
- 16. Cách sử dụng biểu đồ mở
- 17. Tạo JSON trong java bằng cách sử dụng org.json
- 18. Cách tạo Tệp .dst Thêu bằng cách sử dụng Java
- 19. Cách sử dụng API biểu đồ Google
- 20. Tạo biểu đồ trong Excel bằng C#
- 21. cách tạo các đường con trỏ theo con chuột trong biểu đồ bằng cách sử dụng C#
- 22. Thêm một biểu đồ google vào một infowindow bằng cách sử dụng bản đồ google api
- 23. Làm cách nào để đánh dấu một thùng quan sát trong biểu đồ trong R
- 24. Sao chép Bảng Excel bằng cách sử dụng Apache POI
- 25. Cách tạo biểu đồ tương tác cảm ứng cho android
- 26. Làm thế nào để sử dụng Java Math Commons CurveFitter?
- 27. Đẩy mạnh tính toán Math trong Java
- 28. Tạo tệp PowerPoint 2007/2010 bằng cách sử dụng Java
- 29. Tạo biểu đồ/biểu đồ sử dụng đĩa với các công cụ chỉ CLI trong Linux
- 30. Tạo báo cáo bằng cách sử dụng Java
Bạn có bị hạn chế sử dụng Apache không? Điều này nghe chính xác như trường hợp sử dụng cho [Guava's] (http://guava-libraries.googlecode.com) ['SortedMultiset'] (http://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained# SortedMultiset). –
@ Louis Wasserman vâng tôi bị hạn chế đối với Apache math 3.0, bởi vì nó cung cấp chức năng phù hợp và nội suy khác. – Sami