易形数学(YiShape-Math) 是一个基于Java开发的数学计算库,提供向量&矩阵运算、数据可视化、统计学、最优化、时间序列、信号处理、音频分析、图像处理和机器学习等核心功能,其API设计最大程度拟合了Python NumPy和SciPy的API。本库的初始目的是用于 电子科技大学、西南财经大学、河南工业大学 的《商务统计》、《商业大数据》、《数据分析与决策》、《项目管理实验》、《机器学习和数据挖掘》、《人工智能理论与应用》等课程的实验教学,通过亲自动手编程以学习线性代数、统计学、最优化、机器学习等领域算法的底层计算原理。本库当前也是 易形空间 向量数据库管理系统(YiShape VecDB) 的底层数值计算组件。本库支持SIMD计算,性能优异,适用于科学计算、数据分析、运筹学和机器学习等各类应用(ModelZoo下有大量应用建模示例)。
YiShape-Math is a Java-based mathematical computing library that provides functionalities including vector & matrix operations, data visualization, statistics, optimization, time series, signal processing, audio analysis, image processing and machine learning models. Its API design closely mirrors that of the Python NumPy and SciPy API. The initial purpose of this library is to be used for the experimental teaching of courses such as Business Statistics, Business Big Data, Data Analysis and Decision Making, Machine Learning and Data Mining, and Theory and Application of Artificial Intelligence at UESTC, SWUFE and HAUT. Through hands-on programming, students can learn the underlying computational principles of algorithms in fields such as linear algebra, statistics, optimization, and machine learning. The library now also serves as the underlying numerical computing component for the YiShape Vector DataBase. The library supports SIMD computing, with excellent performance. It is suitable for a wide range of applications such as large-scale scientific computing, data analysis, operation research, and machine learning (ModelZoo contains numerous modeling examples).
- 向量运算 / Vector Operations: 向量创建、数学运算、统计运算、切片索引等 / Vector creation, mathematical operations, statistical operations, slicing and indexing
- 矩阵运算 / Matrix Operations: 矩阵创建、基本运算、线性代数、矩阵变换、矩阵分解等 / Matrix creation, basic operations, linear algebra, matrix transformations, matrix decompositions
- 数学工具 / Math Utilities: 类型转换、随机数生成、数学函数 / Type conversion, random number generation, mathematical functions
- 结构化数据处理 / Structured Data Processing: 完整的DataFrame数据处理功能
- Complete DataFrame data processing functionality
- CSV文件读写:支持自定义分隔符、表头、编码设置 / CSV file read/write: custom delimiters, headers, encoding settings
- 灵活数据切片:行切片、列切片、通用切片,支持负数索引和步长 / Flexible data slicing: row, column, general slicing with negative indices and steps
- 概率分布 / Probability Distributions: 14种概率分布(正态、t、卡方、F、均匀、指数、Beta、Gamma、伯努利、二项、泊松、几何、负二项、离散均匀)和多元分布 / 14 probability distributions (Normal, t, Chi-squared, F, Uniform, Exponential, Beta, Gamma, Bernoulli, Binomial, Poisson, Geometric, Negative Binomial, Discrete Uniform) and multivariate distributions
- 概率函数 / Probability Functions: PDF、CDF、PPF、SF、ISF计算 / PDF, CDF, PPF, SF, ISF calculations
- 统计描述 / Statistical Descriptions: 均值、方差、标准差、中位数、众数、偏度、峰度等 / Mean, variance, standard deviation, median, mode, skewness, kurtosis and more
- 假设检验 / Hypothesis Testing: t检验、卡方检验、F检验、参数估计、置信区间估计 / t-tests, Chi-squared tests, F-tests, parameter estimation, confidence interval estimation
- 方差分析 / Analysis of Variance: 单因素ANOVA、双因素ANOVA、重复测量ANOVA / One-way ANOVA, Two-way ANOVA, Repeated Measures ANOVA
- 统计模型 / Statistical Models: 高斯混合模型(GMM)、EM算法 / Gaussian Mixture Model (GMM), EM Algorithm
- 相关性分析 / Correlation Analysis: 皮尔逊相关系数、协方差计算 / Pearson correlation coefficient, covariance calculation
- 基础图表 / Basic Charts: 线图、散点图、饼图、柱状图、直方图 / Line, scatter, pie, bar, histogram charts
- 统计图表 / Statsistical Charts: 箱线图、K线图、小提琴图 / Boxplot, candlestick charts, violinplot
- 特殊图表 / Special Charts: 漏斗图、桑基图、旭日图、热力图、雷达图等 / Funnel, Sankey, Sunburst, heatmap, radar charts
- 统一样式系统 / Unified Style System: matplotlib风格样式表达式、流式API、主题管理 / matplotlib-style expressions, fluent API, theme management
- 线性回归 / Linear Regression: 支持L1、L2、ElasticNet正则化,LBFGS优化 / Support for L1, L2, ElasticNet regularization with LBFGS optimization
- 分类算法 / Classification Algorithms: 逻辑回归、XGBoost、RandomForest、EnsembleClassifier
- 聚类算法 / Clustering Algorithms: K-Means++聚类、高斯混合模型聚类、聚类质量评估 / K-Means++ clustering, Gaussian Mixture Model clustering, clustering quality evaluation
- 降维算法 / Dimensionality Reduction: PCA、SVD、t-SNE、UMAP等降维方法 / PCA, SVD, t-SNE, UMAP dimensionality reduction methods
- 模型评估 / Model Evaluation: 回归结果分析和分类结果分析 / Regression and classification result analysis
- 优化器 / Optimizers: L-BFGS、DFP、共轭梯度法、最速下降法
- Quasi-Newton optimization algorithms
- 在线优化器 / Online Optimizers: SGD、Adam
- Online stochastic optimization algorithms
- 线搜索 / Line Search: 一维搜索优化方法
- One-dimensional search optimization methods
- 线性规划求解器 / Linear Programming Solvers: 单纯形法、内点法、拉格朗日乘数法、整数规划求解器
- Linear programming solvers:Simplex method, interior point method, Lagrange multiplier method, integer programming solvers
- 约束优化 / Constrained Optimization: 拉格朗日乘数法
- Lagrange multiplier method
- 信号生成与滤波 / Signal Generation & Filtering: 基本波形生成、噪声信号、移动平均、中值滤波、巴特沃斯滤波器等 / Basic waveform generation, noise signals, moving average, median filtering, Butterworth filters
- 频谱分析 / Spectral Analysis: FFT变换、功率谱密度、短时傅里叶变换、自相关分析等 / FFT transform, power spectral density, STFT, autocorrelation analysis
- 小波分析 / Wavelet Analysis: 离散小波变换(DWT)、连续小波变换(CWT)、小波去噪、小波压缩等 / Discrete Wavelet Transform (DWT), Continuous Wavelet Transform (CWT), wavelet denoising, wavelet compression
- 数据管理 / Data Management: 单变量/多变量时间序列、数据切片、重采样、时间戳处理等 / Univariate/multivariate time series, data slicing, resampling, timestamp handling
- 预测方法 / Forecasting Methods: 移动平均、指数平滑、ARIMA模型、Holt-Winters、自动模型选择等 / Moving average, exponential smoothing, ARIMA models, Holt-Winters, automatic model selection
- 滤波与分解 / Filtering & Decomposition: 时域/频域滤波、趋势/季节性分解、STL分解、小波分解等 / Time/frequency domain filtering, trend/seasonal decomposition, STL decomposition, wavelet decomposition
- 音频特征提取 / Audio Feature Extraction: MFCC特征、频谱质心、过零率、频谱分析等 / MFCC features, spectral centroid, zero crossing rate, spectrum analysis
- 音频处理 / Audio Processing: 音高检测、音频增强、音频分割、音频合成等 / Pitch detection, audio enhancement, audio segmentation, audio synthesis
- 音频嵌入向量 / Audio Embedding Vectors: i-vector模型训练、在线增量训练等 / i-vector model training, online incremental training
- SIMD (Single Instruction, Multiple Data)支持 / SIMD Support: 基于Java Vector API提供向量&矩阵乘法、通用函数、规约函数等方面的SIMD并行计算支持 / SIMD (Single Instruction, Multiple Data) parallel computing support based on Java Vector API
- Java 21 或更高版本 / Java 21 or higher
- Maven 3.6+ / Maven 3.6+
Jar:
直接从右侧的Releases中下载最新的Jar包。Directly download the latest Jar package from the Releases on the right.
Maven:
<dependency>
<groupId>com.yishape.lab</groupId>
<artifactId>yishape-math</artifactId>
<version>0.3.x</version>
</dependency>启用Java Vector API(可选) / Enable Java Vector API (Optional)
# vm args:
--add-modules=jdk.incubator.vector
// 创建向量 / Create vectors
IVector<Double> v1 = Linalg.vector(new double[]{1, 2, 3, 4});
IVector<Double> v2 = Linalg.range(10);
// 基本运算 / Basic operations
IVector<Double> sum = v1.add(v2.slice("1:10:2"));
double dotProduct = v1.dot(v2.slice(5, -1, 1));
// 统计运算 / Statsistical operations
double mean = v1.mean();
double std = v1.std(1);//ddof = 1, 计算样本标准差/ sample std// 创建矩阵 / Create matrices
IMatrix<Double> matrix1 = Linalg.ones(3, 3);
var matrix2 = Linalg.eye(3, 3);
var matrix3 = Linalg.rand(3, 3);
// 矩阵运算 / Matrix operations
var result = matrix1.add(matrix2).mmul(2.0);
var transposed = matrix2.t();// 从CSV文件读取数据 / Read data from CSV file
DataFrame df = DataFrame.readCsv("data.csv", ",", true);
// 数据切片 / Data slicing
DataFrame sliced = df.slice("1:3", "0:2"); // 行1-2,列0-1
// 转换为矩阵 / Convert to matrix
IMatrix<Double> matrix = df.toMatrix();
// 保存数据 / Save data
df.toCsv("output.csv");// 创建分布 / Create distributions
NormalDistribution normal = Stats.norm(0, 1); // 正态分布 / Normal distribution
StudentDistribution tDist = Stats.t(10); // t分布 / t-distribution
Chi2Distribution chi2Dist = Stats.chi2(5); // 卡方分布 / Chi-squared distribution
FDistribution fDist = Stats.f(3, 7); // F分布 / F-distribution
UniformDistribution uniform = Stats.uniform(0, 1); // 均匀分布 / Uniform distribution
ExponentialDistribution exp = Stats.exponential(2.0); // 指数分布 / Exponential distribution
BetaDistribution beta = Stats.beta(2, 3); // Beta分布 / Beta distribution
GammaDistribution gamma = Stats.gamma(2, 1); // Gamma分布 / Gamma distribution
BernoulliDistribution bernoulli = Stats.bernoulli(0.3); // 伯努利分布 / Bernoulli distribution
BinomialDistribution binomial = Stats.binomial(10, 0.5); // 二项分布 / Binomial distribution
PoissonDistribution poisson = Stats.poisson(2.5); // 泊松分布 / Poisson distribution
// 概率函数计算 / Probability function calculations
double pdf = normal.pdf(1.0); // 概率密度函数 / PDF
double cdf = normal.cdf(1.0); // 累积分布函数 / CDF
double ppf = normal.ppf(0.95); // 百分点函数 / PPF
double mean_val = normal.mean(); // 均值 / Mean
double variance = normal.var(); // 方差 / Variance
double[] samples = normal.sample(1000); // 随机采样 / Random sampling// 创建样本数据 / Create sample data
IVector<Double> sample = Linalg.vector(new double[]{1.2, 2.3, 1.8, 3.1, 2.7, 1.5, 2.9, 3.2, 2.1, 2.8});
// 参数估计 / Parameter estimation
Tuple2<Double, Double> meanInterval = Stats.estimator.estimateMeanIntevalWithT(sample, 0.95); // 均值置信区间 / Mean confidence interval
// 假设检验 / Hypothesis testing
TestingResult meanTest = Stats.tester.testMeanEqualWithT(2.0, sample, 0.95); // 均值检验 / Mean test
// 方差分析 / Analysis of Variance
IVector<Double> group1 = Linalg.vector(new double[]{1, 2, 3, 4, 5});
IVector<Double> group2 = Linalg.vector(new double[]{2, 3, 4, 5, 6});
ANOVAResult result = Stats.anova.performOneWayANOVA(group1, group2); // 单因素方差分析 / One-way ANOVA
// 相关性分析 / Correlation analysis
IVector<Double> x = Linalg.vector(new double[]{1, 2, 3, 4, 5});
IVector<Double> y = Linalg.vector(new double[]{2, 4, 6, 8, 10});
double correlation = Stats.corr(x, y); // 皮尔逊相关系数 / Pearson correlation coefficient// 基础线图 / Basic line chart
IVector<Double> x = Linalg.vector(new double[]{1, 2, 3, 4, 5});
IVector<Double> y = Linalg.vector(new double[]{10, 20, 15, 30, 25});
Plots.of(800, 600)
.line(x, y)
.title("销售趋势图", "2024年各月销售数据")
.xlabel("月份")
.ylabel("销售额(万元)")
.show();
// matplotlib风格样式表达式 / matplotlib-style style expressions
Plots.of(800, 600)
.line(x, y, "r-") // 红色实线
.line(x, y, "b--o") // 蓝色虚线带圆圈
.scatter(x, y, "ko") // 黑色圆圈散点
.title("样式表达式示例")
.show();
// 高级颜色操作 / Advanced color operations
PlotStyle style = new PlotStyle()
.color("#3498DB")
.lineWidth(2.5)
.opacity(0.8)
.emphasis(new PlotStyle().color("#E74C3C").lineWidth(4.0))
.blur(new PlotStyle().opacity(0.3));
Plots.of(800, 600)
.line(x, y, style)
.title("高级样式应用")
.show();
// 主题管理 / Theme management
Plots.of(800, 600, "dark") // 使用dark主题
.line(x, y)
.title("暗色主题图表")
.show();
// 散点图 / Scatter chart
Plots.scatter(x, y)
.title("身高体重关系图")
.xlabel("身高(cm)")
.ylabel("体重(kg)")
.saveAsHtml("scatter_chart.html");
// 饼图 / Pie chart
IVector<Double> data = Linalg.vector(new double[]{30, 25, 20, 15, 10});
Plots.pie(data)
.title("市场份额分布")
.saveAsHtml("pie_chart.html");
// 柱状图 / Bar chart
Plots.bar(data)
.title("销售业绩对比")
.xlabel("季度")
.ylabel("销售额(万元)")
.saveAsHtml("bar_chart.html");
// 直方图 / Histogram
IVector<Double> histData = Linalg.vector(new double[]{1.2, 2.3, 1.8, 3.1, 2.7, 1.5, 2.9, 3.2, 2.1, 2.8});
Plots.hist(histData, true) // true表示显示拟合线
.title("数据分布直方图")
.xlabel("数值区间")
.ylabel("频次")
.saveAsHtml("histogram_chart.html");
// 箱线图 / Box plot
IVector<Double> boxData = Linalg.vector(new double[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15});
List<String> labels = Arrays.asList("数据集");
Plots.boxplot(boxData, labels)
.title("数据分布箱线图")
.xlabel("指标")
.ylabel("数值")
.saveAsHtml("boxplot_chart.html");
// K线图 / Candlestick chart
double[][] candlestickArray = {{100, 110, 95, 115}, {110, 120, 105, 125}, {120, 115, 110, 130}};
IMatrix<Double> candlestickData = Linalg.vector(candlestickArray);
List<String> dates = Arrays.asList("2024-01-01", "2024-01-02", "2024-01-03");
Plots.candlestick(candlestickData, dates)
.title("股票价格K线图")
.xlabel("日期")
.ylabel("价格(元)")
.saveAsHtml("candlestick_chart.html");
// 小提琴图 / Violin plot
IVector<Double> violinData = Linalg.vector(new double[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15});
Plots.violinplot(violinData, labels)
.title("数据分布小提琴图")
.xlabel("指标")
.ylabel("数值")
.saveAsHtml("violin_chart.html");以下展示了YiShape-Math支持的各种图表类型,点击图片可查看详细的使用示例:
The following showcases various chart types supported by YiShape-Math. Click on the images to view detailed usage examples:
// L-BFGS优化器示例 / L-BFGS Optimizer Example
IOptimizer optimizer = Opts.lbfgs();
// 定义目标函数(Rosenbrock函数)/ Define objective function (Rosenbrock function)
IObjectiveFunction objFun = new IObjectiveFunction() {
@Override
public double computeObjective(IVector x) {
double x1 = x.get(0).doubleValue();
double x2 = x.get(1).doubleValue();
return (1 - x1) * (1 - x1) + 100 * (x2 - x1 * x1) * (x2 - x1 * x1);
}
};
// 定义梯度函数 / Define gradient function
IGradientFunction grdFun = new IGradientFunction() {
@Override
public IVector computeGradient(IVector x) {
double x1 = x.get(0).doubleValue();
double x2 = x.get(1).doubleValue();
double[] grad = new double[2];
grad[0] = -2 * (1 - x1) - 400 * x1 * (x2 - x1 * x1);
grad[1] = 200 * (x2 - x1 * x1);
return Linalg.vector(grad);
}
};
// 执行优化 / Execute optimization
IVector initX = Linalg.vector(new double[]{-1.0, -1.0});
var result = optimizer.optimize(initX, objFun, grdFun);// 在线Adam优化器示例 / Online Adam Optimizer Example
RereOnlineAdam adamOptimizer = new RereOnlineAdam();
// 初始化优化器 / Initialize optimizer
IVector initialParams = Linalg.vector(new double[]{0.0, 0.0});
adamOptimizer.initialize(initialParams);
// 在线学习循环 / Online learning loop
for (int i = 0; i < numIterations; i++) {
IVector gradient = computeGradient(adamOptimizer.getCurrentParams());
double loss = computeLoss(adamOptimizer.getCurrentParams());
// 执行一步优化 / Perform one optimization step
IVector updatedParams = adamOptimizer.step(gradient, loss);
if (loss < tolerance) break;
}// 创建单纯形法求解器 / Create simplex solver
ILinProgSolver solver = Opts.simplexLinProgSolver();
// 定义线性规划问题 / Define linear programming problem
// minimize 2x1 + 3x2
// subject to x1 + x2 = 5, x1 ≥ 0, x2 ≥ 0
IVector c = Linalg.vector(new double[]{2.0, 3.0});
IMatrix A_eq = Linalg.matrix(new double[][]{{1.0, 1.0}});
IVector b_eq = Linalg.vector(new double[]{5.0});
// 求解(等式约束调用solveEq,小于等于约束调用solve) / Solve(use solveEq() for equal constraints, use solve() for less than or equal constraints)
OptResult result = solver.solveEq(c, A_eq, b_eq);
double optimalValue = result.getOptimalValue();
IVector optimalSolution = result.getOptimalPoint();
System.out.println("最优解: " + optimalSolution);
System.out.println("最优值: " + optimalValue);// 创建整数规划求解器 / Create integer programming solver
IIntegerProg solver = Opts.intLinProgSolver();
// 定义整数规划问题 / Define integer programming problem
// minimize x1 + x2
// subject to x1 + x2 = 3, x1 ≥ 0, x2 ≥ 0, x1,x2 ∈ Z
IVector c = Linalg.vector(new double[]{1.0, 1.0});
IMatrix A_eq = Linalg.matrix(new double[][]{{1.0, 1.0}});
IVector b_eq = Linalg.vector(new double[]{3.0});
// 设置所有变量为整数(如果不是所有变量序号,则为混合整数规划) / Set all variables as integer(if not all variable indexes, it is mixed integer programming)
solver.addIntegerVariables(0, 1);
// 另一种方法设置所有变量为整数变量 / Another method to set all variables as integer variables
//solver.setAllVariablesInteger();
// 设置所有变量为二进制变量(0-1变量) / set all variables as binary variables (0-1 variables)
//solver.setAllVariablesBinary();
// 求解(等式约束调用solveEq,小于等于约束调用solve) / Solve(use solveEq() for equal constraints, use solve() for less than or equal constraints)
OptResult result = solver.solveEq(c, A_eq, b_eq);
double optimalValue = result.getOptimalValue();
IVector optimalSolution = result.getOptimalPoint();
System.out.println("最优整数解 / Optimal solution: " + optimalSolution);
System.out.println("最优值 / Optimal value: " + optimalValue);// 创建线性回归模型 / Create linear regression model
RereLinearRegression lr = new RereLinearRegression();
lr.setRegularizationType(RegularizationType.L2);
lr.setLambda2(0.1f);
// 训练模型 / Train model
RegressionResult result = lr.fit(featureMatrix, labelVector);
// 预测 / Predict
double prediction = lr.predict(newFeatureVector);// 创建PCA降维器 / Create PCA reducer
RerePCA pca = new RerePCA();
// 执行降维 / Perform dimensionality reduction
IMatrix reducedData = pca.dimensionReduction(originalData, 2);String path = "path of iris dataset/iris.csv";
try {
// 读取数据集 / Read dataset
var df = DataFrame.readCsv(path);
// 提取特征和标签 / Extract features and labels
var feature = df.sliceColumn(0, -1).toMatrix();
var labels = df.getColumn(df.cols()-1).toStringArray();
// 创建逻辑回归分类器(两个参数分别是L1和L2正则化系数) / Create logistic regression classifier (the two parameters are L1 and L2 regularization coefficients)
var lr = ML.logisticRegression(0.0,0.0);
// 训练模型 / Train model
var res = lr.fit(feature, labels);
System.out.println(res);
// 预测类别 / Predict classes
var predicted = lr.predictBatch(feature);
// 计算分类指标 / Compute classification metrics
var metrics = ML.classificationMetrics(lr, feature, labels);
System.out.println(metrics);
// 交叉验证 / Cross validation
var result = ML.kFoldCrossValidation(lr, feature, labels, 3);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}// 生成信号 / Generate signals
IVector<Double> time = Signals.linspace(0, 1, 1000);
IVector<Double> signal = Signals.sin(2 * Math.PI * 5 * time); // 5Hz正弦波 / 5Hz sine wave
// 添加噪声 / Add noise
IVector<Double> noise = Signals.randn(1000).mul(0.1);
IVector<Double> noisySignal = signal.add(noise);
// 卡尔曼滤波 / Signal filtering
IVector<Double> filteredSignal = Signals.kalmanFilter(noisySignal, 0.1);
// 信号可视化 / Signal visualization
Plots.of(800, 400)
.line(time, signal, "b-", "原始信号 / Original Signal")
.line(time, noisySignal, "r-", "含噪声信号 / Noisy Signal")
.line(time, filteredSignal, "g-", "滤波后信号 / Filtered Signal")
.xlabel("时间 (秒) / Time (s)")
.ylabel("幅度 / Amplitude")
.title("信号处理示例 / Signal Processing Example")
.legend()
.show();// 创建时间序列数据 / Create time series data
IVector<Double> timestamps = Linalg.vector(new double[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
IVector<Double> values = Linalg.vector(new double[]{10, 12, 13, 15, 18, 20, 22, 25, 28, 30});
// 创建时间序列对象 / Create time series object
TimeSeriesData ts = new TimeSeriesData(timestamps, values);
// 时间序列分析 / Time series analysis
TimeSeriesAnalyzer analyzer = new TimeSeriesAnalyzer();
double trend = analyzer.calculateTrend(ts); // 计算趋势 / Calculate trend
double[] forecast = analyzer.forecast(ts, 3); // 预测未来3个点 / Forecast next 3 points
// 时间序列可视化 / Time series visualization
Plots.of(800, 400)
.line(timestamps, values, "bo-", "历史数据 / Historical Data")
.scatter(Linalg.vector(new double[]{11, 12, 13}), Linalg.vector(forecast), "ro-", "预测数据 / Forecast Data")
.xlabel("时间 / Time")
.ylabel("数值 / Value")
.title("时间序列分析示例 / Time Series Analysis Example")
.legend()
.show();// 读取音频文件 / Read audio file
AudioData audioData = Audios.readAudio("sample.wav");
// 音频特征提取 / Audio feature extraction
IMatrix<Double> mfccFeatures = Audios.calculateMFCC(audioData); // MFCC特征 / MFCC features
double spectralCentroid = Audios.calculateSpectralCentroid(audioData, 1024); // 频谱质心 / Spectral centroid
double zeroCrossingRate = Audios.calculateZeroCrossingRate(audioData); // 过零率 / Zero crossing rate
// 音频分析 / Audio analysis
double pitch = Audios.detectPitch(audioData); // 音高检测 / Pitch detection
Tuple2<IVector<Double>, IVector<Double>> spectrum = Audios.spectrum(audioData); // 频谱分析 / Spectrum analysis
// 音频综合特征提取 / Audio comprehensive feature extraction
IAudioFeatureExtractor extractor = Audios.createStandardFeatureExtractor();
AudioFeatureResult result = extractor.extractAudioFeatures(audioData); // 提取时域、频域、谱域综合音频特征 / Extract time-domain, frequency-domain, and spectral features
Tuple2<List<String>, IVector<Double>> result.toNumericalFeatures(); // 转换为数值特征(特征名、特征的值)
// 音频嵌入向量 / Audio embedding vector
IVectorEmbedding embedder = Audios.createAudioEmbedder(64); // 创建64维嵌入器 / Create 64-dim embedder
embedder.train(audioDataList); // 训练嵌入器
IVector<Double> embedding = embedder.embed(audioData); // 生成嵌入向量 / Generate embedding vector
- 向量操作 (Vector Operations) / Vector Operations Documentation
- 矩阵操作 (Matrix Operations) / Matrix Operations Documentation
- DataFrame 数据框操作 (DataFrame Operations) / DataFrame Operations Documentation
- 数学工具类 (Math Utilities) / Math Utilities Documentation
- 统计操作 (Statsistics Operations) / Statistics Operations Documentation
- 数据可视化 (Data Visualization) / Data Visualization Documentation
- 机器学习 (Machine-Learning) / Machine-Learning Documentation
- 优化算法 (Optimization Algorithms) / Optimization Algorithms Documentation
- 信号处理 (Signal Processing) / Signal Processing Documentation
- 时间序列分析 (Time Series Analysis) / Time Series Analysis Documentation
- 音频操作 (Audio Operations) / Audio Operations Documentation
- API参考手册 (API Reference) / API Reference Manual
- 向量运算示例 / Vector Operations Examples
- 矩阵运算示例 / Matrix Operations Examples
- DataFrame 数据框示例 / DataFrame Examples
- 数学工具类示例 / Math Utilities Examples
- 统计操作示例 / Statistics Operations Examples
- 数据可视化示例 / Data Visualization Examples
- 机器学习示例 / Machine Learning Examples
- 优化算法示例 / Optimization Algorithms Examples
- 信号处理示例 / Signal Processing Examples
- 时间序列分析示例 / Time Series Analysis Examples
- 音频处理示例 / Audio Processing Examples
graph TB
subgraph "应用层 (Application Layer)"
VIZ[数据可视化层<br/>Data Visualization Layer<br/>RerePlot, IPlot, Plots<br/>ColorPalette, ThemeManager]
ML[机器学习层<br/>Machine Learning Layer<br/>RereLinearRegression, RereLogisticRegression<br/>KMeansPlusPlus, GMMClustering<br/>RerePCA, RereSVD, RereTSNE, RereUMAP]
STAT[统计分析层<br/>Statistical Analysis Layer<br/>Stats, Distributions<br/>ANOVA, HypothesisTesting<br/>GaussianMixtureModel, EMAlgorithm]
TS[时间序列层<br/>Time Series Layer<br/>Series, TimeSeriesData<br/>TimeSeriesAnalyzer, TimeSeriesForecasting<br/>ARIMA, GARCH, VAR]
SIG[信号处理层<br/>Signal Processing Layer<br/>Signals, SignalGeneration<br/>SignalUtilities, WaveletAnalysis<br/>RereFFT, RereDCT, RereHilbert]
AUD[音频处理层<br/>Audio Processing Layer<br/>AudioAnalyzer, AudioProcessor<br/>MusicAnalyzer, MusicGenerator<br/>AudioFeatures, AudioPlots]
IMG[图像处理层<br/>Image Processing Layer<br/>ImageData, ImageFilter<br/>ImageSegmentation, ImageTransform<br/>SIFTFeatureDetector, SURFFeatureDetector]
end
subgraph "中间层 (Middle Layer)"
DATA[数据处理层<br/>Data Processing Layer<br/>DataFrame, Column<br/>ColumnType]
OPT[优化算法层<br/>Optimization Layer<br/>RereLBFGS, RereLineSearch<br/>RereOnlineAdam, RereOnlineSGD<br/>IOptimizer, IObjectiveFunction]
COMP[计算加速层<br/>Computing Acceleration Layer<br/>CPUComputeUtils, GPUComputeUtils<br/>GPUConfig]
end
subgraph "基础层 (Foundation Layer)"
MATH[基础数学层<br/>Core Math Layer<br/>IMatrix, IVector<br/>RereDoubleMatrix, RereFloatMatrix<br/>RereDoubleVector, RereFloatVector<br/>Linalg, SliceExpressionParser]
UTIL[工具类层<br/>Utility Layer<br/>RereMathUtil, StringUtils<br/>Tuple2-9, RereTree]
end
VIZ --> MATH
VIZ --> DATA
VIZ --> COMP
ML --> MATH
ML --> OPT
ML --> COMP
STAT --> MATH
STAT --> COMP
TS --> MATH
TS --> DATA
TS --> COMP
SIG --> MATH
SIG --> DATA
SIG --> COMP
AUD --> MATH
AUD --> DATA
AUD --> COMP
IMG --> MATH
IMG --> DATA
IMG --> COMP
DATA --> MATH
DATA --> UTIL
OPT --> MATH
OPT --> COMP
COMP --> MATH
- 内存优化 / Memory Optimization: 高效的数组操作和内存管理,支持大矩阵运算
- Efficient array operations and memory management, supporting large matrix operations
- 算法优化 / Algorithm Optimization: 优化的数学算法实现,包括LBFGS优化器
- Optimized mathematical algorithm implementations, including LBFGS optimizer
- 类型安全 / Type Safety: 强类型系统,避免运行时错误,提供完整的类型检查
- Strong type system, avoiding runtime errors, providing complete type checking
- 接口设计 / Interface Design: 清晰的接口设计,易于扩展和自定义实现
- Clear interface design, easy to extend and customize implementations
- 数值稳定性 / Numerical Stability: 采用数值稳定的算法实现,确保计算精度
- Numerically stable algorithm implementations, ensuring computational accuracy
- 并行计算支持 / Parallel Computing Support: 支持多线程并行计算,提高大规模数据处理效率
- Multi-threaded parallel computing support, improving efficiency for large-scale data processing
Java的主流社区主要面向Server端应用开发。虽然我们已尽最大努力实现Java数值计算,但终归而言,Java数值计算的社区生态有限。为了弥补Java天生的数值计算能力不足,我们构建了一个专门的与Julia语言(数学专用语言)进行桥接的中间件库:Ju4Ja, https://github.com/lteb2002/ju4ja。如果您有复杂的数值计算需求,可以使用Julia语言实现,然后在Java中通过Ju4Ja库来调用Julia功能。
Java's mainstream community is oriented towards server-side application development. While we've done our best to implement numerical computing in Java, the community ecosystem for Java numerical computing is ultimately limited. To address the inherent limitations of Java's numerical computing capabilities, we've built a specialized middleware library, Ju4Ja, https://github.com/lteb2002/ju4ja, to bridge the gap with the mathematically specialized Julia language. If you have complex numerical computing needs, you can implement them in Julia and call Julia functionality from Java using the Ju4Ja library.
我们欢迎社区贡献!请遵循以下步骤:
We welcome community contributions! Please follow these steps:
- Fork 本项目 / Fork this project
- 创建特性分支 / Create a feature branch (
git checkout -b feature/AmazingFeature) - 提交更改 / Commit your changes (
git commit -m 'Add some AmazingFeature') - 推送到分支 / Push to the branch (
git push origin feature/AmazingFeature) - 开启 Pull Request / Open a Pull Request
- 请确保代码符合项目的编码规范 / Please ensure your code follows the project's coding standards
- 添加适当的测试用例 / Add appropriate test cases
- 更新相关文档 / Update relevant documentation
- 确保所有测试通过 / Ensure all tests pass
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
This project is licensed under the MIT License - see the LICENSE file for details.
MIT 许可证是一个宽松的开源许可证,允许您自由使用、修改、分发和销售软件,只要您保留版权声明和许可证文本。
The MIT License is a permissive open-source license that allows you to freely use, modify, distribute, and sell the software, as long as you retain the copyright notice and license text.
- 项目维护者 / Project Maintainer: Big Data and Decision Analytics Research Center of UESTC, Big Data Research Institute of SWUFE, School of Artificial Intelligence and Big Data of HAUT, and Chengdu Scale-Free Tech Ltd.
- 项目地址 / Project URL: https://github.com/ScaleFree-Tech/yishape-math, https://gitee.com/scalefree-tech/yishape-math.
- 问题反馈 / Issues: https://github.com/ScaleFree-Tech/yishape-math/issues
如果您在使用过程中遇到问题,可以通过以下方式获取帮助:
If you encounter any issues while using the library, you can get help through the following channels:
- GitHub Issues: 报告bug或提出功能请求 / Report bugs or request features
- 文档: 查看详细的API文档和示例 / Check detailed API documentation and examples
- 社区: 参与讨论和分享经验 / Participate in discussions and share experiences
- Bug Fixes / Bug Fixes: 修复了LU分解、T检验、逻辑斯蒂回归等方面的错误 / Bug fixes and error corrections
- 优化运算效率提升 / Optimization Performance Improvement: 改进了L-BFGS等算法中的缓存机制,优化效率得以提升 / The cache mechanism in optimization algorithms such as L-BFGS has been improved, leading to an enhanced optimization efficiency.
- 暂时移除GPU支持 / Remove GPU support temporarily: 由于GPU计算依赖的包过重,在复杂的优化算法中性能提升有限,暂时移除 / Due to the heavy dependency of GPU computing packages, the performance improvement in complex optimization algorithms is limited, and GPU support is temporarily removed.
- SIMD (Single Instruction, Multiple Data)支持 / SIMD Support: 基于Java Vector API提供向量&矩阵乘法、通用函数、规约函数等方面的SIMD并行计算支持 / SIMD (Single Instruction, Multiple Data) parallel computing support based on Java Vector API
- Bug Fixes / Bug Fixes: 修复已知问题和错误 / Bug fixes and error corrections
- 新增音频处理功能 / New Audio Processing Features: 音频特征提取、音高检测、音频增强、i-vector模型训练等 / Audio feature extraction, pitch detection, audio enhancement, i-vector model training
- 📡 信号处理模块:信号生成、滤波、频谱分析、小波分析 / Signal processing: generation, filtering, spectral analysis, wavelet analysis
- ⏰ 时间序列分析:数据管理、预测方法、滤波分解、可视化 / Time series: data management, forecasting, filtering, visualization
- ⚡ GPU加速计算:矩阵运算、向量运算、高级运算,支持自动回退 / GPU acceleration: matrix/vector operations, advanced computing with auto-fallback
- 📊 DataFrame数据框:CSV读写、数据切片、NumPy风格切片语法 / DataFrame: CSV I/O, data slicing, NumPy-style slicing
- 📊 数据可视化:基础图表、统计图表、特殊图表,ECharts集成 / Visualization: basic/statistical/special charts, ECharts integration
- 📈 统计学增强:14种概率分布、统计描述、假设检验 / Statistics: 14 distributions, statistical descriptions, hypothesis testing
- 📊 统计学分布函数库:正态、t、卡方、F、均匀、指数分布 / Statistical distributions: normal, t, chi-squared, F, uniform, exponential
- 🔢 概率密度函数和累积分布函数 / PDF and CDF functions
- 📋 统计描述功能:均值、方差、中位数、众数等 / Statistical descriptions: mean, variance, median, mode
- ✨ 向量与矩阵、最优化与机器学习:核心向量矩阵运算、机器学习算法、优化算法、降维算法 / Initial release: core operations, ML algorithms, optimization, dimensionality reduction
YiShape-Math - 让Java应用中的数学计算更简单、更高效!
YiShape-Math - Making mathematical computing simpler and more efficient for Java applications!



























