это мощный алгоритм, который используется как для задач классификации, так и для регрессии. Основная цель метода — найти гиперплоскость, которая максимально разделяет данные на классы
В задачи классификации SVM ищет гиперплоскость, которая разделяет классы с максимально возможным зазором. Этот зазор определяется расстоянием от гиперплоскости до ближайших объектов, которые называются опорными векторами. Чем шире этот зазор, тем более устойчива модель
Если данные не могут быть разделены линейно, используется Kernel Trick. Kernel Trick позволяет преобразовать данные в более высокое измерение, где они становятся линейно разделимыми. Наиболее популярные ядра — линейное, полиномиальное и радиально-базисное (RBF)
✅ Опорные вектора: Это точки данных, которые оказывают непосредственное влияние на определение гиперплоскости разделения. Они определяют, где пройдет разделяющая линия или гиперплоскость✅ Точность (Accuracy): Определяет долю правильно классифицированных объектов✅ Precision и Recall:
➡️ Precision — это доля правильно предсказанных положительных классов от всех предсказанных как положительные
➡️ Recall — это доля правильно предсказанных положительных классов от всех фактически положительных✅ F1-score: Показывает баланс между precision и recall. Особенно полезен для оценки качества модели при несбалансированных данных
После оценки модели на тестовых данных важно проанализировать метрики качества. Если точность модели низкая, можно попробовать изменить параметры модели:
- C — контролирует баланс между правильностью классификации обучающей выборки и обобщающей способностью модели. Высокие значения C приводят к меньшему числу ошибок на обучающей выборке, но могут вызвать переобучение
- Gamma — контролирует влияние отдельных обучающих объектов на модель. Высокие значения делают модель более гибкой, что также может привести к переобучению
✅ Настройка гиперпараметров: Использование GridSearchCV для поиска оптимальных значений параметров C и gamma✅ Кросс-валидация: Использование кросс-валидации для оценки модели на разных подвыборках, что дает более надежную оценку её качества✅ Масштабирование данных: SVM чувствителен к масштабу признаков, поэтому важно масштабировать данные перед использованием SVM
SVM-регрессия (SVR) работает схожим образом, но вместо поиска гиперплоскости, которая разделяет классы, SVR пытается найти плоскость (или линию), которая проходит через данные таким образом, чтобы отклонение от этой линии было минимальным для большинства объектов. SVR использует параметр epsilon (ε), который определяет "зону допуска" — данные внутри этой зоны не влияют на оптимизацию модели
✅ Среднеквадратичная ошибка (MSE): Это основная метрика для оценки качества регрессии. Она измеряет среднее квадратичное отклонение предсказаний модели от фактических значений✅ Опорные вектора: Как и в классификации — это точки, которые оказывают влияние на положение линии регрессии. Они находятся на границах или за пределами epsilon-трубки
✅ Среднеквадратичная ошибка (MSE) и R²: MSE показывает, насколько предсказанные значения отклоняются от фактических. Чем ниже значение MSE, тем лучше модель✅ Настройка гиперпараметров:
➡️ C — контролирует жесткость регрессии. Высокие значения приводят к меньшему числу ошибок, но могут вызвать переобучение
➡️ Epsilon (ε) — определяет ширину "трубки" вокруг линии регрессии, в которой ошибки не учитываются при обучении модели
✅ Настройка гиперпараметров: С помощью GridSearchCV можно найти оптимальные значения параметров C и epsilon✅ Проверка распределения ошибок: Проверка распределения ошибок помогает понять, переобучена ли модель или недообучена✅ Масштабирование признаков: Поскольку SVR чувствителен к масштабу признаков, важно использовать масштабирование для улучшения результатов
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
🔥1
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import classification_report, accuracy_score
# Генерация данных (двух классов)
X, y = datasets.make_blobs(n_samples=200, centers=2, random_state=42)
# Разделение на обучающие и тестовые выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Создание и обучение SVM с линейным ядром
svm_clf = SVC(kernel='linear', C=1, random_state=42)
svm_clf.fit(X_train, y_train)
# Предсказания на тестовых данных
y_pred = svm_clf.predict(X_test)
# Оценка качества
print("Точность модели:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))
# Визуализация данных и гиперплоскости
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis', s=30)
plt.scatter(svm_clf.support_vectors_[:, 0], svm_clf.support_vectors_[:, 1], s=100, facecolors='none', edgecolors='r')
w = svm_clf.coef_[0]
b = svm_clf.intercept_[0]
x_vals = np.linspace(X[:, 0].min(), X[:, 0].max(), 100)
y_vals = - (w[0] * x_vals + b) / w[1]
plt.plot(x_vals, y_vals, 'k')
plt.xlabel('Признак 1')
plt.ylabel('Признак 2')
plt.title('SVM с линейным ядром')
plt.show()
➡️ Точность (Accuracy): Точность составляет 98.33%, что означает, что модель правильно классифицировала 98.33% примеров из тестовой выборки. Точность — это доля правильно классифицированных объектов среди всех объектов тестового набора. Такая высокая точность может указывать на то, что модель хорошо обучена на предоставленных данных и смогла эффективно разделить два класса
precision recall f1-score support
0 0.98 0.98 0.98 27
1 0.99 0.99 0.99 33
accuracy 0.98 60
macro avg 0.98 0.98 0.98 60
weighted avg 0.98 0.98 0.98 60
✅ Precision (Точность) для класса 0 и 1:
➡️ Precision для класса 0 равен 0.98, что означает, что из всех объектов, предсказанных как класс 0, 98% действительно принадлежат классу 0
➡️ Precision для класса 1 равен 0.99, что означает, что из всех объектов, предсказанных как класс 1, 99% оказались правильными✅ Recall (Полнота) для класса 0 и 1:
➡️ Recall для класса 0 равен 0.98, что означает, что модель правильно классифицировала 98% всех объектов класса 0
➡️ Recall для класса 1 равен 0.99, что означает, что модель обнаружила 99% всех объектов класса 1✅ F1-score:
➡️ F1-score для обоих классов также составляет около 0.98 - 0.99, что говорит о хорошем балансе между precision и recall для обоих классов✅ Support:
➡️ Support — это количество объектов в каждом классе (27 объектов класса 0 и 33 объекта класса 1). Метрики precision, recall и f1-score рассчитываются на основе этих объектов
➡️ На графике мы видим, что модель построила гиперплоскость (линия на графике), которая максимально разделяет два класса
➡️ Опорные вектора (обозначенные красными кругами) — это точки, которые лежат ближе всего к гиперплоскости и определяют её положение. Они оказывают наибольшее влияние на определение границы разделения
➡️ Высокая точность (98.33%), сбалансированные precision, recall и F1-score, а также четко определённая гиперплоскость указывают на то, что модель SVM хорошо справляется с задачей разделения классов➡️ Опорные вектора помогают сделать модель устойчивой, так как они оказывают наибольшее влияние на построение гиперплоскости➡️ Модель не имеет явных признаков переобучения или недообучения, так как высокая точность достигается как на обучающих, так и на тестовых данных, и классы визуально четко разделены
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
from sklearn.svm import SVR
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
# Генерация данных для регрессии
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)
# Разделение данных на обучающие и тестовые выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Создание и обучение модели SVR с RBF-ядром
svr_reg = SVR(kernel='rbf', C=1, gamma=0.1)
svr_reg.fit(X_train, y_train)
# Предсказания на тестовых данных
y_pred = svr_reg.predict(X_test)
# Оценка качества модели
mse = mean_squared_error(y_test, y_pred)
print("Среднеквадратичная ошибка (MSE):", mse)
# Визуализация исходных данных и предсказанной зависимости
plt.scatter(X, y, color='blue', label='Исходные данные')
plt.scatter(X_test, y_pred, color='red', label='Предсказанные значения')
plt.xlabel('Признак')
plt.ylabel('Целевое значение')
plt.title('SVR с RBF ядром')
plt.legend()
plt.show()
✅ Среднеквадратичная ошибка (MSE)➡️ Значение MSE равно 1367.05, что означает, что в среднем предсказанные значения отклоняются от фактических на достаточно большие величины. Это может говорить о том, что модель плохо справляется с задачей аппроксимации и не может адекватно предсказать целевую переменную
✅ Высокий уровень шума в данных➡️ Во время генерации данных использован параметр noise=10, который добавляет случайные отклонения. Возможно, этот уровень шума слишком велик, что затрудняет правильное обучение модели✅ Недостаточная сложность модели➡️ В данном примере использовалась модель SVR с RBF-ядром, но её параметры, такие как C и gamma, могут быть не оптимальными для данной задачи✅ Необходимость в масштабировании данных➡️ SVR чувствителен к масштабу данных, и если признаки имеют разный масштаб, это может ухудшать результаты модели. Например, если диапазон значений признаков сильно отличается, модель может неадекватно оценивать вклад каждого признака
✅ Масштабирование данных:➡️ Использование StandardScaler или MinMaxScaler может улучшить производительность модели, так как SVR чувствителен к масштабу признаков✅ Оптимизация гиперпараметров:➡️ Использование GridSearchCV для поиска оптимальных значений параметров C и gamma поможет найти параметры, которые лучше подходят для данной задачи и данных✅ Снижение уровня шума в данных:➡️ При генерации данных можно уменьшить уровень шума (`noise`). Высокий уровень шума может затруднить обучение модели, особенно если признаки слабо связаны с целевой переменной✅ Альтернативные модели:➡️ Попробуйте использовать другие модели регрессии, такие как Random Forest Regressor или Gradient Boosting Regressor. Эти модели могут быть более устойчивы к шуму и лучше справляться с нелинейностями в данных.✅ Проверка распределения ошибок:➡️ Построение графика распределения ошибок (разницы между предсказанными и реальными значениями) может помочь понять, есть ли систематические ошибки, которые модель не может уловить
➡️ В текущей реализации предсказания (красные точки) могут заметно отклоняться от исходных значений (синие точки), что и приводит к высокому значению MSE. Это указывает на то, что модель нуждается в улучшении
Высокое значение MSE указывает на то, что модель SVR с текущими параметрами не подходит для данной задачи. Для улучшения качества модели необходимо провести оптимизацию гиперпараметров, масштабирование данных и, возможно, снижение шума в данных. Эти шаги помогут снизить ошибку предсказания и сделать модель более точной и устойчивой
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
алгоритм машинного обучения, используемый как для задач классификации, так и регрессии. Основная идея заключается в рекурсивном разбиении данных на более простые подмножества с целью принятия решений, что можно представить в виде дерева с узлами и ветвями
➡️ Дерево решений работает, деля данные на основе условий, основанных на значениях признаков. Каждое разбиение минимизирует неопределённость (например, уменьшает энтропию или индекс Джини) в полученных подмножествах➡️ Например, для задачи классификации вида растений дерево решений может использовать такие признаки, как длина лепестка или ширина листа, чтобы на каждом этапе разбиения принимать решение о принадлежности растения к определённому виду
➡️ В случае регрессии дерево решений предсказывает числовое значение. Каждый лист дерева содержит конечное предсказание, которое является средним значением целевой переменной в этом узле. Таким образом, алгоритм строит прогноз на основе последовательности решений, которые минимизируют суммарную ошибку
➡️ Основная цель дерева решений заключается в разбиении данных на подгруппы на основе признаков таким образом, чтобы каждый новый узел уменьшал неопределенность (то есть увеличивал однородность подмножеств). Это достигается путем выбора таких разбиений, которые максимально уменьшают значение метрики (например, индекс Джини или энтропия)
➡️ В каждом узле дерево задаёт вопрос (например, "Признак X > 5?"), а листья содержат окончательные решения. Для классификации листья содержат метки классов, а для регрессии — предсказанные значения
➡️ Корневой узел — это начало дерева, с которого начинаются все разбиения
➡️ Внутренние узлы — это точки, где происходит разбиение на подгруппы в зависимости от значений признаков
➡️ Листья — это конечные узлы, которые представляют результаты. В классификации листья представляют классы, в регрессии — числовые значения
➡️ Алгоритм деревьев решений позволяет вычислить важность признаков (feature importance). Это значение указывает, насколько важен каждый признак для принятия решений. Чем выше важность признака, тем сильнее он влияет на результаты модели
➡️ Это помогает понять, какие признаки наиболее сильно влияют на предсказания модели, что делает деревья решений хорошо интерпретируемыми
➡️ Деревья решений склонны к переобучению, если не ограничить их глубину. Модель может выучить детали обучающей выборки, но плохо обобщать на новые данные
➡️ Основными способами решения этой проблемы являются ограничение максимальной глубины дерева (max_depth), минимального числа объектов для разбиения (min_samples_split) или минимального числа объектов в листе (min_samples_leaf)
➡️ Точность (Accuracy): Это базовая метрика, которая показывает процент правильно классифицированных примеров. Точность полезна, если классы сбалансированы➡️ Precision, Recall и F1-score: Для задач с несбалансированными классами лучше использовать precision (точность) и recall (полнота), а также F1-score, который является гармоническим средним этих двух метрик. Эти метрики помогают более точно понять, насколько хорошо модель справляется с классификацией для каждого конкретного класса➡️ Confusion Matrix (Матрица ошибок): Показывает, какие классы модель предсказала правильно и где были ошибки
➡️ Среднеквадратичная ошибка (MSE): Измеряет среднее квадратичное отклонение предсказанных значений от фактических➡️ Средняя абсолютная ошибка (MAE): Измеряет среднее абсолютное отклонение предсказанных значений от фактических➡️ R² (Коэффициент детерминации): Показывает, насколько хорошо предсказания модели объясняют разброс в данных. Значение ближе к 1 указывает на хорошее соответствие модели данным
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
🔥1
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import seaborn as sns
# Генерация данных для классификации
X, y = make_classification(n_samples=300, n_features=2, n_informative=2, n_redundant=0,
n_clusters_per_class=1, random_state=42)
# Разделение данных на обучающие и тестовые выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Создание и обучение дерева решений
dt_clf = DecisionTreeClassifier(max_depth=3, random_state=42)
dt_clf.fit(X_train, y_train)
# Предсказания на тестовых данных
y_pred = dt_clf.predict(X_test)
# Визуализация дерева решений
plt.figure(figsize=(12, 8))
plot_tree(dt_clf, feature_names=['Feature 1', 'Feature 2'], class_names=['Class 0', 'Class 1'], filled=True)
plt.title('Дерево решений')
plt.show()
# Построение сетки для визуализации разделяющей границы
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
np.arange(y_min, y_max, 0.1))
# Предсказания для всех точек сетки
Z = dt_clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# Визуализация разделяющей границы
plt.contourf(xx, yy, Z, alpha=0.3)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap='viridis', s=50)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Разделяющая граница дерева решений')
plt.show()
# Оценка точности модели
accuracy = accuracy_score(y_test, y_pred)
print("Точность модели:", accuracy)
# Классификационный отчёт
print("\nКлассификационный отчёт:\n", classification_report(y_test, y_pred))
# Матрица ошибок
conf_matrix = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(8, 6))
sns.heatmap(conf_matrix, annot=True, cmap='Blues', fmt='d', cbar=False)
plt.xlabel('Предсказанный класс')
plt.ylabel('Истинный класс')
plt.title('Матрица ошибок')
plt.show()
➡️ Точность модели составляет, например, 90%. Это означает, что модель правильно классифицировала 90% объектов из тестовой выборки
➡️ Precision (Точность) и Recall (Полнота): Эти метрики оценивают, насколько точно модель предсказывает каждый класс и насколько полно модель находит объекты каждого класса➡️ F1-score: Гармоническое среднее между precision и recall, показывает баланс между точностью и полнотой➡️ Высокие значения precision, recall, и F1-score показывают, что модель хорошо справляется с задачей, но стоит учитывать класс, где метрика ниже, чтобы увидеть возможные проблемы
➡️ Матрица ошибок помогает понять, сколько объектов каждого класса было классифицировано правильно и неправильно➡️ Например, если много объектов класса 0 были ошибочно отнесены к классу 1, это может говорить о проблемах с разделением в определённых областях данных
➡️ Визуализация помогает увидеть, какие признаки используются для принятия решений и как именно происходит разбиение➡️ Например, если на уровне разбиения часто используется один и тот же признак, это указывает на его высокую важность для задачи классификации
➡️ График разделяющей границы помогает понять, насколько хорошо модель разделяет классы. Если граница проходит близко к объектам разных классов, это указывает на хорошее качество разделения➡️ Если есть зоны, где объекты разных классов пересекаются, это может указывать на необходимость усложнения модели (например, увеличения глубины дерева) или использования других методов
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
🔥1
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error, r2_score
# Генерация данных для регрессии
# Создаем набор данных с 200 образцами и 1 признаком, добавляем шум для большей реалистичности
X, y = make_regression(n_samples=200, n_features=1, noise=15, random_state=42)
# Разделение данных на обучающие и тестовые выборки
# Используем 70% данных для обучения и 30% для тестирования
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Создание и обучение модели дерева решений
# Создаем модель дерева решений для регрессии с максимальной глубиной 5 для предотвращения переобучения
regressor = DecisionTreeRegressor(max_depth=5, random_state=42)
# Обучаем модель на обучающих данных
regressor.fit(X_train, y_train)
# Предсказания на тестовых данных
# Используем обученную модель для предсказания значений целевой переменной на тестовой выборке
y_pred = regressor.predict(X_test)
# Оценка качества модели
# Вычисляем среднеквадратичную ошибку для оценки качества предсказаний
mse = mean_squared_error(y_test, y_pred)
# Вычисляем коэффициент детерминации (R^2), который показывает, какую долю вариации удалось объяснить моделью
r2 = r2_score(y_test, y_pred)
print("Среднеквадратичная ошибка (MSE):", mse)
print("Коэффициент детерминации (R^2):", r2)
➡️ Среднеквадратичная ошибка (MSE):
➡️ Значение MSE показывает среднее квадратичное отклонение между предсказанными значениями и фактическими значениями целевой переменной. Чем меньше MSE, тем лучше модель справляется с задачей предсказания. В данном случае значение MSE поможет понять, насколько точными являются предсказания дерева решений➡️ Коэффициент детерминации (R²):
➡️ R² показывает, какую долю вариации целевой переменной удалось объяснить моделью. Значение R² близкое к 1 говорит о том, что модель хорошо объясняет зависимости в данных. Если R² мало, это означает, что модель не улавливает структуру данных
Шаг 4: Визуализация
# Визуализация результатов
# Отображаем исходные данные (синие точки) и предсказанные значения на тестовой выборке (красные точки)
plt.scatter(X, y, color='blue', label='Исходные данные')
plt.scatter(X_test, y_pred, color='red', label='Предсказанные значения')
plt.xlabel('Признак')
plt.ylabel('Целевое значение')
plt.title('Decision Tree Regressor')
plt.legend()
plt.show()
➡️ Качество модели:
➡️ Если MSE достаточно низкое, а R² близок к 1, можно сделать вывод, что модель хорошо справляется с задачей регрессии
➡️ Высокое значение MSE и низкий R² могут указывать на переобучение или недообучение. В таком случае следует пересмотреть гиперпараметры модели, такие как `max_depth` или `min_samples_leaf`, чтобы улучшить обобщающую способность➡️ Интерпретация предсказаний:
➡️ Дерево решений разбивает данные на интервалы и делает предсказания на основе среднего значения в каждом листе. Это может приводить к резким изменениям предсказаний, особенно если данные содержат шум или нелинейные зависимости
➡️ Можно попробовать увеличить глубину дерева (max_depth) или использовать ансамблевые методы, такие как Random Forest, для получения более сглаженных предсказаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
это алгоритм кластеризации, который используется для группировки объектов в кластеры (группы), чтобы объекты внутри каждого кластера были более похожими друг на друга, чем на объекты в других кластерах
найти K кластеров в наборе данных. Каждая точка данных будет принадлежать к одному из кластеров, и каждый кластер будет иметь свой центр (центроид), который представляет собой среднее значение всех точек в этом кластере
➡️ Исследование данных: Метод K-средних часто используется на этапе разведочного анализа данных, чтобы обнаружить закономерности и скрытые группы в данных
➡️ Масштабирование данных: Поскольку K-средних использует расстояние между точками, важно, чтобы данные были масштабированы (например, с помощью StandardScaler). Масштабирование помогает избежать ситуации, когда признаки с большими значениями доминируют над другими➡️ Обработка выбросов: Выбросы могут значительно влиять на центроиды кластеров, так как они могут притягивать центроид к себе
➡️ Инициализация центроидов: Выбираются K случайных точек данных как начальные центры кластеров (центроиды)➡️ Назначение точек данных кластерам: Каждая точка данных назначается ближайшему центроиду на основе расстояния (обычно используется евклидово расстояние)➡️ Обновление центроидов: После назначения всех точек данных пересчитывается центр каждого кластера — это новое среднее всех точек, которые были назначены этому кластеру➡️ Повторение: Эти два шага повторяются до тех пор, пока центроиды перестанут существенно изменяться или пока не будет достигнуто максимальное количество итераций
➡️ Зависимость от инициализации: Метод чувствителен к начальной инициализации центроидов. Разные начальные точки могут привести к разным результатам. Для решения проблемы часто используют несколько запусков алгоритма (параметр n_init)➡️ Форма кластеров: Метод K-средних лучше работает, когда кластеры имеют сферическую форму, так как он основан на минимизации евклидова расстояния. Для данных с более сложной структурой кластеров этот метод может не справиться
➡️ Каждый кластер представляет собой группу точек данных, которые близки друг к другу в пространстве признаков. Центроид каждого кластера можно интерпретировать как "среднее" характеристик всех объектов в этом кластере➡️ Положение центроидов и границы кластеров помогают понять, как данные распределены, какие объекты группируются вместе и какова структура данных
➡️ Когда количество признаков не слишком велико (2 или 3), кластеры можно визуализировать на графике. Это помогает наглядно понять, как различаются группы в данных и насколько хорошо они разделены➡️ Визуально можно оценить, насколько кластеры компактны (точки внутри одного кластера близки друг к другу) и разделены (расстояние между кластерами достаточно велико)
➡️ Инерция — это сумма квадратов расстояний от каждой точки до её ближайшего центроида. Чем ниже инерция, тем лучше точки сгруппированы внутри своих кластеров. Однако уменьшение инерции также может свидетельствовать о переобучении, если значение K слишком велико
➡️ Метод локтя используется для оценки оптимального значения K. На графике зависимости инерции от количества кластеров часто наблюдается точка, в которой инерция начинает снижаться медленнее. Эта точка и называется "локтем" и считается оптимальным значением K
➡️ Силуэтный коэффициент используется для оценки того, насколько хорошо точки классифицированы в свои кластеры. Он принимает значения от -1 до 1:
➡️ Значение близкое к 1 указывает на то, что точки правильно сгруппированы, и кластеры хорошо разделены
➡️ Значение близкое к 0 указывает на то, что кластеры перекрываются
➡️ Значение < 0 говорит о том, что точки могли бы быть назначены более подходящему кластеру
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# Создаем набор данных с 3 кластерами для визуализации задачи классификации
X, y = make_blobs(n_samples=300, centers=3, cluster_std=1.0, random_state=42)
# Визуализация сгенерированных данных
plt.scatter(X[:, 0], X[:, 1], s=50, color='blue')
plt.xlabel('Признак 1')
plt.ylabel('Признак 2')
plt.title('Сгенерированные данные для кластеризации')
plt.show()
# Применение метода K-средних для кластеризации
# Ищем 3 кластера в данных
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# Предсказанные кластеры
y_kmeans = kmeans.predict(X)
# Визуализация кластеров и центроидов
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, cmap='viridis', s=50)
centroids = kmeans.cluster_centers_
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', marker='X', s=200, label='Центроиды')
plt.xlabel('Признак 1')
plt.ylabel('Признак 2')
plt.title('Результаты кластеризации методом K-средних')
plt.legend()
plt.show()
# Оценка качества модели кластеризации
# Используем силуэтный коэффициент для оценки качества кластеризации
silhouette_avg = silhouette_score(X, y_kmeans)
print("Средний силуэтный коэффициент: {:.2f}".format(silhouette_avg))
➡️ На первом графике отображены сгенерированные данные с тремя кластерами. Точки данных разделены в трехмерном пространстве с использованием двух признаков➡️ Визуально можно увидеть, что данные разделены на три отдельных группы
➡️ На втором графике показаны результаты кластеризации методом K-средних➡️ Точки данных закрашены в зависимости от предсказанного кластера, а красными "X" обозначены центроиды кластеров — средние значения для каждого кластера➡️ Видно, что K-средних успешно разделил данные на три кластера, и центроиды правильно расположены в центре каждой группы
➡️ Средний силуэтный коэффициент:
➡️ Значение силуэтного коэффициента равно 0.85, что говорит о хорошем качестве кластеризации
➡️ Силуэтный коэффициент варьируется от -1 до 1. Значения, близкие к 1, означают, что точки данных находятся внутри своих кластеров и далеко от границ других кластеров. Значение 0.85 указывает на то, что кластеры достаточно плотные и хорошо разделены
➡️ Алгоритм K-средних успешно нашел три кластера в данных и правильно определил их центроиды➡️ Средний силуэтный коэффициент 0.85 показывает, что модель хорошо справляется с задачей кластеризации и точки данных находятся в соответствующих кластерах➡️ Визуализация кластеров подтверждает качество разбиения, так как точки данных хорошо сгруппированы и центроиды находятся в правильных местах
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
Этот модуль содержит инструменты для приведения данных к нужному формату, масштабирования, нормализации и кодирования категориальных данных➡️ StandardScaler: Приводит признаки к нормальному распределению со средним 0 и стандартным отклонением 1➡️ MinMaxScaler: Масштабирует данные к диапазону [0, 1]➡️ LabelEncoder: Преобразует категориальные метки в числовые➡️ OneHotEncoder: Преобразует категориальные данные в бинарные вектора➡️ PolynomialFeatures: Генерирует полиномиальные признаки для захвата нелинейных зависимостей
Модуль для разделения данных на обучающие и тестовые выборки, проведения кросс-валидации и подбора гиперпараметров➡️ train_test_split: Разделяет данные на обучающие и тестовые выборки➡️ cross_val_score: Проводит кросс-валидацию и возвращает метрики качества➡️ GridSearchCV: Осуществляет поиск лучших гиперпараметров с использованием кросс-валидации➡️ RandomizedSearchCV: Осуществляет поиск гиперпараметров случайным образом (менее затратный по времени)
Этот модуль включает множество метрик для оценки качества моделей машинного обучения➡️ accuracy_score: Метрика точности для классификации➡️ precision_score, recall_score, f1_score: Метрики для оценки качества классификации➡️ mean_squared_error: Среднеквадратичная ошибка для регрессии➡️ roc_auc_score: Метрика для оценки качества бинарных классификаторов на основе ROC-кривой
Этот модуль содержит инструменты для уменьшения размерности данных.➡️ PCA (Principal Component Analysis): Метод уменьшения размерности, который сохраняет максимум информации➡️ TruncatedSVD: Уменьшение размерности для разреженных матриц, схожий с PCA➡️ KernelPCA: Нелинейный вариант PCA с использованием ядерных методов
Этот модуль содержит мощные ансамблевые алгоритмы, такие как случайные леса и градиентный бустинг➡️ RandomForestClassifier: Алгоритм случайного леса для задач классификации➡️ GradientBoostingClassifier: Алгоритм градиентного бустинга для задач классификации➡️ VotingClassifier: Ансамбль различных моделей для улучшения точности➡️ BaggingClassifier: Ансамбль деревьев решений с бутстрапингом
Модуль для работы с алгоритмами SVM, которые используются для задач классификации и регрессии➡️ SVC: Алгоритм SVM для классификации➡️ SVR: Алгоритм SVM для регрессии➡️ LinearSVC: Линейный вариант SVM для быстрого решения задач с большим количеством данных
Модуль содержит алгоритмы кластеризации, такие как k-средних и иерархическая кластеризация➡️ KMeans: Кластеризация методом k-средних➡️ AgglomerativeClustering: Иерархическая кластеризация➡️ DBSCAN: Алгоритм плотностной кластеризации, который может выявлять шумы в данных
Модуль для реализации алгоритмов на основе ближайших соседей, используемых в классификации и регрессии➡️ KNeighborsClassifier: Классификатор на основе k ближайших соседей➡️ KNeighborsRegressor: Регрессия на основе k ближайших соседей➡️ RadiusNeighborsClassifier: Классификация с использованием радиуса
Этот модуль содержит инструменты для работы с линейными моделями, включая линейную регрессию, логистическую регрессию и регуляризацию➡️ LinearRegression: Линейная регрессия➡️ LogisticRegression: Логистическая регрессия➡️ Ridge: Линейная регрессия с L2-регуляризацией➡️ Lasso: Линейная регрессия с L1-регуляризацией➡️ ElasticNet: Комбинация L1 и L2-регуляризаций
Модуль для объединения различных шагов обработки данных и моделирования в единую последовательность (пайплайн)➡️ Pipeline: Создание последовательности шагов предобработки и моделирования➡️ FeatureUnion: Объединение нескольких трансформаций признаков
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
в библиотеке scikit-learn предоставляет инструменты для загрузки, создания и работы с различными наборами данных. Он включает в себя как функции для генерации синтетических данных, так и для загрузки популярных стандартных наборов данных, таких как Iris, Boston Housing и другие
Эти методы полезны для создания тестовых наборов данных для отладки и обучения моделей
➡️ make_classification: Генерация набора данных для задач классификации➡️ make_regression: Генерация набора данных для задач регрессии➡️ make_blobs: Генерация нескольких кластеров точек для кластеризации➡️ make_circles: Генерация двумерных данных с круговыми классами➡️ make_moons: Генерация двумерных данных с классами в форме полумесяцев➡️ make_multilabel_classification: Генерация данных для задач многозначной классификации
from sklearn.datasets import make_classification, make_regression, make_blobs
# Генерация данных для классификации
X_class, y_class = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, random_state=42)
# Генерация данных для регрессии
X_reg, y_reg = make_regression(n_samples=100, n_features=2, noise=0.1)
# Генерация кластеров для кластеризации
X_blobs, y_blobs = make_blobs(n_samples=100, centers=3, n_features=2, random_state=42)
# Генерация для нелинейной классификации (полумесяцы):
from sklearn.datasets import make_moons
X, y = make_moons(n_samples=300, noise=0.2, random_state=42)
➡️ n_samples: Количество образцов➡️ n_features: Количество признаков (только для make_classification и make_regression)➡️ n_informative: Количество информативных признаков➡️ n_redundant: Количество избыточных признаков➡️ centers: Количество центров кластеров (только для make_blobs)➡️ noise: Уровень шума в данных
Scikit-learn включает несколько стандартных наборов данных, которые часто используются для обучения и тестирования моделей
➡️ load_iris: Набор данных ирисов Фишера для задачи многоклассовой классификации➡️ load_boston: Набор данных о ценах на недвижимость в Бостоне (для задач регрессии)➡️ load_diabetes: Набор данных о диабете (для задач регрессии)➡️ load_wine: Набор данных о химическом составе вин (многоклассовая классификация)➡️ load_breast_cancer: Набор данных о раке молочной железы (бинарная классификация)
from sklearn.datasets import load_iris
# Загрузка данных ирисов
iris = load_iris()
X_iris, y_iris = iris.data, iris.target
Scikit-learn поддерживает загрузку данных из внешних источников через:
➡️ fetch_openml: Загрузка наборов данных с платформы OpenML➡️ fetch_covtype, fetch_20newsgroups, fetch_lfw_people: Загрузка специфических наборов данных, например для анализа текстов или лиц
from sklearn.datasets import fetch_openml
# Загрузка данных с OpenML
mnist = fetch_openml('mnist_784')
X_mnist, y_mnist = mnist.data, mnist.target
Scikit-learn предоставляет методы для работы с изображениями, например, набор данных "Оливки"
➡️ load_sample_image: Загрузка примеров изображений➡️ fetch_olivetti_faces: Загрузка набора данных с лицами
from sklearn.datasets import load_sample_image, fetch_olivetti_faces
import matplotlib.pyplot as plt
# Загрузка примера изображения
china = load_sample_image('china.jpg')
# Загрузка лиц с Olivetti
faces = fetch_olivetti_faces()
plt.imshow(faces.images[0], cmap='gray')
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
Нейронные сети — это алгоритмы машинного обучения, вдохновленные структурой и работой человеческого мозга. Они состоят из множества связанных между собой узлов, которые называются нейронами
Архитектура:➡️ Традиционные алгоритмы машинного обучения (ТМО), такие как линейная регрессия или SVM, имеют относительно простую структуру. Они основаны на аналитических функциях, которые пытаются аппроксимировать зависимость между входными данными и целевой переменной.➡️ Deep Learning (DL): использует нейронные сети с несколькими скрытыми слоями — так называемые глубокие нейронные сети. Эти сети состоят из большого числа параметров и нелинейных функций, что позволяет им моделировать сложные зависимости
Уровень абстракции:➡️ ТМО требуют ручной обработки признаков. Инженеры должны преобразовывать данные и извлекать из них ключевые признаки, которые наиболее сильно влияют на результат. Это важно для повышения производительности модели➡️ DL способно самостоятельно извлекать признаки из данных. Каждый слой нейронной сети обучается выделять все более высокоуровневые и абстрактные признаки. Например, в задачах компьютерного зрения нижние слои могут выделять грани и контуры, а более высокие слои — сложные объекты, такие как лица
Объем данных:➡️ ТМО хорошо работают с небольшими и умеренными объемами данных. Однако, когда данные становятся более сложными и объемными, их производительность ухудшается.➡️ DL, напротив, требует больших объемов данных для качественного обучения. Это связано с тем, что DL имеют огромное количество параметров, и для их правильной настройки нужно много данных
Нейронная сеть состоит из нескольких уровней (слоев):➡️ Входной слой: Принимает входные данные. Каждый узел во входном слое представляет собой один признак данных➡️ Скрытые слои: Один или несколько слоев, которые находятся между входным и выходным слоями. Нейроны этих слоев выполняют вычисления и преобразуют данные, используя функции активации. Чем больше скрытых слоев и узлов, тем больше сеть может изучать сложные и нелинейные зависимости в данных➡️ Выходной слой: Возвращает результат. Количество нейронов в выходном слое зависит от типа задачи. Например, для задачи классификации с тремя классами, выходной слой будет содержать три нейрона➡️ Нейроны в этих слоях связаны друг с другом через веса, и каждая связь имеет вес, который определяет значимость этой связи. Сумма взвешенных входов на каждом нейроне подвергается преобразованию с использованием функции активации, которая добавляет нелинейность в модель и позволяет нейронной сети решать сложные задачи
➡️ Цель обучения нейронной сети — минимизировать разницу между предсказанными и истинными значениями (т.е. минимизировать функцию потерь)➡️ В процессе обратного распространения веса корректируются на небольшие значения, чтобы уменьшить ошибку➡️ Это повторяется на протяжении многих итераций, пока сеть не научится предсказывать значения с удовлетворительной точностью
➡️ Скорость обучения (Learning Rate): Скорость обучения определяет, на сколько изменяются веса на каждом шаге. Слишком высокая скорость обучения может привести к нестабильности, а слишком низкая — к медленному обучению➡️ Переобучение: Переобучение (overfitting) возникает, когда сеть слишком хорошо запоминает обучающие данные и плохо обобщает на новые. Для борьбы с переобучением используют методы регуляризации и уменьшение количества параметров модели➡️ Недообучение (underfitting) происходит, когда сеть недостаточно сложная для изучения закономерностей в данных➡️ Функции активации: Разные функции активации влияют на обучение нейронной сети. Например, ReLU помогает избегать проблем исчезающих градиентов, которые возникают при обучении глубоких сетей
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
This media is not supported in your browser
VIEW IN TELEGRAM
Каждый нейрон в сети принимает один или несколько входов и генерирует выход. Нейрон можно представить как математическую функцию, которая принимает взвешенные входы, вычисляет их сумму и применяет функцию активации
➡️ У каждого нейрона есть множество входов, и каждому входу соответствует вес (w), который определяет его важность➡️ Чем больше вес, тем больший вклад этот вход вносит в итоговое значение нейрона
➡️ Нейрон берет взвешенную сумму всех входов и добавляет смещение (bias) — еще один параметр, который помогает лучше моделировать зависимость
➡️ Результат взвешенной суммы пропускается через функцию активации. Функции активации добавляют нелинейность в модель и позволяют решать сложные задачи
Примеры функций активации:➡️ ReLU (Rectified Linear Unit): Возвращает 0, если вход меньше 0, и входное значение, если оно больше нуля. Используется для скрытых слоев➡️ Sigmoid: Преобразует значения в диапазон от 0 до 1, часто используется в задачах классификации
# Импортируем необходимые библиотеки
import numpy as np
def sigmoid(x):
# Пример функции активации - сигмоида, возвращает значения от 0 до 1
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(x):
# Производная сигмоиды, необходимая для обратного распространения
return x * (1 - x)
# Пример работы нейрона
# Входы нейрона
inputs = np.array([1.0, 2.0, 3.0])
# Веса, соответствующие входам (настраиваются во время обучения)
weights = np.array([0.5, -0.6, 0.2])
# Смещение (bias), помогает сети лучше моделировать зависимости
bias = 0.7
# Расчет взвешенной суммы входов
weighted_sum = np.dot(inputs, weights) + bias
print(f"Взвешенная сумма входов: {weighted_sum}")
# Применение функции активации (например, сигмоидной функции)
output = sigmoid(weighted_sum)
print(f"Выход нейрона после применения функции активации: {output}")
Please open Telegram to view this post
VIEW IN TELEGRAM
это процесс передачи входных данных через нейронную сеть для получения предсказания
1. Данные поступают во входной слой, который содержит нейроны, представляющие признаки входного вектора
2. В скрытых слоях нейроны суммируют взвешенные входы, добавляют смещение (bias) и применяют функцию активации, вводя нелинейность в модель
3. Выходной слой формирует итоговое предсказание, которое может быть вероятностью класса или числовым значением
4. Итоговое значение сравнивается с истинным, и рассчитывается ошибка, которая используется для последующего этапа — обратного распространения.
это метод обучения, цель которого — минимизировать ошибку путем корректировки весов с помощью градиентного спуска
1. Вычисление ошибки: Ошибка представляет разницу между предсказанным и истинным значением и определяется с помощью функции потерь
2. Распространение ошибки: Ошибка передается назад по сети, начиная с выходного слоя. На каждом уровне вычисляется градиент функции потерь по весам, показывая вклад каждого веса в ошибку
3. Обновление весов: Веса корректируются на основе градиентов и скорости обучения (learning rate). Градиентный спуск изменяет веса в направлении, противоположном градиенту, чтобы минимизировать ошибку, улучшая точность предсказаний
# Импортируем необходимые библиотеки
import numpy as np
# Пример многослойной нейронной сети с одним скрытым слоем
class SimpleNeuralNetwork:
def __init__(self):
# Веса и смещения для первого слоя (скрытого)
self.weights_hidden = np.array([[0.2, 0.8], [0.4, -0.5], [-0.3, 0.1]])
self.bias_hidden = np.array([0.5, 0.1])
# Веса и смещение для выходного слоя
self.weights_output = np.array([[0.3], [-0.7]])
self.bias_output = 0.2
def forward(self, inputs):
# Прямое распространение для скрытого слоя
hidden_layer_input = np.dot(inputs, self.weights_hidden) + self.bias_hidden
hidden_layer_output = sigmoid(hidden_layer_input)
print(f"Выход скрытого слоя: {hidden_layer_output}")
# Прямое распространение для выходного слоя
output_layer_input = np.dot(hidden_layer_output, self.weights_output) + self.bias_output
output = sigmoid(output_layer_input)
return output
def backward(self, inputs, expected_output, output, learning_rate=0.1):
# Обратное распространение для выходного слоя
output_error = expected_output - output
output_delta = output_error * sigmoid_derivative(output)
# Обратное распространение для скрытого слоя
hidden_layer_output = sigmoid(np.dot(inputs, self.weights_hidden) + self.bias_hidden)
hidden_error = np.dot(self.weights_output, output_delta)
hidden_delta = hidden_error * sigmoid_derivative(hidden_layer_output)
# Обновление весов и смещений
self.weights_output += learning_rate * np.dot(hidden_layer_output.reshape(-1, 1), output_delta.reshape(1, -1))
self.bias_output += learning_rate * output_delta
self.weights_hidden += learning_rate * np.dot(inputs.reshape(-1, 1), hidden_delta.reshape(1, -1))
self.bias_hidden += learning_rate * hidden_delta.flatten()
print(f"Обновленные веса скрытого слоя: {self.weights_hidden}")
print(f"Обновленные веса выходного слоя: {self.weights_output}")
# Инициализируем сеть и передаем данные
nn = SimpleNeuralNetwork()
input_data = np.array([1.0, 0.5, -1.5])
expected_output = np.array([0.7])
# Прямое распространение
output = nn.forward(input_data)
print(f"Выход сети: {output}")
# Обратное распространение
nn.backward(input_data, expected_output, output)
print(f"Выход сети после обратного распространения: {nn.forward(input_data)}")
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
это тип нейронных сетей, в которых каждый нейрон одного слоя связан с каждым нейроном следующего слоя. Такие сети также называют многослойными персептронами (MLP). Это один из наиболее базовых типов нейронных сетей, который хорошо подходит для задач, в которых не требуется пространственная или временная зависимость входных данных
Каждый нейрон в сети имеет вес и смещение, которые настраиваются во время обучения, и применяется функция активации для ввода нелинейности. Полносвязные нейронные сети могут иметь несколько скрытых слоев между входным и выходным слоями, что позволяет им моделировать сложные зависимости в данных
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
# Генерация случайных данных для обучения
X = np.random.rand(1000, 10) # 1000 образцов, каждый с 10 признаками
y = np.random.randint(2, size=(1000, 1)) # Метки классов (0 или 1)
# Создание полносвязной нейронной сети
model = Sequential()
model.add(Dense(64, input_dim=10, activation='relu')) # Первый скрытый слой с 64 нейронами
model.add(Dense(32, activation='relu')) # Второй скрытый слой с 32 нейронами
model.add(Dense(1, activation='sigmoid')) # Выходной слой для бинарной классификации
# Компиляция модели
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Обучение модели
model.fit(X, y, epochs=10, batch_size=32)
В этом примере мы создали сеть с двумя скрытыми слоями. Первый скрытый слой состоит из 64 нейронов, а второй — из 32 нейронов, оба используют функцию активации ReLU. Выходной слой состоит из одного нейрона с сигмоидной функцией активации, так как задача — бинарная классификация
✅ Классификация табличных данных: Полносвязные сети широко применяются для решения задач классификации и регрессии на табличных данных. Это могут быть задачи кредитного скоринга, прогнозирования спроса, диагностики заболеваний и другие задачи, где данные представлены в виде таблиц, и важно учитывать взаимодействия между признаками✅ Прогнозирование и анализ данных: Полносвязные сети могут использоваться для прогнозирования временных рядов (например, прогнозирование цен акций), если временная зависимость представлена через признаки и нет необходимости в рекуррентных связях✅ Анализ текстовых данных: Полносвязные сети могут использоваться как финальные слои в архитектурах для обработки текстов, например, после использования сверточных или рекуррентных сетей. Они помогают преобразовывать высокоуровневые признаки в конечное решение, например, в задачи классификации текста
✅ Полносвязные сети плохо работают с изображениями и данными, имеющими пространственную зависимость, поскольку они не учитывают локальные связи между элементами данных. Для таких задач лучше подходят сверточные нейронные сети (CNN)✅ Они также могут переобучаться на сложных задачах, если количество параметров становится слишком большим по сравнению с объемом данных, поэтому необходимо применять регуляризацию и методы для предотвращения переобучения
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
это тип нейронной сети, предназначенный для работы с изображениями и данными с двумерной структурой. CNN особенно эффективны в задачах, связанных с обработкой изображений, поскольку они могут выявлять пространственные зависимости в данных, такие как границы, текстуры и более сложные структуры
Основная идея CNN заключается в использовании свёрток для выделения признаков из входного изображения. Вместо полного соединения каждого нейрона с каждым (как в традиционных нейронных сетях), свёрточные слои соединены с соседними пикселями, что позволяет уменьшить число параметров и улучшить способность сети к обобщению
✅ Классификация изображений: Определение того, что изображено на картинке, например, классификация животных, транспортных средств, еды и т.д✅ Обнаружение объектов: Поиск и определение объектов на изображении, например, обнаружение автомобилей на дороге или лиц на фотографии✅ Сегментация изображений: Разделение изображения на области, например, выделение каждого объекта в кадре на отдельный сегмент✅ Анализ медицинских изображений: Выделение опухолей или аномалий на снимках КТ и МРТ
Приведём пример создания и обучения CNN с использованием библиотеки Keras для классификации изображений из набора данных CIFAR-10:
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt
# Загрузка данных CIFAR-10
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()
# Нормализация изображений (приводим значения пикселей к диапазону [0, 1])
train_images, test_images = train_images / 255.0, test_images / 255.0
# Создание свёрточной нейронной сети
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)), # Первый свёрточный слой
layers.MaxPooling2D((2, 2)), # Слой подвыборки (max pooling)
layers.Conv2D(64, (3, 3), activation='relu'), # Второй свёрточный слой
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.Flatten(), # Преобразование в плоский вектор для входа в полносвязные слои
layers.Dense(64, activation='relu'), # Полносвязный слой
layers.Dense(10, activation='softmax') # Выходной слой с 10 нейронами (по числу классов)
])
# Компиляция модели
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# Обучение модели
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
# Оценка качества модели на тестовых данных
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f"Точность на тестовых данных: {test_acc}")
1. Свёрточные слои: Первый свёрточный слой имеет 32 фильтра размером 3x3, которые выделяют начальные признаки, такие как границы и текстуры. Второй и третий свёрточные слои добавляют более глубокие уровни абстракции
2. MaxPooling: Слои подвыборки уменьшают размерность признаков, сохраняя наиболее важную информацию и уменьшая вычислительные затраты
3. Полносвязные слои: Эти слои работают с извлеченными признаками для выполнения классификации, определяя класс входного изображения
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
это архитектура, разработанная для обработки последовательных данных, таких как временные ряды, текст или аудио. Это позволяет моделировать временные зависимости, что полезно в задачах прогнозирования временных рядов и обработки естественного языка
это связи, которые позволяют передавать информацию из одного временного шага к следующему. Это означает, что нейронная сеть может "запоминать" информацию о предыдущих состояниях, что помогает учитывать временные зависимости в последовательных данных, таких как текст или временные ряды. Благодаря этим связям, RNN могут эффективно моделировать данные, которые зависят от предшествующих элементов, что особенно важно в задачах, где порядок данных имеет значение
import numpy as np
from keras.models import Sequential
from keras.layers import SimpleRNN, Dense
X_train = np.random.rand(100, 10, 1) # 100 образцов, 10 временных шагов, 1 признак
y_train = np.random.rand(100, 1)
model = Sequential()
model.add(SimpleRNN(50, activation='tanh', input_shape=(10, 1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, y_train, epochs=20, batch_size=10)
В этом примере
SimpleRNN
обрабатывает последовательность длиной 10 шагов, а Dense
слой формирует предсказание. Входные данные представлены в виде трехмерного массива, где первый размер — количество образцов, второй — количество временных шагов, а третий — число признаков✅ Прогнозирование временных рядов: RNN применяются для прогнозирования финансовых показателей, погодных данных и других последовательностей, где текущие значения зависят от предыдущих➡️ Пример: Прогнозирование цены акций на основе исторических данных✅ Обработка естественного языка (NLP): RNN используются для задач NLP, таких как машинный перевод и генерация текста. Механизм памяти RNN позволяет учитывать контекст➡️ Пример: Генерация текста, где каждое слово определяется с учетом предыдущих слов✅ Распознавание речи: RNN применяются для преобразования аудиосигналов в текст, учитывая контекст звуков➡️ Пример: Системы распознавания речи, такие как Siri или Google Assistant, используют RNN для преобразования звуков в текст✅ Анализ и генерация последовательностей: RNN также используются для анализа биомедицинских сигналов и генерации новых последовательностей, таких как музыкальные композиции➡️ Пример: Генерация музыки на основе заданного жанра
Для решения этой проблемы применяются следующие типы рекуррентных нейронных сетей LSTM (Long Short-Term Memory) и GRU (Gated Recurrent Unit), которые эффективно справляются с передачей информации на больших временных интервалах➡️ LSTM имеют специальные ячейки памяти, помогающие сохранять важную информацию. Это позволяет LSTM обучаться на задачах с длинными временными зависимостями, таких как анализ текста➡️ GRU — упрощенная версия LSTM с меньшим числом параметров, что делает её быстрее в обучении. GRU подходят для задач, где важна скорость обучения
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
это высокоуровневый API для машинного обучения, который упрощает создание и обучение нейронных сетей. Основное преимущество Keras в его простоте и доступности
➡️ Sequential: Простой способ создания нейронных сетей путем линейного добавления слоев➡️ Model: Позволяет создавать сложные архитектуры с несколькими входами и выходами
➡️ Core Layers: Основные слои, такие как Dense (полносвязный слой), Activation (функции активации), Dropout и др➡️ Convolutional Layers: Для построения сверточных нейронных сетей (CNN), например Conv2D, Conv3D➡️ Recurrent Layers: Слои для рекуррентных нейронных сетей (RNN), такие как LSTM, GRU, SimpleRNN➡️ Pooling Layers: Для выполнения операций объединения, таких как MaxPooling2D, AveragePooling2D➡️ Normalization Layers: Слои для нормализации данных, например, BatchNormalization
➡️ Включает различные оптимизаторы, такие как SGD, Adam, RMSprop и другие, используемые для корректировки весов сети во время обучения. Оптимизаторы играют важную роль в сходимости моделей
➡️ Определяет функции потерь, такие как mean_squared_error, categorical_crossentropy и binary_crossentropy, которые используются для оценки того, насколько сеть хорошо предсказывает целевые значения. Потери являются основой процесса обучения, так как сеть стремится минимизировать значение функции потерь
➡️ Модуль, позволяющий оценивать качество обучения моделей. Они помогают понять, насколько хорошо работает модель, особенно на тестовых данных
➡️ Это интерфейс для выполнения операций во время обучения. Например, EarlyStopping позволяет остановить обучение, если качество на валидационной выборке перестает улучшаться, ModelCheckpoint сохраняет веса на определенном этапе, TensorBoard подключает визуализацию результатов обучения
➡️ Содержит утилиты для предварительной обработки данных. Этот модуль может работать с изображениями, текстами и последовательностями
➡️ Модуль инициализации весов, который контролирует начальные значения весов. Например, glorot_uniform и he_normal позволяют улучшить сходимость нейронной сети, выбирая хорошие стартовые значения для весов
➡️ Использование сверточных нейронных сетей (CNN) для решения задач классификации изображений, таких как распознавание рукописных цифр (например, MNIST) или классификация более сложных изображений (например, CIFAR-10)
➡️ Keras позволяет решать задачи обработки естественного языка (NLP), такие как анализ тональности текста, классификация текстов, машинный перевод и генерация текста. Для этого используются рекуррентные слои, такие как LSTM или GRU
➡️ Использование рекуррентных нейронных сетей (RNN), таких как LSTM и GRU, для прогнозирования временных рядов (например, прогнозирование финансовых показателей, спроса, погоды и т.д.)
➡️ Комбинация сверточных и рекуррентных слоев позволяет распознавать аудиосигналы и преобразовывать их в текст. Это используется для создания приложений распознавания речи
➡️ Keras можно использовать для создания автокодировщиков, которые используются для уменьшения размерности данных или для создания рекомендательных систем. Это позволяет обучить сеть сжатию и последующему восстановлению информации
➡️ Keras позволяет создавать генеративные состязательные сети (GAN), которые используются для генерации новых данных, таких как изображения, на основе существующего набора данных. GAN активно применяются для создания искусственных изображений, улучшения качества фото и создания синтетических данных
➡️ Keras особенно удобен для быстрого создания прототипов и исследования новых архитектур, благодаря своей простоте и интуитивному интерфейсу. Он позволяет разработчикам и исследователям экспериментировать с различными архитектурами, не погружаясь в детали низкоуровневой реализации
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
Это высокоуровневый API для создания моделей глубокого обучения, который работает поверх TensorFlow. Это тот же интерфейс Keras, но глубже интегрированный в экосистему TensorFlow
tf.data.Dataset предоставляет удобные методы для загрузки, трансформации и подготовки данных для обучения моделей
Предоставляет стандартные слои нейронных сетей, такие как Dense, Conv2D, Dropout и другие. Эти слои используются для построения моделей нейронных сетей как в высокоуровневом, так и в низкоуровневом программировании
Включает инструменты и оптимизаторы для процесса обучения моделей. Например, GradientDescentOptimizer и AdamOptimizer используются для корректировки весов нейронной сети. Также модуль содержит инструменты для работы с чекпоинтами, что позволяет сохранять и восстанавливать модель в процессе обучения
Модуль для работы с функциями потерь, они служат для оценки того, насколько хорошо модель обучается, и являются основой для процесса оптимизации
Набор низкоуровневых операций, таких как функции активации (ReLU, Sigmoid), нормализация, операции свертки и пулинга. tf.nn позволяет создавать пользовательские функции и операции для работы с нейронными сетями
Используется для визуализации процесса обучения моделей с помощью TensorBoard — инструмента, который позволяет анализировать графики потерь, точности и просматривать модель. TensorBoard помогает в отладке и мониторинге обучения, что полезно для оценки прогресса модели и диагностики проблем
Модуль для сохранения и загрузки обученных моделей. С помощью SavedModel можно сохранить как архитектуру модели, так и её веса, чтобы использовать их для развертывания на других платформах или для дальнейшего обучения
Модуль для распределенного обучения. TensorFlow поддерживает распределенное обучение на нескольких GPU или даже на различных машинах, что делает его удобным для работы с большими объемами данных и большими моделями
Модули для обработки изображений и текста. tf.image включает функции для предобработки изображений, такие как изменение размера, повороты и фильтрация. tf.text — это API для обработки текстовых данных, включающий операции по токенизации и преобразованию текста в числовые представления
создание сверточных нейронных сетей (CNN) для решения задач компьютерного зрения, таких как распознавание объектов на изображениях, классификация и сегментация
поддержка разработки рекуррентных сетей (RNN), трансформеров и других архитектур для анализа текста, включая задачи машинного перевода, анализ тональности, чат-боты и генерацию текста
поддерживает разработку GAN, которые используются для создания новых данных, таких как изображения и видео, на основе существующих наборов данных. GAN также применяются для улучшения разрешения изображений и генерации синтетических данных
распознавание речи и работа с аудиосигналами, что позволяет разрабатывать системы преобразования речи в текст и ассистенты с голосовым управлением
создание систем, рекомендующих продукты, фильмы или контент на основе предпочтений пользователя
задачи классификации и регрессии на табличных данных. В этом случае модели, такие как полносвязные нейронные сети, применяются для предсказания значений на основе числовых и категориальных признаков
TensorFlow Lite — версия TensorFlow, предназначенная для использования на мобильных и встроенных устройствах. Позволяет оптимизировать модели для меньшего размера и потребления ресурсов, что делает их пригодными для развертывания на устройствах с ограниченной вычислительной мощностью
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
Главные преимущества PyTorch — его гибкость при разработке моделей и способность легко отлаживать и тестировать различные архитектуры
Это основной модуль PyTorch, который включает в себя функции для создания и работы с тензорами. Тензоры — это основа всех вычислений в PyTorch, аналог матриц, которые могут быть как на CPU, так и на GPU. Тензоры поддерживают операции, аналогичные операциям с массивами NumPy, но с возможностью ускорения за счет использования GPU
Модуль для построения и обучения нейронных сетей. torch.nn предоставляет все основные слои для глубокого обучения, такие как Linear (полносвязные слои), Conv2d (сверточные слои), RNN и LSTM (рекуррентные слои). Также в этом модуле содержатся функции активации, такие как ReLU, и другие ключевые компоненты для построения сложных архитектур
Модуль для оптимизации и обучения моделей. Он содержит популярные оптимизаторы, такие как SGD, Adam, RMSprop и другие. Оптимизаторы используются для обновления весов сети на основе вычисленных градиентов и функции потерь
Это система автоматического дифференцирования PyTorch, которая позволяет вычислять градиенты автоматически. Благодаря torch.autograd, PyTorch может автоматически создавать вычислительный граф во время выполнения операций, что делает его гибким и удобным для экспериментов. Этот модуль необходим для реализации процесса обучения нейронных сетей
Модуль для работы с данными. DataLoader и Dataset позволяют легко загружать и итерировать данные во время обучения модели. DataLoader может выполнять пакетную загрузку данных, перемешивание и другие операции, которые упрощают подготовку данных к обучению
Это подбиблиотека PyTorch, которая содержит популярные датасеты, модели и трансформации для работы с изображениями. torchvision.datasets включает известные наборы данных, такие как MNIST, CIFAR-10 и ImageNet. torchvision.transforms позволяет выполнять различные предобработки изображений, такие как изменение размера, обрезка, нормализация и преобразования
Эти модули предоставляют инструменты для работы с текстом и аудио соответственно. torchtext помогает с загрузкой и предобработкой текстовых данных для задач NLP, таких как токенизация и создание словарей. torchaudio предоставляет инструменты для обработки аудиоданных и создания входных данных для задач распознавания речи и аудиоанализа
Модуль для распределенного обучения, который позволяет использовать несколько GPU или даже несколько узлов для обучения больших моделей на больших объемах данных. torch.distributed помогает ускорить процесс обучения, распараллелив вычисления
Модуль для оптимизации и ускорения выполнения моделей. TorchScript позволяет компилировать динамические модели PyTorch в статические, что делает их более эффективными и подходящими для развертывания в продакшене
Модуль для работы с графическими процессорами (GPU). Он позволяет перенести тензоры и модели на GPU для ускорения вычислений. PyTorch автоматически использует CUDA, если на машине есть поддерживаемый GPU, что делает вычисления быстрее, особенно для больших моделей
✅ Динамический вычислительный граф: PyTorch позволяет создавать вычислительный граф на лету, что упрощает отладку и дает гибкость при разработке моделей. Это особенно полезно в исследовательских задачах, когда необходимо быстро вносить изменения в архитектуру
✅ Поддержка GPU: PyTorch легко использует GPU через CUDA для ускорения вычислений, что делает его подходящим для работы с большими наборами данных и сложными моделями✅ Популярность в исследованиях: Благодаря своей простоте и гибкости, PyTorch стал очень популярным в академическом сообществе и активно используется для публикаций и исследований. Это объясняется его более «питоническим» подходом, что упрощает обучение и написание кода
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
Использовать современные технологии генерации текста и анализа
Цель:
✅ Понять, как состязательные модели (GAN) могут применяться для генерации текстов, включая SQL-запросы. Изучить, как создавать модели генератора и дискриминатора, чтобы с их помощью генерировать правдоподобные SQL-запросы. Этот шаг закладывает фундамент для создания гибких генеративных моделей✅ Теория
✅ Архитектура GAN: генератор и дискриминатор
✅ Особенности применения GAN для текстовых данных
✅ Проблемы дискретных данных и возможные решения (например, Gumbel-Softmax)
✅ Настройка дискриминатора. Принцип и оценка качества настройки✅ Практика
✅ Реализация GAN для генерации SQL-запросов. Разбор алгоритма создания
✅ Настройка дискриминатора для оценки корректности структуры запросов✅ Проект
✅ Генерация SQL-запросов с использованием GAN
Цель:
✅ Освоить вариационные автоэнкодеры (VAE) и их применение для анализа структуры текстов. Изучение VAE позволит выявлять закономерности в данных, находить аномалии в SQL-запросах и генерировать их вариации. Это важный шаг для создания интеллектуальных систем анализа✅ Теория
✅ Архитектура VAE: энкодер, латентное пространство, декодер
✅ Использование VAE для анализа и генерации текста
✅ Методы визуализации латентного пространства✅ Практика
✅ Реализация VAE для генерации SQL-запросов
✅ Анализ латентного пространства для выявления паттернов в запросах
✅ Выявление аномалий и создание вариаций запросов✅ Проект
✅ Интеграция VAE к GAN для анализа и генерации SQL-запросов
✅ Использование VAE для поиска аномальных запросов
✅ Оценка эффективности интеграции VAE к текущему решению
Цель:
✅ Научиться оценивать качество работы генеративных моделей с использованием метрик, таких как BLEU, ROUGE, Precision, Recall, F1-score. Этот шаг важен для объективной проверки качества генерации и анализа SQL-запросов, а также для понимания, как оптимизировать модели✅ Теория
✅ Метрики для оценки генеративных моделей (BLEU, ROUGE, Precision, Recall, F1-score)
✅ Специфика оценки для SQL-запросов (Семантическая корректность, Логическая целостность)✅ Практика
✅ Расчет BLEU и ROUGE для оценки качества генерации SQL-запросов
✅ Оценка разбора SQL-запросов с помощью Precision, Recall, F1-score✅ Проект
✅ Добавление модуля оценки качества в систему генерации и анализа SQL-запросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Best Practices IT
👩🚀 Программа обучения AI и ML с фокусом на генеративные модели
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…
➡️ Цель 1: Изучить основы AI и ML, уметь создавать генеративные модели, которые потом можно применять для личных и рабочих задач
➡️ Цель 2: Сгенерировать весь курс (материалы и задания) с помощью…