Files
Broken_Code_Generation.1.0/Dataset_BCG_1example.json
ModelHub XC b0af1ebc67 初始化项目,由ModelHub XC社区提供模型
Model: Vilyam888/Broken_Code_Generation.1.0
Source: Original Platform
2026-06-16 06:33:19 +08:00

42 lines
4.3 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"id": 1,
"title": "Стратифицированный split и масштабирование без data leakage",
"difficulty": "hard",
"topic_tags": {
"Classification": 0.4,
"DataPreprocessing": 0.4,
"ModelSelection": 0.2
},
"task_context": "В учебном пайплайне для бинарной классификации нужно подготовить данные перед обучением модели. Текущая реализация допускает утечку данных: она обучает `StandardScaler` на всей выборке до разбиения на train и test, а затем делает разбиение без стратификации. Нужно сначала выполнить `train_test_split` с `test_size=0.2`, `random_state=42`, `stratify=y`, затем обучить `StandardScaler` только на `X_train`, преобразовать `X_train` и `X_test` и вернуть масштабированные выборки вместе с метками и обученным scaler.",
"tests": [
"import numpy as np",
"X = [[1.0, 10.0], [2.0, 20.0], [3.0, 30.0], [4.0, 40.0], [5.0, 50.0], [6.0, 60.0], [7.0, 70.0], [8.0, 80.0], [9.0, 90.0], [10.0, 100.0]]",
"y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]",
"X_train_scaled, X_test_scaled, y_train, y_test, scaler = split_and_scale_binary_data(X, y)",
"assert y_train == [1, 0, 0, 0, 1, 1, 1, 0]",
"assert y_test == [0, 1]",
"assert X_train_scaled.shape == (8, 2)",
"assert X_test_scaled.shape == (2, 2)",
"assert np.allclose(scaler.mean_, [5.125, 51.25])",
"assert np.allclose(scaler.scale_, [2.7128168017763383, 27.128168017763382])",
"assert np.allclose(X_train_scaled.mean(axis=0), [0.0, 0.0], atol=1e-12)",
"assert np.allclose(X_test_scaled, [[-0.4146981098256822, -0.4146981098256823], [1.7970251425779564, 1.7970251425779564]])"
],
"expected_output": "Функция должна вернуть кортеж `(X_train_scaled, X_test_scaled, y_train, y_test, scaler)`, где scaler обучен только на тренировочной части, а разбиение выполнено стратифицированно.",
"input_example": "Пример входа: `X = [[1.0, 10.0], [2.0, 20.0], [3.0, 30.0], [4.0, 40.0], [5.0, 50.0], [6.0, 60.0], [7.0, 70.0], [8.0, 80.0], [9.0, 90.0], [10.0, 100.0]]`, `y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]`.",
"output_example": "Пример ожидаемого возврата: `y_train = [1, 0, 0, 0, 1, 1, 1, 0]`, `y_test = [0, 1]`, `scaler.mean_ = [5.125, 51.25]`, `scaler.scale_ = [2.7128168017763383, 27.128168017763382]`, `X_test_scaled = [[-0.4146981098256822, -0.4146981098256823], [1.7970251425779564, 1.7970251425779564]]`.",
"requirements": [
"Сначала выполнить стратифицированное разбиение данных на train и test.",
"Обучить `StandardScaler` только на `X_train`.",
"Преобразовать и `X_train`, и `X_test` одним и тем же scaler.",
"Вернуть результат в порядке `X_train_scaled, X_test_scaled, y_train, y_test, scaler`."
],
"constraints": [
"Не менять имя функции `split_and_scale_binary_data`.",
"Не изменять входные `X` и `y` на месте.",
"Не обучать scaler на всей выборке до split.",
"Нельзя хардкодить значения из примеров входа и выхода."
],
"broken_code": "from sklearn.model_selection import train_test_split\\nfrom sklearn.preprocessing import StandardScaler\\n\\n\\ndef split_and_scale_binary_data(X, y):\\n scaler = StandardScaler()\\n X_scaled = scaler.fit_transform(X) # ВОТ ТУТ НУЖНО ИСПРАВИТЬ КОД: scaler нельзя обучать на всей выборке до split\\n X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42) # ВОТ ТУТ НУЖНО ИСПРАВИТЬ КОД: нужен stratify=y и split должен быть до масштабирования\\n return X_train, X_test, y_train, y_test, scaler"
}