어제 언급한 택시수요예측 딥러닝 문제점은 각 지역마다 카운트가 다른 점이었습니다
예를 들어 강남은 1시에 100건의 콜 데이터가 있지만 다른 지역은 누락된 곳이 있었죠
만일 각 지역이 같은 크기?를 갖고 있었다면 timestep를 결정하기 쉬웠을 거라 생각합니다
그러면 특정 시간을 예측하기 위해서 몇 시간 전 데이터를 일괄적으로 timestep으로 지정하면 간단할 거라 생각합니다
아무튼 각 지역마다 정보 카운트가 달랐기 때문에
가장 먼저 각 시간대별 몇 개의 데이터가 존재하는지를 확인해야 했습니다
그래서 아래 결과를 확인할 수 있었죠
년원일은 해당 시간대의 마지막 데이터의 년원일입니다 예를 들어 00:00:00의 시간을 가진 데이터는 2015-05-29일 마지막 데이터 라는 얘기가 됩니다 예상했던 대로 각 시간대 마다 개수가 다르더라구요
참고로 00:00은 정시부터 30분, 30:00은 30분부터 정시입니다. 예를들어 00:00 > 1시~30분이고 30:00 > 1시 30분~2시입니다.
해결된 것은 각 시간대 별로 데이터를 구분할 수 있다는 것이고, 문제가 된 것은 구분된 데이터를 이젠 숫자가 아니라 실제 데이터를 어떻게 가져올 것이냐 라는 것에서 막혔습니다
try:
if pca_ohe_df.iloc[idx]['minute2'] == pca_ohe_df.iloc[idx+1]['minute2'] and pca_ohe_df.iloc[idx]['Hour'] == pca_ohe_df.iloc[idx+1]['Hour']:
data.append(np.array(pca_ohe_df.iloc[idx])) #np.array() : 이걸 하지 않으면 각 행 마다 컬럼이 따라 들어온다
num+=1
else:
print('{0}의 총 갯수는 {1}입니다'.format(pca_ohe_df.iloc[idx]['minute'], num))
input_data.append(np.array((data)))
data=[] #data 리스트 초기화
num=0 #카운트 초기화
여러 방법을 해보다가 위 코드가 지금 현재 상태입니다 아직 해결이 안 된 상태죠
이 코드를 실행하면
input_data는 아래와 같이 나옵니다
450개가 넘은 변수가 하나로 뭉쳐지게 됩니다
지금은 정확히 기억이 안 나지만 다른 방법으로 할 때는 변수도 잘 나왔지만
원본 데이터와 같은 데이터가 되더라고요
제 의도는 각 시간대별 리스트로 묶여서 3D 텐서 형식으로 만드는 게 목적이었습니다
따라서 원본 데이터와 같아지면 시간대별 구분점이 없기 때문에 사용을 못하게 됩니다 ㅠ
오늘은 이 문제만 가지고 씨름을 해야 했고 아직 해결을 못한 상태라서
일정에 차질이 빚어질 거라 확신합니다 ㅎㅎㅎㅎ
만일 이문제가 해결이 된다면 다음 문제는
데이터를 분리할 때 과연 잘 작동을 하느냐입니다
이틀 전에 일괄적으로 timestep을 정하고 분리를 시도했는데 오류가 났었습니다
주피터에서는 데이터 크기가 큰 것 때문에 오류가 난 걸로 보이는데 코랩은 오류 메시지가 뜨질 않고
런타임이 초기화가 됩니다
스태킹도 지금 12시간째 학습 중입니다.. 나중에 정 안되면 데이터를 절반 줄이거나
원핫인코딩을 줄이거나 해야 할 것 같습니다..
사실 lightGBM을 돌렸을 때 성능이 꽤 괜찮게 나왔기 때문에
웬만하면 삭제 없이 모두 가져가고 싶은 게 목표인데 말이죵..
산넘ㅇ ㅓ 산입니다 :)
감사합니다
'Data Diary' 카테고리의 다른 글
2021-02-02 공부기록(택시수요예측) (0) | 2021.02.02 |
---|---|
2021-02-01 공부기록(택시수요예측) (0) | 2021.02.01 |
2021-01-29 공부기록(택시수요예측) (0) | 2021.01.29 |
2021-01-28 공부기록(택시수요예측) (0) | 2021.01.28 |
2021-01-27 공부기록(택시수요예측) (0) | 2021.01.27 |