diff --git a/requirements.txt b/requirements.txt index cc242fc..a04a9e8 100644 Binary files a/requirements.txt and b/requirements.txt differ 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']