From f6f24b3ac3d9aadc37399b95662c8b49546bbeb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=90=D0=BB=D0=B5=D0=B9?= =?UTF-8?q?=D0=BA=D0=B8=D0=BD?= Date: Wed, 11 Dec 2024 01:26:17 +0400 Subject: [PATCH] Added automizing for datasets --- requirements.txt | Bin 636 -> 1442 bytes scraping/scrapingMain.py | 2 +- scraping/scrappingLaptop.py | 2 +- .../modelBuilders/modelBuilderLaptop.py | 22 ++++++++++++++++-- .../scripts/modelBuilders/modelBuilderTV.py | 21 +++++++++++++++-- 5 files changed, 41 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index cc242fccf45fc212ff311d95c4b8707d438d7f42..a04a9e87a4166d7a59066cba07b21748e3e54706 100644 GIT binary patch literal 1442 zcmZvc?@rr55XAR$r9O&LoKVqz=sO_w0V)$5a2sqFUkUK=wDa5b-37I>9E5LnXJ-H0 zpSRAEo=02ktDdc0+J$~EY-1nogYB)?S+c-se zD^p{mP5SRa-;T=p>I`JwDFXJ)JPDbE{VnutFV0SGaP6w@MGB84!^TfgALj=}lY=ai zaN!Y-PkQi)zI<&mQqr!(g|H@BA!SL)#B!yK(h5MOD;|d_U#tq<3-7r=kw+pst)1 z|4F`%LZ!1@@O;s`bJQsJ55+ysYHz4alK)AFzUUwxAG5wMIuFIO*!EJ^*`1V)`aSP9 zszHqM+m%TOuFx?n>gZZeD-&+u$@%F7IhZ77Ci0Ubs!Rv-c~yYg>gZaSZ_e)+8>ffV#{`_5N3Z_pwyHSDvTUPsGIB1kdZ5G0%JWcvRFcarR!_yfyR- zA5pDE4hEkC=AHSZE@NS;vlmGCP>_Z$AX zSD5KR3U({veC9*jt^0^AZv58bM!1uTnDMwRh$H8}ei}K0gD!?Ud~tV1ElyHDD;M)v IyHt1LFD;nT!vFvP delta 46 zcmV+}0MY-V3;YBE|NfDhYLhkrhLh+4WRq?JAd{{FLX#W=7L!&3N|VF`7?UmpE|cB_ E9=}o%5C8xG diff --git a/scraping/scrapingMain.py b/scraping/scrapingMain.py index 314a619..53aa070 100644 --- a/scraping/scrapingMain.py +++ b/scraping/scrapingMain.py @@ -144,5 +144,5 @@ if __name__ == "__main__": url = 'https://www.citilink.ru/catalog/televizory/?ref=mainpage' tvs = scrape_all_pages(url, max_pages=8) ignore_fields = ["Работает с"] - save_to_csv(tvs, 'tv.csv', ignore_fields) + save_to_csv(tvs, 'datasets/tv.csv', ignore_fields) print(f"Данные сохранены в файл 'tv.csv'.") diff --git a/scraping/scrappingLaptop.py b/scraping/scrappingLaptop.py index fcbe403..cc6b017 100644 --- a/scraping/scrappingLaptop.py +++ b/scraping/scrappingLaptop.py @@ -119,5 +119,5 @@ if __name__ == "__main__": url = 'https://www.citilink.ru/catalog/noutbuki/?ref=mainpage' laptops = scrape_all_pages(url, max_pages=20) ignore_fields = ["Технология Intel", "Комплектация", "Клавиатура"] - save_to_csv(laptops, 'laptops.csv', ignore_fields) + save_to_csv(laptops, 'datasets/laptops.csv', ignore_fields) print(f"Данные сохранены в файл 'laptops.csv'.") \ No newline at end of file diff --git a/services/ml/scripts/modelBuilders/modelBuilderLaptop.py b/services/ml/scripts/modelBuilders/modelBuilderLaptop.py index 9a557d7..d1842be 100644 --- a/services/ml/scripts/modelBuilders/modelBuilderLaptop.py +++ b/services/ml/scripts/modelBuilders/modelBuilderLaptop.py @@ -1,3 +1,5 @@ +import subprocess + import pandas as pd from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.ensemble import RandomForestRegressor @@ -9,8 +11,24 @@ import numpy as np import json import os -# Шаг 1: Загрузка данных -df = pd.read_csv('datasets/laptops.csv') +# Шаг 1: Поиск датасета +# Путь к датасету +dataset_path = 'datasets/laptops.csv' +# Абсолютный путь к скрипту для создания датасета +scraping_script_path = os.path.join(os.getcwd(), 'scraping', 'scrappingLaptop.py') + +# Проверяем, существует ли файл +if not os.path.exists(dataset_path): + print(f"Файл {dataset_path} не найден. Запускаем скрипт для его создания...") + if os.path.exists(scraping_script_path): + # Запускаем скрипт для создания датасета + subprocess.run(['python', scraping_script_path], check=True) + else: + print(f"Скрипт {scraping_script_path} не найден.") + raise FileNotFoundError(f"Не удалось найти скрипт для создания датасета: {scraping_script_path}") + +# Теперь, когда файл есть, можно продолжить выполнение скрипта +df = pd.read_csv(dataset_path) # Шаг 2: Проверка и очистка имен столбцов df.columns = df.columns.str.strip().str.lower() diff --git a/services/ml/scripts/modelBuilders/modelBuilderTV.py b/services/ml/scripts/modelBuilders/modelBuilderTV.py index 3dd8d15..9ad9633 100644 --- a/services/ml/scripts/modelBuilders/modelBuilderTV.py +++ b/services/ml/scripts/modelBuilders/modelBuilderTV.py @@ -1,3 +1,5 @@ +import subprocess + import pandas as pd from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.ensemble import RandomForestRegressor @@ -9,8 +11,23 @@ import numpy as np import json import os -# Загрузка данных -df = pd.read_csv('datasets/tv.csv') +# Путь к датасету +dataset_path = 'datasets/tvs.csv' +# Абсолютный путь к скрипту для создания датасета +scraping_script_path = os.path.join(os.getcwd(), 'scraping', 'scrapingMain.py') + +# Проверяем, существует ли файл +if not os.path.exists(dataset_path): + print(f"Файл {dataset_path} не найден. Запускаем скрипт для его создания...") + if os.path.exists(scraping_script_path): + # Запускаем скрипт для создания датасета + subprocess.run(['python', scraping_script_path], check=True) + else: + print(f"Скрипт {scraping_script_path} не найден.") + raise FileNotFoundError(f"Не удалось найти скрипт для создания датасета: {scraping_script_path}") + +# Теперь, когда файл есть, можно продолжить выполнение скрипта +df = pd.read_csv(dataset_path) # Проверка и очистка данных required_columns = ['display', 'tuners', 'features', 'os', 'power_of_volume', 'color', 'screen_size', 'price']