Одна статья для понимания архитектуры commons-math3 и ее использования в Java (1)
Одна статья для понимания архитектуры commons-math3 и ее использования в Java (1)

После поиска в Интернете относительно мало людей используют Java для простого анализа данных. Большинство из них используют встроенные библиотеки или сторонние библиотеки, представленные языками Python и Scala. В Java очень мало введений, поэтому я хотел написать несколько подробных введений, чтобы представить анализ данных в области Java.

Предыстория

Apache Commons — это проект Apache Software Foundation, ранее входивший в состав проекта Jakarta. Целью Commons является предоставление многоразового кода Java с открытым исходным кодом. Все они связаны с Apache ФондASF,Foundation создает и поддерживает повторно используемые компоненты Java.,Использование компонентов может повысить эффективность и качество разработки. В проекте Commons,Есть наборы инструментов, с которыми каждый знаком,напримерBeanUtilsCollectionsCompressCryptoEmailExecFileUploadIOLangMathNetValidatorждать。И то, что я хочу объяснить сегодня, этоMathэта сумка。

Проект Apache Commons состоит из трех частей:

  • The Commons Proper: многоразовая библиотека компонентов Java. (уже опубликовано)
  • Commons Sandbox: рабочая область разработки компонентов Java. (Проект в разработке)
  • The Commons Dormant: в настоящее время неактивная библиотека компонентов. (Проекты, которые только что были начаты или были остановлены на техническое обслуживание)

Как использовать математику

(1) Принципы использования математики

Math3 можно описать как легкий автономный пакет математических и статистических методов расчета, включающий наиболее часто используемые числовые алгоритмы. В проекте Apache Commons math3 — это математическая библиотека, использующая следующие принципы:

1. Реальные варианты использования приложений определяют приоритеты разработки.

2. В этом пакете упор делается на небольшие, простые в интеграции компоненты, а не на большие библиотеки со сложными зависимостями и конфигурацией.

3. Все алгоритмы полностью документированы и соответствуют общепринятым лучшим практикам.

4. При наличии нескольких стандартных алгоритмов шаблон стратегии используется для поддержки нескольких реализаций.

5. Ограниченные зависимости. Нет никаких внешних зависимостей, кроме компонентов Commons и базовой платформы Java (как минимум библиотеки версий Java 1.3–1.2, как минимум Java 5, начиная с библиотек версии 2.0).

Текущая стабильная версия — commons-math3.,Тестовая версия — commons-math4-4.0-beta1.,Связанный адрес загрузки:https://commons.apache.org/math/download_math.cgi

На складе Maven версия math3 начинается с 3.0, а последняя версия — 3.6.1. Мы видели официальное представление версии 4.0 и бета-версии. Возможно, в будущем в этой области будут предприняты дополнительные усилия.

(2) Введено в Maven

существоватьpom.xmlвведено вmath3Сумка,Вот как я это представил,Просто скопируйте его прямо в XML-файл и используйте maven для автоматической загрузки импортировать.

Язык кода:javascript
копировать
...
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>
...

(3) Введено в Gradle

существоватьgradle.xmlвведено вmath3Сумка,Вот как я это представил,Просто скопируйте его прямо в XML-файл и используйте maven для автоматической загрузки импортировать.

Язык кода:javascript
копировать
dependencies {
  	...
    // https://mvnrepository.com/artifact/org.apache.commons/commons-math3
		implementation group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1'
  	...
}

(4) Представлен в плюще

существоватьivy.xmlвведено вmath3Сумка,Вот как я это представил,Просто скопируйте его прямо в XML-файл и используйте maven для автоматической загрузки импортировать.

Язык кода:javascript
копировать
...
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency org="org.apache.commons" name="commons-math3" rev="3.6.1"/>
...

(5) После импорта архитектуры

После импорта библиотеки Apache Commons Math 3 вы можете использовать функции библиотеки. Обратите внимание: после настройки вышеуказанных зависимостей убедитесь, что сеть работает нормально, инструменты сборки Gradle или Maven или ivy автоматически загрузят соответствующие библиотеки зависимостей с удаленного компьютера. Центральный репозиторий Maven. В настоящее время я использую Maven для импорта пакета в IDEA.

прикладная практика по математике

01 Понимание архитектуры пакета ma3

