프로젝트
사무실 내 전력량 예측 - (3)
ag_zero
2022. 7. 12. 16:40
728x90
2022.03.24 - [프로젝트] - 사무실 내 전력량 예측 - (2)
사무실 내 전력량 예측 - (2)
2022.03.15 - [프로젝트] - 사무실 내 전력량 예측 (1) 사무실 내 전력량 예측 (1) 2주간 인턴을 하게 된 회사에서 작은 프로젝트를 진행했었다. 주제는 사무실에서 사용되고 있는 전력량을 예측하는
studydaily.tistory.com
의미 있는 변수 추가하기
요일별, 시간별 전력량 평균 변수 생성
power_mean = pd.pivot_table(train_f, values = 'meterage', index = ['hour', 'day'], aggfunc = np.mean).reset_index()
tqdm.pandas()
train_f['day_hour_mean'] = train_f.progress_apply(lambda x : power_mean.loc[(power_mean.hour == x['hour']) & (power_mean.day == x['day']) ,'meterage'].values[0], axis = 1)
시간별 전력량 표준편차 변수 생성
power_hour_std = pd.pivot_table(train_f, values = 'meterage', index = 'hour', aggfunc = np.std).reset_index()
tqdm.pandas()
train_f['hour_std'] = train_f.progress_apply(lambda x : power_hour_std.loc[(power_hour_std.hour == x['hour']) ,'meterage'].values[0], axis = 1)
sin, cos 함수를 이용한 시간의 연속적 표현 (cyclical time encoding)
train_f['sin_time'] = np.sin(2*np.pi*train_f.hour/24)
train_f['cos_time'] = np.cos(2*np.pi*train_f.hour/24)
※ 시간(hour)는 cyclical encoding 하여 변수 추가(sin time & cos time) 후 삭제
THI(온습도 지수)
온도와 습도를 활용해 온습도 지수를 계산할 수 있다.
온습도 지수 → 에어컨 가동 등 전력을 더 소모할 수 있다고 생각했다.
THI(온습도 지수) = 1.8*온도+32-0.55(1-상대습도/ 100)*(1.8*온도-26)
train_f['THI'] = 9/5*train_f['temperature'] - 0.55*(1-train_f['humidity']/100)*(9/5*train_f['humidity']-26)+32
상관관계 확인하기
train_f_corr = train_f[['temperature','humidity','month','day','hour','is_weekend','day_hour_mean','hour_std','THI','meterage']]
corr = train_f_corr.corr()
plt.figure(figsize=(20, 10))
ax = sns.heatmap(
corr, # 비교할 컬럼 data
vmin=-1, # 최솟값
vmax=1, # 최댓값
center=0, # 중앙값 선정
cmap=sns.diverging_palette(20, 220, n=200), # 히트맵의 색 설정
square=True,
annot=True # 각 cell의 값 표기 유무
)
ax.set_xticklabels(
ax.get_xticklabels(),
rotation=45,
horizontalalignment='right'
)
plt.title('Correlation heatmap', fontsize=30)
plt.show()