AlgorithmStar
as机器学习库支持各种度量系数的计算,同时具有knn,决策树,线性回归等机器学习基础算法计算组件的实现,其还具有SQL式编程的数据计算库,与强大的机器视觉库,能够轻松实现各种人工智能处理需求。| The AS machine learning library supports various machine learning algorithms, as well as SQL programming for data calculation and a powerful machine vision library, which can easily meet various data processing requirements.
Install / Use
/learn @BeardedManZhao/AlgorithmStarREADME
Algorithm Star-MachineBrain
<img src="https://api.gitsponsors.com/api/badge/img?id=548640505" height="20">
- 切换到 中文文档
- knowledge base <a href="https://github.com/BeardedManZhao/algorithmStar/blob/main/KnowledgeDocument/knowledge%20base.md"> <img src = "https://user-images.githubusercontent.com/113756063/194832492-f8c184c1-55e8-4f16-943a-34b99ac751d4.png"/> </a>
The AS machine learning library provides a Java API for various machine learning algorithms. It has the encapsulation of complex computing logic such as machine vision and natural language processing. Through the library, various algorithms can be quickly used to achieve various effects. Many calculation operations in the AS library are implemented natively, enabling the operation of library functions without unexpected dependencies from the Java standard library.
There are multiple versions of the AS library directory. If you want to query the update logs and differences of different versions, you can view here.
A test dataset is provided in this warehouse, which contains various data files such as images. You can pull these test data into a local program through a URL for calculation.
Notification
⚠️ 【 Important 】 The content of versions 1.32 and 1.40 is almost identical, with the main difference being the changes to the package module. Please note that we will refactor the package name to
io. github. beardedManZhao. algorithmStarin versions 1.40 and all subsequent versions to avoid conflicting package names in many Java dependencies~To avoid any compatibility issues caused by package updates, we have provided version 1.32. You can continue to use the old package name, but we strongly recommend using the new version, as the new package name has been updated to 'io. github. beardedManZhao. algorithmStar'. If you have any questions or suggestions about changing the package name or updating, please contact us in a timely manner!!
Maven dependency
You can integrate Arithmetic Star into your project through maven, and the configuration of Maven is shown below. You can add it to your maven project, or you can download it from Releases and manually integrate it into your project.
<dependencies>
<dependency>
<groupId>io.github.BeardedManZhao</groupId>
<artifactId>algorithmStar</artifactId>
<version>1.44</version>
</dependency>
</dependencies>
Required dependencies of the AS library
After version 1.17, all dependencies of the AS library have been stripped to better avoid binding dependencies and reduce the possibility of project conflicts. At the same time, more suitable dependency configuration items can be used according to the needs of developers. You can view third-party library dependencies on which the AS library depends here.
Required Dependencies
Note: log4j2 does not need to be imported in versions 1.43 and later!!! To enhance performance, log4j2 has been removed in version 1.43!
The AS library generates some log data when performing many calculation functions. Therefore, the use of the AS library requires importing log dependencies, which are essential. Please import the dependencies as follows.
<dependencies>
<!-- Binding using the adapter of log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.20.0</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- Log4j2 log facade -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- Log4j2 log real surface -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
<!--<scope>provided</scope>-->
</dependency>
</dependencies>
Optional Dependencies
When interfacing with various platforms such as databases and Sparks, the AS library needs to use third-party dependency packages, which are optional. If you do not need to use these functions, you may not need to import dependencies. If you need to, you can refer to the following configuration.
<dependencies>
<!-- MySQL database connection driver If the relational database you want to connect to is of another type, you can also modify it here -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- The dependency development package for the three major Spark modules can also be imported if you need to use it here, or not if you don't need it -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.12</artifactId>
<version>3.4.0</version>
</dependency>
<!-- Camera device dependency library. If you have a need to obtain data objects through the camera, you can import this dependency. -->
<dependency>
<groupId>com.github.sarxos</groupId>
<artifactId>webcam-capture</artifactId>
<version>0.3.12</version>
</dependency>
<!-- HDFS input/output device dependency library. If you have a need for data reading and writing through the HDFS distributed storage platform, you can introduce this library. -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.1</version>
</dependency>
</dependencies>
Use API examples
Download help documents
After loading the AS library, you can use the following code to download all the help documents to your local computer. There are some sample codes to guide you in using them, and you can make modifications according to your own needs.
package io.github.beardedManZhao.algorithmStar;
import io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.EuclideanMetric;
import io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.ManhattanDistance;
import io.github.beardedManZhao.algorithmStar.algorithm.featureExtraction.WordFrequency;
import io.github.beardedManZhao.algorithmStar.core.AlgorithmStar;
import io.github.beardedManZhao.algorithmStar.operands.matrix.ColumnIntegerMatrix;
public final class MAIN1 {
public static void main(String[] args) {
// 准备两个文本组成的数组,其中是两个需要被处理成为特征向量的字符串语句。
String[] data = {
"Good evening, dear, don't forget the agreement between us. It's 9:00 tomorrow morning.",
"Good morning, dear, don't forget the agreement between us, at 9:00 in the morning."
};
AlgorithmStar<Object, ColumnIntegerMatrix> algorithmStar = AlgorithmStar.getInstance();
// 开始进行特征提取,生成词频向量 提取成功之后会返回一个矩阵
ColumnIntegerMatrix word = algorithmStar.extract(WordFrequency.getInstance("word"), data);
// 打印生成的向量矩阵
System.out.println(word);
// 开始将矩阵中的两句话对应的向量获取到
int[] arrayByColIndex1 = word.getArrayByColIndex(0);
int[] arrayByRowIndex2 = word.getArrayByColIndex(1);
// 开始计算两个向量之间的德式距离
double res = algorithmStar.getTrueDistance(EuclideanMetric.getInstance("e"), arrayByColIndex1, arrayByRowIndex2);
System.out.println(res);
// 开始计算两个向量之间的曼哈顿距离
double res1 = algorithmStar.getTrueDistance(ManhattanDistance.getInstance("man"), arrayByColIndex1, arrayByRowIndex2);
System.out.println(res1);
AlgorithmStar.clear();
}
}
Feature calculation algorithm component
Feature computing components are often used in feature engineering, and are the main force of computing in machine learning tasks. Measurement algorithms, classification algorithms, etc. can use this component computing method. The feature engineering calculation in Arithmetic Star is component-based calculation. You can directly obtain component objects and call component functions, or use Arithmetic Star's portal class for feature engineering.
Next is a simple example of feature engineering calculation using algorithmic star portal class
import io.github.beardedManZhao.algorithmStar.integrator.Route2DDrawingIntegrator;
import io.github.beardedManZhao.algorithmStar.algorithm.generatingAlgorithm.ZhaoCoordinateNet2D;
import io.github.beardedManZhao.algorithmStar.operands.coordinate.DoubleCoordinateTwo;
import io.github.beardedManZhao.algorithmStar.operands.route.DoubleConsanguinityRoute2D;
/**
* 示例代码文件
*/
public class MAIN1 {
public static void main(String[] args) {
// 构建人员坐标(二维)
DoubleCoordinateTwo A = new DoubleCoordinateTwo(10, 10);
DoubleCoordinateTwo B = new DoubleCoordinateTwo(-10, 4);
DoubleCoordinateTwo C = new DoubleCoordinateTwo(1, 0);
DoubleCoordinateTwo E = new DoubleCoordinateTwo(6, 1);
DoubleCoordinateTwo Z = new DoubleCoordinateTwo(1, 21);
// 获取关系网络,该算法是我实现出来,用于推断人员关系网的,这里的名称您可以自定义,需要注意的是下面集成器的实例化需要您将该名称传进去
ZhaoCoordinateNet2D zhaoCoordinateNet = ZhaoCoordinateNet2D.getInstance("Z");
zhaoCoordinateNet.addRoute(DoubleConsanguinityRoute2D.
