{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":3004,"databundleVersionId":861823,"sourceType":"competition"}],"dockerImageVersionId":31192,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"Домашнее задание «Сегментация и детекция объектов». Шакиров К.Ф.","metadata":{}},{"cell_type":"markdown","source":"В данной работе рассматривается задача построения классификатора рукописного ввода на основе датасета MNIST.\n\nЦель работы — создание модели с метрикой accuracy > 0.6 на тестовой выборке.\n","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom sklearn.decomposition import PCA\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.svm import SVC\nfrom skimage.feature import hog\n\n# Загрузка данных\ntrain = pd.read_csv(\"/kaggle/input/digit-recognizer/train.csv\")\ntest = pd.read_csv(\"/kaggle/input/digit-recognizer/test.csv\")  # Добавляем загрузку теста\n\nX_train = train.drop('label', axis=1).values\ny_train = train['label'].values\nX_test = test.values  \n\n# Нормализация\nX_train = X_train / 255.0\nX_test = X_test / 255.0  \n\n# PCA преобразование\npca = PCA(n_components=100)\nX_train_pca = pca.fit_transform(X_train)\nX_test_pca = pca.transform(X_test)\n\ndef extract_hog_features(images):\n    features = []\n    for img in images:\n        fd = hog(img.reshape(28, 28),\n                 orientations=9,\n                 pixels_per_cell=(14, 14),\n                 cells_per_block=(1, 1),\n                 block_norm='L2-Hys',\n                 visualize=False)\n        features.append(fd)\n    return np.array(features)\n\nX_train_hog = extract_hog_features(X_train)\nX_test_hog = extract_hog_features(X_test)  \n\n# Обучение модели\nmodel_pca = SVC(kernel='rbf', C=1.0, gamma='scale', random_state=42)\nmodel_pca.fit(X_train_pca, y_train)\n\n# Предсказания\ny_pred_pca = model_pca.predict(X_test_pca)\n\n# Создание сабмита\nsubmission = pd.DataFrame({\n    'ImageId': np.arange(1, len(y_pred_pca) + 1),\n    'Label': y_pred_pca\n})\n\nsubmission.to_csv('submission.csv', index=False)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-12-13T12:36:32.984176Z","iopub.execute_input":"2025-12-13T12:36:32.984488Z","iopub.status.idle":"2025-12-13T12:37:25.879241Z","shell.execute_reply.started":"2025-12-13T12:36:32.984463Z","shell.execute_reply":"2025-12-13T12:37:25.878568Z"}},"outputs":[],"execution_count":null}]}