Ниже приводится структура пакета и краткое введение в math3.,Если вы хотите узнать больше об интерфейсах и реализациях каждого пакета,Пожалуйста, обратитесь кApache Commons math3 3.6.1 APIдокумент。

Математический пакет разделен на множество функциональных подпакетов.,Напримерanalysis、stat、distribution、geometry、ml、optimждать。

org.apache.commons.math3

org.apache.commons.math3.analysis

org.apache.commons.math3.analysis.differentiation

org.apache.commons.math3.analysis.function

org.apache.commons.math3.analysis.integration

org.apache.commons.math3.analysis.integration.gauss

org.apache.commons.math3.analysis.interpolation

org.apache.commons.math3.analysis.polynomials

org.apache.commons.math3.analysis.solvers

org.apache.commons.math3.complex

org.apache.commons.math3.dfp

org.apache.commons.math3.distribution

org.apache.commons.math3.distribution.fitting

org.apache.commons.math3.exception

org.apache.commons.math3.exception.util

org.apache.commons.math3.filter

org.apache.commons.math3.fitting

org.apache.commons.math3.fitting.leastsquares

org.apache.commons.math3.fraction

org.apache.commons.math3.genetics

org.apache.commons.math3.geometry

org.apache.commons.math3.geometry.enclosing

org.apache.commons.math3.geometry.euclidean.oned

org.apache.commons.math3.geometry.euclidean.threed

org.apache.commons.math3.geometry.euclidean.twod

org.apache.commons.math3.geometry.euclidean.twod.hull

org.apache.commons.math3.geometry.hull

org.apache.commons.math3.geometry.partitioning

org.apache.commons.math3.geometry.partitioning.utilities

org.apache.commons.math3.geometry.spherical.oned

org.apache.commons.math3.geometry.spherical.twod

org.apache.commons.math3.linear

org.apache.commons.math3.ml

org.apache.commons.math3.ml.clustering

org.apache.commons.math3.ml.clustering.evaluation

org.apache.commons.math3.ml.distance

org.apache.commons.math3.ml.neuralnet

org.apache.commons.math3.ml.neuralnet.oned

org.apache.commons.math3.ml.neuralnet.sofm

org.apache.commons.math3.ml.neuralnet.sofm.util

org.apache.commons.math3.ml.neuralnet.twod

org.apache.commons.math3.ml.neuralnet.twod.util

org.apache.commons.math3.ode

org.apache.commons.math3.ode.events

org.apache.commons.math3.ode.nonstiff

org.apache.commons.math3.ode.sampling

org.apache.commons.math3.optim

org.apache.commons.math3.optim.linear

org.apache.commons.math3.optim.nonlinear.scalar

org.apache.commons.math3.optim.nonlinear.scalar.gradient

org.apache.commons.math3.optim.nonlinear.scalar.noderiv

org.apache.commons.math3.optim.nonlinear.vector

org.apache.commons.math3.optim.nonlinear.vector.jacobian

org.apache.commons.math3.optim.univariate

org.apache.commons.math3.optimization

org.apache.commons.math3.optimization.direct

org.apache.commons.math3.optimization.fitting

org.apache.commons.math3.optimization.general

org.apache.commons.math3.optimization.linear

org.apache.commons.math3.optimization.univariate

org.apache.commons.math3.primes

org.apache.commons.math3.random

org.apache.commons.math3.special

org.apache.commons.math3.stat

org.apache.commons.math3.stat.clustering

org.apache.commons.math3.stat.correlation

org.apache.commons.math3.stat.descriptive

org.apache.commons.math3.stat.descriptive.moment

org.apache.commons.math3.stat.descriptive.rank

org.apache.commons.math3.stat.descriptive.summary

org.apache.commons.math3.stat.inference

org.apache.commons.math3.stat.interval

org.apache.commons.math3.stat.ranking

org.apache.commons.math3.stat.regression

org.apache.commons.math3.transform

org.apache.commons.math3.util

02 дистрибутив библиотеки math3

Дистрибутив должен иметь реализации общих дискретных и непрерывных дистрибутивов. Это коллекция некоторых из наиболее часто используемых алгоритмов в этом пакете, а также последующие реализации.

03 пакет анализа библиотеки math3

Пакет анализа используется для общих процедур численного анализа, включая поиск корня, функциональную интерполяцию и интегрирование.

04 комплексный пакет библиотеки math3

