250116 TIL #591 AI Tech #123 train-valid split 수정

김춘복·2025년 1월 16일
0

TIL : Today I Learned

목록 보기
593/604

Today I Learned

어제 첫 베이스라인코드가 동작을 안해서 수정!
그리고 우리 데이터셋과 과제에 맞게 로직 수정중..


train-valid를 user별로 분할

  • 기존 코드
    # 학습/테스트 데이터 분할
    X = rating_df[["user", "anime"]].values
    y = rating_df["rating"].values

    X_train, X_test, y_train, y_test = train_test_split(
        X, y, test_size=test_size, random_state=random_state
    )
  • 수정 코드
    유저별로 rating을 8:2 비율로 train-test(valid) 분할
    # 사용자별 train-test split
    train_data = []
    test_data = []

    for user, group in rating_df.groupby("user"):
        group = group.sample(frac=1, random_state=random_state)  # 데이터 섞기
        n_test = max(1, int(len(group) * test_size))  # 최소 1개는 test에 포함
        test_data.append(group.iloc[:n_test])
        train_data.append(group.iloc[n_test:])
    train_df = pd.concat(train_data)
    test_df = pd.concat(test_data)
    
    # 학습/테스트 데이터 준비
    X_train = train_df[["user", "anime"]].values
    y_train = train_df["rating"].values
    X_test = test_df[["user", "anime"]].values
    y_test = test_df["rating"].values
  • 이렇게 하니까 user에 대한 topk 추천을 하는게 아니라 user-anime에 대한 rating 예측을 하는 task로 바뀌어서 추가 수정 필요
profile
Backend Dev / Data Engineer

0개의 댓글