gyeomii
일사량 예측을 통한 태양광 발전량 예측(Radiation Prediction for PV) 본문
기상데이터를 통한 일사량 예측
서론
https://github.com/spectre900/Solar-Radiation-Prediction
spectre900에 게시되어있는 기상데이터를 활용해 일사량 예측을 진행하고자 한다.
태양광 발전량과 일사량은 95%이상의 상관관계를 갖고 있다.
일사량의 예측은 곧 태양광 발전량의 예측과 연결된다고 생각하여 진행하였다.
spectre900에 게시된 기상데이터를 학습한 모델에 자체 환경센서 데이터를 Input으로 하여 일사량 예측을 진행하고자 한다.
그 후 일사량과 실제 발전량의 상관관계를 분석하여 검증하고자 한다.
spectre900 데이터 분석
데이터 분석
데이터 형태
데이터 전처리
기존의 Date 컬럼을 1년을 365로 정하여 해당일에 해당하는 숫자값으로 변경하였다. (ex) 1월1일 : 1
기존의 Time 컬럼과 일출, 일몰 시간을 초(second)로 계산하여 해당하는 숫자값으로 변경하였다.
Category형 데이터를 지수형 데이터로 변경하는 과정이다.
데이터 시각화
Boxplot
상관계수 분석
Heatmap
ScatterPlot
산점도를 사용해 일사량과 feature들 간의 관계를 그려보았다.
LinePlot
학습
여러 모델을 사용하여 그 중에 높은 score를 갖는 모델을 pickle로 저장하도록 한다.
성능지표는 r2 score로 한다.
SVR
LinearRegression
MLPRegressor
DecisionTreeRegressor
GradientBoostingRegressor
XGBRegressor
RandomForestRegressor
test score가 높은 XGBRegressor와 RandomForestRegressor를 사용하기로 한다.
자체 센서데이터 분석
자체 데이터와 github데이터중 일치하는 feature는 Date, Time, Temperature 뿐이었다.
feature가 적어서 의미있는 결과가 나오지 않을 것으로 예상된다.
데이터 전처리
데이터 확인
음수값 제거
발전량 데이터에 음수값이 있음을 확인하여 전처리한다.
전처리 방식은 음수값을 갖는 n시간의 데이터를 음수값이 아닌 n-1시간의 데이터로 대체한다.
시간대 변경
spectre900과 동일하게 Date와 Time을 지수형 데이터로 변경한다.
섭씨를 화씨로 변경
spectre900데이터는 온도를 화씨로 나타냈기때문에 섭씨로 측정된 자체 센서데이터를 화씨로 변경하는 과정이다.
누적발전량이 0인경우 전처리
센서의 결함인지 데이터 전송의 문제인지는 모르나 누적발전량이 0으로 된 경우들이 있다.
누적발전량이 0인건 불가능 하므로 전처리한다.
누적발전량이 0이아닌 n-1시간의 데이터로 대체한다.
- 전
- 후
이전 온도와 너무 큰 차이가 나는 온도 전처리
센서의 결함인지는 모르나 직전온도와 너무 큰 값으로 차이가 나는 경우가 있어 전처리 한다.
현재 온도와 10F 만큼 차이 나지 않는 직전값으로 대체한다.
- 전
- 후
누적발전량의 차로 1분간 발전량 구하기
누적발전량의 차이가 비정상적으로 크게 차이나는 값이 있었다.
1분사이의 발전량이 태양광 설비용량보다 큰값을 갖는 데이터는 n-1데이터와 n+1데이터의 평균으로 대체했다.
0이하의 누적발전량은 0으로 대체했다.
일사량 예측
spectre900 데이터를 학습한 모델을 load하여 회사센서데이터를 사용해 예측을 하였다.
모델은 RandomForestRegressor와 XGBoost를 사용하였다.
결론
실제 순간 발전량과 예측한 일사량의 양상이 상당히 일치한것으로 보인다.
자체 센서를 조금 더 고도화하여 정확한 데이터를 쌓을 수 있다면 조금 더 정교한 예측이 가능할것으로 보인다.
'Machine Learning' 카테고리의 다른 글
기상 데이터 활용 전력 발전량 예측 (0) | 2022.12.09 |
---|---|
Titanic 생존자 예측 (0) | 2022.12.05 |