AlainDeLong/End-To-End-Machine-Learning-Project
0
1import os2import sys3from src.exception import CustomException4from src.logger import logging5import pandas as pd6from sklearn.model_selection import train_test_split7from dataclasses import dataclass8from src.components.data_transformation import DataTransformation9from src.components.data_transformation import DataTransformationConfig10from src.components.model_trainer import ModelTrainer11from src.components.model_trainer import ModelTrainerConfig12 13 14@dataclass15class DataIngestionConfig:16 raw_data_path: str = os.path.join("artifacts", "data.csv")17 train_data_path: str = os.path.join("artifacts", "train.csv")18 test_data_path: str = os.path.join("artifacts", "test.csv")19 20 21class DataIngestion:22 def __init__(self) -> None:23 self.ingestion_config = DataIngestionConfig()24 25 def initiate_data_ingestion(self):26 logging.info("Entered data ingestion medthod or component")27 try:28 df = pd.read_csv("notebook/data/stud.csv")29 logging.info("Read the dataset as dataframe")30 31 os.makedirs(32 os.path.dirname(self.ingestion_config.train_data_path), exist_ok=True33 )34 35 df.to_csv(self.ingestion_config.raw_data_path, index=False, header=True)36 37 logging.info("Train test split initiated")38 train_set, test_set = train_test_split(df, test_size=0.2, random_state=42)39 40 train_set.to_csv(41 self.ingestion_config.train_data_path, index=False, header=True42 )43 test_set.to_csv(44 self.ingestion_config.test_data_path, index=False, header=True45 )46 47 logging.info("Ingestion of the data is completed")48 49 return (50 self.ingestion_config.train_data_path,51 self.ingestion_config.test_data_path,52 )53 except Exception as e:54 raise CustomException(e, sys)55 56 57if __name__ == "__main__":58 obj = DataIngestion()59 train_data, test_data = obj.initiate_data_ingestion()60 61 data_transformation = DataTransformation()62 train_arr, test_arr, _ = data_transformation.initiate_data_transformation(63 train_data, test_data64 )65 66 model_trainer = ModelTrainer()67 print(model_trainer.initiate_model_trainer(train_arr, test_arr))68 