Комплексный пакет в основном используется для реализации сложных числовых типов и сложных трансцендентных функций.

05 пакет исключений библиотеки math3

Этот пакет легче понять, поскольку он хранит некоторые классы обработки алгоритмов ошибок.

06 пакет фильтров библиотеки math3

Пакет фильтров также является очень часто используемым фильтром.

07 пакет установки библиотеки math3

подгонка — это пакет подгонки кривой, который включает в себя алгоритмы минимизации невязки между наблюдаемыми и модельными значениями.

08 пакет дробей библиотеки math3

Пакет дробей в основном содержит типы чисел дробей и форматы чисел дробей.

09 пакет генетики библиотеки math3

Предоставляет компоненты и реализацию генетических алгоритмов.

10 пакетов геометрии библиотеки math3

Пакет геометрии предоставляет геометрические алгоритмы, включая задачу минимальной замкнутой сферы, создание выпуклой оболочки набора точек в 1D, 2D, 3D и евклидовом пространствах, задачи выпуклой оболочки, деревья разбиения двоичного пространства, многомерные функции сортировки и геометрические компоненты.

11 линейных пакетов библиотеки math3

Обеспечивает линейную алгебру

12 пакетов библиотеки math3 ml

Увидев имя пакета, мы действительно сможем его угадать, хотя оно не так мощно, как Python. Базовый пакет алгоритмов машинного обучения, включая оценку кластеров, расчет общего расстояния, нейронную сеть, карту объектов, одно/двумерную нейронную сеть и т. д.

13 пакет библиотеки math3 ode

Пакет ODE в основном используется для задач обыкновенных дифференциальных уравнений, несложных задач нормально-разностных уравнений, дискретных событий, шагов обработки выборки при интегрировании общих уравнений и т. д.

14 оптимальных пакетов библиотеки math3

Optim в основном касается оптимизатора, проблемы максимального значения и минимального значения.

Пакет из 15 простых чисел библиотеки math3

Пакет primes включает методы, связанные с простыми числами, такие как примитивное тестирование и факторизация.

16 случайных пакетов библиотеки math3

В пакет Random входят генераторы случайных чисел и случайных данных. Некоторые тестовые данные можно получить здесь.

17 пакет статистики библиотеки math3

Пакет stat широко используется в кардинальных научных расчетах, в основном для хранения некоторых данных, манипуляций и подведения итогов. Пакет статистики включает в себя расчеты корреляции/ковариации, сводную статистику, сводную статистику (сводки на основе времени, уровня и т. д.), проверку гипотез, биномиальную оценку, ранжирование и т. д. Это будет освещено в следующем сообщении в блоге.

18 пакет преобразования библиотеки math3

Transform инкапсулирует реализацию некоторых методов преобразования, включая быстрое преобразование Фурье.

19 пакет утилит библиотеки math3

Я считаю, что нет необходимости вводить это, в основном это некоторые математические и статистические инструменты, которые могут удобно использовать разработчики.

Другие менее часто используемые классы и пакеты.

В пакете math3 общая структура пакета и структура подпакета представлены выше, а пакеты, представленные ниже, обычно нами не используются.

  • Общий класс

Общие пакеты — это в основном общие категории, используемые в публичных математических библиотеках.

  • десятичная с плавающей запятой
  • пакет оптимизации

Этот пакет больше не рекомендуется использовать в версии 3.6.1, поэтому он размещен здесь. Пакет оптимизации включает в себя линейный, подгоночный, кривой, алгоритм минимума и т. д.

  • специальная сумка

В основном чаще используются Бета и Гамма, а две другие категории используются редко.

Подвести итог

В этой статье в основном представлены пакеты семейства проектов Commons, а также конкретно представлена ​​архитектура пакета Math, а также классификация и использование некоторых подпакетов. В следующей статье будет подробно объяснено использование классов пакетов и указано, на что следует обратить внимание.


[Цитировать]

  1. CommonsОфициальная домашняя страница:https://commons.apache.org/
  2. ASFОфициальная домашняя страница проекта:https://www.apache.org/index.html#projects-list
  3. math3 APIs:https://commons.apache.org/proper/commons-math/javadocs/api-3.6.1/index.html

Я участвую в пятом этапе конкурса эссе специального тренировочного лагеря Tencent Technology Creation 2024. Приходите и разделите приз со мной!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose