This media is not supported in your browser
VIEW IN TELEGRAM
#python, #numpy #matplotlib
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
По умолчанию трансформаторы #sklearn возвращают массив #NumPy.
Начиная с версии scikit-learn 1.3.2, можно использовать метод 𝐬𝐞𝐭_𝐨𝐮𝐭𝐩𝐮𝐭 для получения результатов в виде #pandas DataFrame.
Этот метод также может быть применен в рамках конвейера scikit-learn.
@data_analysis_ml
Начиная с версии scikit-learn 1.3.2, можно использовать метод 𝐬𝐞𝐭_𝐨𝐮𝐭𝐩𝐮𝐭 для получения результатов в виде #pandas DataFrame.
Этот метод также может быть применен в рамках конвейера scikit-learn.
@data_analysis_ml
Forwarded from Machinelearning
NumPy-QuadDType (
numpy_quaddtype
) — это реализация пользовательского типа данных (dtype
) для NumPy, которая обеспечивает настоящую арифметику с плавающей точкой четверной точности на разных платформах. Проект направлен на решение давних проблем с
np.longdouble
, предлагая согласованный, высокоточный тип с плавающей точкой независимо от базовой архитектуры системы, а также обеспечивая обратную совместимость long double
.Ядро numpy_quaddtype построено вокруг на двух ключевых компонентов:
QuadPrecision
, представляющий отдельные скаляры четверной точности;QuadPrecDType
, позволяющий использовать эти скаляры четверной точности в массивах и операциях NumPy.Отличительная черта numpy_quaddtype - его подход с двойным бэкэндом:
Sleef_quad
из библиотеки SLEEF, предоставляя настоящую 128-битную учетверенную точность.long double
, который может обеспечивать точность до 80 бит в некоторых системах, обеспечивая совместимость с np.longdouble
.Гибкость архитектуры
numpy_quaddtype
наследуется от компонентов ее ядра: QuadPrecisionObject
, хамелеоноподобная структура, которая может переключаться между формами:typedef union {
Sleef_quad sleef_value;
long double longdouble_value;
} quad_value;
typedef struct {
PyObject_HEAD
quad_value value;
QuadBackendType backend;
} QuadPrecisionObject;
QuadPrecDTypeObject
, который действует как мост, позволяя высокоточным числам гармонично работать в массивах и операциях NumPy:typedef struct {
PyArray_Descr base;
QuadBackendType backend;
} QuadPrecDTypeObject;
Он позволяет переключаться между бекэндами Sleef_quad (для SLEEF) и long double во время выполнения:
>>> import numpy as np
>>> import numpy_quaddtype as npq
# Using SLEEF backend (default)
>>> x = npq.QuadPrecision(3.5)
>>> x = npq.QuadPrecision(3.5, backend='sleef')
>>> repr(x)
QuadPrecision('3.5e+000', backend='sleef')
# Using longdouble backend
>>> y = npq.QuadPrecision(2.5, backend='longdouble')
>>> repr(y)
QuadPrecision('2.5e+000', backend='longdouble')
# Creating a NumPy array with QuadPrecision dtype
>>> z = np.array([x, x], dtype=npq.QuadPrecDType()) # SLEEF
>>> print(z)
[QuadPrecision('3.5e+000', backend='sleef')
QuadPrecision('3.5e+000', backend='sleef')]
>>> z = np.array([y, y], dtype=npq.QuadPrecDType("longdouble")) # longdouble
>>> print(z)
[QuadPrecision('2.5e+000', backend='longdouble')
QuadPrecision('2.5e+000', backend='longdouble')]
В тестах
numpy_quaddtype
с бэкендом SLEEF показал точность в 34 десятичных знаков. ULP (единица в младшем разряде) для основных арифметических операций ≤ 0,5000000001
, а для трансцендентных функций ≤ 1,0. C бэкендом Long Double показал точность, зависящую от платформы: 18-19 десятичных знаков в Linux и 15-17 в Windows.
В настоящее время ведётся подготовка к выпуску
numpy_quaddtype
в виде пакета Python, доступного через PyPI и conda. Также планируется направить предложение NEP для интеграции numpy_quaddtype
в экосистему NumPy и рассмотреть TLFloat
как потенциальную замену SLEEF в будущих версиях.numpy_quaddtype
на примере визуализации множества Мандельброта при экстремальном увеличении и моделирование квантового гармонического осциллятора для двухатомных молекул.@ai_machinelearning_big_data
#AI #ML #DS #Python #NumPy
Please open Telegram to view this post
VIEW IN TELEGRAM