MLops

패스트캠퍼스 챌린지 43일차

Laftel 2022. 3. 7. 11:00
반응형

feast와 mlflow를 활용한 머신러닝프로젝트3

DriverRankingTrainModel 클래스 생성

import pandas as pd
from pprint import pprint
from sklearn.linear_model import ElasticNet
import feast

class DriverRankingTrainModel:
    def __init__(self, repo_path: str, f_service_name: str, tuning_params={}) -> None:
        self._repo_path = repo_path
        self._params = tuning_params
        self._feature_service_name = f_service_name

    def get_training_data(self) -> pd.DataFrame:
        orders = pd.read_csv("/home/jovyan/jupyter/ml_project_1/data/driver_orders.csv", sep="\t")
        orders["event_timestamp"] = pd.to_datetime(orders["event_timestamp"])

        store = feast.FeatureStore(repo_path=self._repo_path)
        feature_service = store.get_feature_service(self._feature_service_name )

        training_df = store.get_historical_features(
            entity_df=orders,
            features=feature_service
        ).to_df()
        
        return training_df
    
    def train_model(self) -> str:
        model = ElasticNet(**self._params)
        target = "trip_completed"
        training_df = self.get_training_data()
        train_X = training_df[training_df.columns.drop(target).drop("event_timestamp")]
        train_y = training_df.loc[:, target]

        model.fit(train_X[sorted(train_X)], train_y)
        return model.coef_
  • 전역 변수 : _repo_path / _params / _feature_service_name
  • get_training_data
    • Feast FeatureStore 객체 생성
    • get_feature_service 로 서비스 객체 생성

feast feature-services list 활용

get_historical_features 에 Query data 와 서비스를 기준으로 훈련 데이터 추출

  • train_model
    • ElasticNet 모델 생성
    • 학습/추론 데이터 분할
    • 모델 fitting

실행 메인코드 작성

if __name__ == '__main__':
    REPO_PATH = "/home/jovyan/feature_repo"
    FEATURE_SERVICE_NAME = "driver_ranking_fv_svc"
    params_list = [{"alpha": 0.5, "l1_ratio": 0.15},
                   {"alpha": 0.75, "l1_ratio": 0.25},
                   {"alpha": 1.0, "l1_ratio": 0.5}]

    for params in params_list:
        model_cls = DriverRankingTrainModel(REPO_PATH, FEATURE_SERVICE_NAME, params)
        model_coef_ = model_cls.train_model()
        pprint(f"ElasticNet params: {params}")
        print(f"Model coefficients: {model_coef_}")


#직장인인강 #직장인자기계발 #패스트캠퍼스후기#온라인패키지:머신러닝서비스구축을위한실전MLOps#머신러닝서비스구축을위한실전MLOps온라인패키지Online.
https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.




반응형