다중 인덱스 처리를 어떻게 해야할지요?

제가 만든 특성 예입니다.

df = pd.DataFrame({'city':['seoul', 'seoul', 'seoul', 'pusan', 'pusan', 'pusan', 'gwangju', 'gwangju', 'gwangju'] , 
                   'date':['2022-01-01', '2022-02-01', '2022-03-01','2022-01-01', '2022-02-01', '2022-03-01','2022-01-01', '2022-02-01', '2022-03-01'],
                   'price': [7, 9, 4, 7, 5, 2, 1, 8, 6],
                   'quantity':[89, 53, 75, 33, 96, 72, 59, 25, 82],
                   'sales_amount': [3.4, 6.1, 9.2, 7.2, 2.9, 8.1, 5.9, 4.4, 7.9]})

df.set_index(['city', 'date'], inplace=True)
print(df)

다음과 같이 DataFrame이 생성됩니다.

                    price  quantity  sales_amount
city    date                                     
seoul   2022-01-01      7        89           3.4
        2022-02-01      9        53           6.1
        2022-03-01      4        75           9.2
pusan   2022-01-01      7        33           7.2
        2022-02-01      5        96           2.9
        2022-03-01      2        72           8.1
gwangju 2022-01-01      1        59           5.9
        2022-02-01      8        25           4.4
        2022-03-01      6        82           7.9

여기에서 price와 quantity는 속성값으로 지정하고 마지막 sales_amount를 클래스로 지정하여 선형회귀로 예측값을 반환하는 예제를 만들려 합니다. 학습데이터는

X = df[: , 0:2]
y = df[:, 2]

입니다. 참조 서적을 보며 만들어보고 있는데 인덱스 부분을 어떻게 처리해야 할지 잘 몰라 도움을 얻고자 합니다. 인덱스가 [‘city’, ‘date’]라서 다중 인덱스인데 이 인덱스를 one-hot encoding으로 변환해야 하는 건가요? 주위의 책을 보면 인덱스가 그냥 정수값이라 별도로 인덱스를 처리하는 예제가 많지 않습니다. 머신러닝 특성에서 다중 인덱스를 어떻게 처리해야 하는지 좀 알려주십시요. 그리고 보시다시피 index에 시간이 포함되는데 sklearn.model_selectiontrain_test_split 함수를 사용해도 되는 건지도 알고 싶습니다. 초보라 기초적인 내용도 아직 부족합니다. 댓글 부탁드립니다.

저도 공부 중이라 정답은 아니겠지만 제 생각에는 특성 자체를 이렇게 저렇게 해보면서 다양한 시도를 해보고 좋은 결과가 나오는걸 찾아보는게 특성 엔지니어링이라고 생각합니다.
하려고 하시는 태스크가 어떤건지는 모르겠지만 예를 들어 분류라고 하면 도시나 시간을 알려주는게 더 도움이 될지 아닐지를 생각해보시고 이런저런 테스트를 해보시는건 어떨까요?
다중 인덱스라고 해도 그건 기초 데이터의 형태일 뿐이지 모델에는 그냥 각각을 하나의 컬럼처럼 취급해서 생각하면 되지 않을까 생각합니다

지금 핵심 질문이 date와 city 가 정수값이 아니라 학습에 지장이 있으신거라고 이해했습니다.
저라면 이렇게 할것 같습니다. city데이터는 원핫 인코딩을 통해 정수화 시키고,
datetime 타입인 date는 year / month / day의 세 컬럼을 추가하여 각각 정수타입의 변수로 추가하여
city , year , month , day , price , quantity 의 6가지 데이터를 학습하여
sales_amount 를 예측할것 같습니다.

1개의 좋아요