и посмотреть медиа
Ciencia de los datos - entrevistas
и посмотреть медиа
Entrevistas de Data Science.
bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.
Preguntas de entrevista sobre ciencia de datos.
🤔 Как обучаются линейные модели? Линейные модели обучаются путём нахождения оптимальных весов, которые минимизируют функцию потери, обычно через градиентный спуск. В случае простых моделей (например, линейной регрессии) может быть использовано аналитическое решение (метод наименьших квадратов). При больших данных или сложных задачах применяется итеративный подход для более эффективной оптимизации. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Расскажи про метрики, классификацию? Для оценки моделей классификации позволяют определить, насколько хорошо модель справляется с задачей предсказания классов. 🚩Основные метрики классификации 🟠Точность (Accuracy) Доля правильных предсказаний. Когда классы сбалансированы. \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} 🟠Полнота (Recall) Доля правильно предсказанных положительных примеров. Когда важно минимизировать пропуск положительных случаев. \text{Recall} = \frac{TP}{TP + FN} 🟠Точность (Precision) Доля правильно предсказанных положительных примеров из всех предсказанных положительных. Когда важно минимизировать количество ложноположительных случаев. \text{Precision} = \frac{TP}{TP + FP} 🟠F-мера (F-score) Гармоническое среднее между точностью и полнотой. Когда нужно сбалансировать точность и полноту. F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} 🟠Матрица ошибок (Confusion Matrix) Таблица с количеством истинных положительных, истинных отрицательных, ложноположительных и ложноотрицательных предсказаний. 🟠ROC-кривая и AUC ROC-кривая показывает соотношение истинно положительных и ложноположительных срабатываний при различных порогах. AUC – площадь под ROC-кривой. Для оценки качества моделей при различных порогах классификации. 🚩Примеры использования Accuracy, Precision, Recall и F1-Score from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix # Истинные метки и предсказанные метки y_true = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1] y_pred = [0, 1, 0, 1, 0, 1, 0, 1, 1, 0] # Вычисление метрик accuracy = accuracy_score(y_true, y_pred) precision = precision_score(y_true, y_pred) recall = recall_score(y_true, y_pred) f1 = f1_score(y_true, y_pred) cm = confusion_matrix(y_true, y_pred) print(f"Accuracy: {accuracy}") print(f"Precision: {precision}") print(f"Recall: {recall}") print(f"F1 Score: {f1}") print(f"Confusion Matrix:\n{cm}") ROC-кривая и AUC import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, roc_auc_score # Истинные метки и предсказанные вероятности y_true = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1] y_scores = [0.1, 0.4, 0.35, 0.8, 0.2, 0.75, 0.3, 0.4, 0.85, 0.6] # Вычисление ROC-кривой и AUC fpr, tpr, thresholds = roc_curve(y_true, y_scores) roc_auc = roc_auc_score(y_true, y_scores) # Построение ROC-кривой plt.figure() plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC-кривая (AUC = {roc_auc:.2f})') plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.0]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('ROC-кривая') plt.legend(loc="lower right") plt.show() Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое мультиколлинеарность? Это ситуация, когда признаки сильно коррелируют друг с другом. - Это вызывает нестабильность линейных моделей, так как коэффициенты могут становиться большими и неинтерпретируемыми. - Решения: удаление зависимых признаков, PCA, L1-регуляризация (Lasso). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как с помощью линейной модели понять какие фичи можно сразу откинуть? Использование линейной модели для выбора наиболее значимых признаков (фич) и отсеивания менее значимых может быть выполнено несколькими способами. Ниже я опишу наиболее популярные подходы: Анализ коэффициентов линейной модели: В линейной модели значимость признаков определяется величиной и знаком коэффициентов при этих признаках. Если коэффициент признака мал или близок к нулю, это может указывать на его низкую значимость. import numpy as np from sklearn.linear_model import LinearRegression # Пример данных X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) y = np.array([1, 2, 3, 4]) # Создание и обучение линейной модели model = LinearRegression() model.fit(X, y) # Получение коэффициентов coefficients = model.coef_ print(f"Коэффициенты модели: {coefficients}") Интерпретация: 🟠Коэффициенты с малыми абсолютными значениями указывают на признаки, которые менее важны для модели. 🟠Признаки с большими абсолютными значениями коэффициентов считаются более важными. Регуляризация: Lasso (L1) и Ridge (L2): Методы регуляризации позволяют улучшить интерпретацию модели и выбрать значимые признаки: 🟠Lasso (L1): Принуждает некоторые коэффициенты быть равными нулю, эффективно отбирая признаки. 🟠Ridge (L2): Не отбирает признаки напрямую, но уменьшает влияние малозначимых признаков. from sklearn.linear_model import Lasso # Создание и обучение Lasso модели lasso = Lasso(alpha=0.1) # Параметр alpha контролирует силу регуляризации lasso.fit(X, y) # Получение коэффициентов coefficients = lasso.coef_ print(f"Коэффициенты Lasso модели: {coefficients}") Интерпретация: Коэффициенты, которые стали нулевыми после применения Lasso, указывают на признаки, которые можно отсеять. Методы оценки важности признаков (Feature Importance): Хотя это напрямую не относится к линейным моделям, такие методы как Random Forest или Gradient Boosting могут помочь оценить важность признаков. from sklearn.ensemble import RandomForestRegressor # Создание и обучение модели Random Forest model = RandomForestRegressor() model.fit(X, y) # Получение важности признаков importances = model.feature_importances_ print(f"Важность признаков: {importances}") Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Чем отличается итератор от генератора? Итератор — это объект с методами iter и next, позволяющий поочерёдно перебирать элементы. Генератор — это удобная форма итератора, создаваемая функцией с использованием yield, которая сохраняет своё состояние между вызовами. Итераторы требуют ручной реализации, а генераторы упрощают создание итераций. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как делается прунинг деревьев? Прунинг деревьев (или обрезка деревьев решений) — это процесс удаления ненужных ветвей в дереве, чтобы упростить модель и предотвратить переобучение. Обычно это делается путем удаления или сокращения узлов, которые добавляют мало полезной информации, что уменьшает сложность дерева без значительных потерь в точности. Существует несколько методов прунинга, включая предобрезку (pruning during tree construction) и постобрезку (pruning after tree construction), которые помогают сбалансировать общее количество узлов и глубину дерева, улучшая его обобщающую способность. 🚩До обрезки (Pre-pruning) До обрезки включает остановку роста дерева раньше, чем оно полностью обучится. В процессе построения дерева принимаются решения о прекращении роста текущей ветви, если выполнение одного из критериев остановки. Максимальная глубина дерева (max depth) Останавливает рост дерева, если оно достигает определенной глубины. Минимальное количество образцов в листе (min samples leaf) Останавливает рост дерева, если в узле меньше определенного количества образцов. Минимальное количество образцов для разбиения (min samples split) Останавливает рост дерева, если меньше определенного количества образцов в узле для разбиения. Минимальная информационная выгода (min impurity decrease) Останавливает рост дерева, если уменьшение неопределенности после разбиения меньше определенного порога. 🚩После обрезки (Post-pruning) После обрезки включает создание полного дерева и затем удаление некоторых его ветвей. Этот метод часто считается более эффективным, так как позволяет создать дерево с максимальной сложностью и затем упрощать его 🟠Обрезка на основе ошибки на валидационном наборе Дерево сначала обучается до полной глубины, а затем на валидационном наборе данных удаляются ветви, которые увеличивают ошибку. 🟠Обрезка на основе критерия минимальной ошибки (cost complexity pruning) Включает расчет ошибки для каждого поддерева и удаление тех, которые увеличивают общую ошибку меньше всего. 🚩Пример обрезки деревьев До обрезки from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split # Загрузка данных data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42) # Модель с параметрами до обрезки model_pre_pruning = DecisionTreeClassifier(max_depth=3, min_samples_split=4, min_samples_leaf=2) model_pre_pruning.fit(X_train, y_train) # Оценка модели print(f"Точность на тестовом наборе (до обрезки): {model_pre_pruning.score(X_test, y_test)}") После обрезки from sklearn.tree import DecisionTreeClassifier from sklearn.tree import plot_tree import matplotlib.pyplot as plt # Создание и обучение дерева без обрезки model = DecisionTreeClassifier() model.fit(X_train, y_train) # Построение полного дерева plt.figure(figsize=(20,10)) plot_tree(model, filled=True) plt.show() # Применение после обрезки с помощью параметра cost_complexity_pruning path = model.cost_complexity_pruning_path(X_train, y_train) ccp_alphas, impurities = path.ccp_alphas, path.impurities # Обучение моделей для каждого значения alpha models = [] for ccp_alpha in ccp_alphas: model = DecisionTreeClassifier(ccp_alpha=ccp_alpha) model.fit(X_train, y_train) models.append(model) # Выбор лучшей модели на основе валидационного набора best_model = None best_score = 0 for model in models: score = model.score(X_test, y_test) if score > best_score: best_model = model best_score = score # Оценка лучшей модели print(f"Точность на тестовом наборе (после обрезки): {best_score}") Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое градиентный спуск? Градиентный спуск — это метод оптимизации, который используется для нахождения минимального значения функции ошибки модели путём итеративного изменения параметров модели (например, весов). На каждом шаге вычисляется градиент функции ошибки по параметрам, и параметры корректируются в направлении, противоположном градиенту. Шаг изменения регулируется параметром скорости обучения (learning rate). Градиентный спуск эффективен для обучения моделей с большим количеством параметров. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое F-score и зачем его используют? Это метрика, используемая для оценки качества бинарных классификаторов, которая учитывает как точность (precision), так и полноту (recall) модели. Она особенно полезна в ситуациях с несбалансированными классами, где одно значение может быть значительно больше другого. 🚩Зачем нужен? 🟠Комбинирования точности и полноты в одну метрику Точность (Precision): Доля правильно предсказанных положительных примеров из всех предсказанных положительных. Полнота (Recall): Доля правильно предсказанных положительных примеров из всех истинных положительных. 🟠Балансировки между точностью и полнотой В некоторых задачах важнее минимизировать ложноположительные ошибки, в других – ложные отрицательные. F-score помогает найти баланс. 🟠Оценки моделей на несбалансированных данных В условиях, где один класс значительно преобладает, F-score дает более полное представление о производительности модели, чем просто точность или полнота. 🚩Как вычисляется? Это гармоническое среднее точности и полноты, что позволяет избежать завышения оценки при высоком значении только одной из метрик. Формула F-score выглядит следующим образом: F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} Где: \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} Пример from sklearn.metrics import f1_score # Пример данных y_true = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1] # Истинные значения y_pred = [0, 1, 0, 1, 0, 1, 0, 1, 1, 0] # Предсказанные значения # Вычисление F-score f1 = f1_score(y_true, y_pred) print(f'F-score: {f1:.2f}') Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Назови формулу линейной модели. Формула линейной модели имеет вид: `y = w0 + w1 * x1 + w2 * x2 + ... + wn * xn`, где `y` — это предсказанная величина, `x1, x2, ..., xn` — входные переменные (признаки), а `w0, w1, ..., wn` — коэффициенты (веса), которые модель подбирает во время обучения. `w0` представляет собой свободный член (смещение или bias). Цель линейной регрессии — найти такие значения весов, которые минимизируют ошибку предсказания. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиаSolo los usuarios registrados pueden compartir su opinión.
¡Sé el primero en compartir tu experiencia con este recurso!