728x90
2022.03.24 - [프로젝트] - 사무실 내 전력량 예측 - (2)
의미 있는 변수 추가하기
요일별, 시간별 전력량 평균 변수 생성
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()
'프로젝트' 카테고리의 다른 글
사무실 내 전력량 예측 - (4) (0) | 2022.07.12 |
---|---|
사무실 내 전력량 예측 - (2) (0) | 2022.03.24 |
사무실 내 전력량 예측 (1) (1) | 2022.03.15 |
따릉이 대여량 예측-(1) (0) | 2021.11.23 |