인공지능

EPC Solar Data 데이터 생성부터 모델링(feat.AI 공부)

CodeMuscle 2024. 3. 11. 09:46
반응형

※ 글을 복사해서 쓰고싶으면

제가 쓴 꿀팁글 중 '복사안되는블로그 이제는 할 수 있읍니다.'

 

글을 참고하시면 복사해서 쓸 수 있읍니다.

 

 

EPC Solar Data가 필요하여 찾아봤더니 데이터자체를 구하기 너무 어려웠읍니다.

그래서 실제 필리핀 기후환경을 토대로 데이터 자체를 만들고 전처리와 EDA Modeling 까지 해보았읍니다.

(이 글은 EPC Solar데이터가 필요하여 데이터 생성부터 모델링까지를 다루었지만,

인공지능을 처음 공부해보는 사람도 충분히 많은 공부가 될 것 입니다.)

 

Github 주소에 파일 전체에 대해 업로드해놨읍니다.

 

github : https://github.com/qazxcv3323/EPC_Solar_System

 

GitHub - qazxcv3323/EPC_Solar_System

Contribute to qazxcv3323/EPC_Solar_System development by creating an account on GitHub.

github.com

 

링크를 클릭하여 ZIP 파일로 다운받거나 git clone 을이용하여 다운받아주시면 될 것 같읍니다.

 

Readme.md 파일을 보시고 

data generate -> EDA -> modeling -> Best Model visualization 에 대해 분석해보시기 바랍니다.

 

--------------------------------------- Readme.md ---------------------------------------

# EPC Solar System Defect Check Classification And EDA



## EPC_Solar_System_AI_Anlyasis


1. requirements.txt    
    - ex)pip install -r requirements.txt(Library Version)

2. Data_Generation_Candidate - Data Generation Candidate(데이터 생성 후보 모음)
    - 데이터를 생성하는 방식, 예외처리등등 생성 후보 코드
    - 실제 필리핀 기후환경과 비슷하게 데이터를 생성.

3. EPC_Solar_System_AI_Anlyasis.ipynb

    #### data generate -> EDA -> modeling -> Best Model visualization

    - 데이터 생성 -> EDA 분석 및 시각화 -> 모델링 -> 모델 결과 시각화


## 프로세스 흐름

- 데이터 생성 및 전처리: 실제와 유사한 조건을 반영한 데이터 생성 및 전처리를 수행합니다.
- EDA 및 모델링:        데이터 탐색, 시각화, 모델링을 통해 결함에 영향을 미치는 주요 요인을 분석합니다.
    - EDA를 통한 결과에서 필요한 변수 추가(변수 추가 조건이나 예외처리 적용)
   
- 결과 분석 및 비교: 생성된 데이터와 실제 데이터를 비교하여 모델의 정확성과 신뢰성을 평가합니다.


## File Description


EPC_Data_generate & Modeling.ipynb     =    초기 데이터 생성 & Modeling
data_generation.py                     =    초기 데이터 생성.py
demo.ipynb                             =    초기 데이터를 이용하여 시각화와 모델링(유의미한 분석을 위해 시도)---1
modeling.ipynb                         =    시각화와 모델링결과를 활용하여 유의미한 데이터 확보 (모델링 중점)---2
Classification_test.ipynb              =    시각화와 모델링결과를 활용하여 유의미한 데이터 확보             ---3
EPC_Solar_System_AI_Anlyasis.ipynb     =    최종 데이터 생성, 분석, 모델링, 모델링 결과 시각화 및 분석.

# 개요


- 필리핀 기후환경과 비슷한 데이터를 생성하여 시각화와 모델을 돌려본 후 의미있는 결과를 뽑기 위함.
    - 여기서 모델링은 많은 Feature 중 어떤 Feature가 Defect(결함)에 가장 영향을 많이 준 Feature 인지 확인.
    - Feature간 상관관계 분석.
    - 모델링 결과를 통해 유의미한 결과를 획득하기 위함.
    - 실제 데이터가 구해지면 생성한 데이터와 실제 데이터 비교 후 시각화.

- 실제 데이터가 구해졌을때, 시각화를 통한 분석과 데이터 전처리 후 모델링 실행결과를 생성 데이터와 비교.
    - 실제데이터라 함은 우선적으로 Kaggle Data 기반으로 비지도학습으로 학습 후 labeling -> EDA -> Modeling 순서로 실행예정.
9
- 생성 데이터와 실제 데이터간의 공통 Feature에 대한 분석.
    - 그래프 비교, heatmap ,correlation 등등을 통해 유의미한 패턴이나 데이터 확인.


- 추후 통계적 기법 사용.
    - 다양한 데이터의 정규성 검정방식을 이용하여 확인.
    - ex) shapiro, anderson, kstest, jarque_bera
        ### shapiro (Shapiro-Wilk 검정):

        통계 분석: 데이터가 정규 분포를 따르는지를 확인하여 다양한 통계 분석 기법을 적용하기 전에 사용

        ### anderson (Anderson-Darling 검정):

        확률 분포 검정: 주어진 데이터가 특정 분포와 얼마나 유사한지를 평가하기 위해 사용

        ### kstest (Kolmogorov-Smirnov 검정):

        분포 검정: 주어진 데이터가 특정 분포와 일치하는지를 평가하기 위해 사용

        ### jarque_bera (Jarque-Bera 검정):

        검정 :데이터의 정규성을 평가하여 데이터 마이닝 모델의 가정을 확인합니다.



## 결론

이 프로젝트는 태양광 시스템 결함의 대한 분류와 분석을 위한 접근을 시도하였습니다.
통계적 기법과 데이터 분석, 시각화를 통해 모델의 예측 성능을 향상시키고, 실제 상황에 적용 가능한 유의미한 결과를 발견하는것을 목표로 합니다.

 

 

--------------------------------------- Readme.md ---------------------------------------

 

필요한 라이브러리 Import 

 

데이터 생성

데이터생성은 Data_Generation_Candidate.ipynb 파일을 보시면 후보코드들이 있습니다. 

기본 표준편차를 이용하여 생성하는 기본코드부터 밑에 사진에 포함된 예외처리를 이용한 코드들이 여러가지 있으니,

자기 자신에 맞는 상황에 따라 Customize하시면 좋을 것 같읍니다.

 

분석 시작

Check Data라는 함수를 만들어 예를 들면,

 

 

 

이렇게 바로 Summary를 볼 수 있게 만듭니다.

 

 

Modeling

 

 

여러가지 모델링을 통해 저는 패널의 불량 유무를 확인하는 Classification을 진행하여 Feature Importance를 뽑고 오분류표를 뽑아 얼마나 성능이 잘 나오는지를 확인하였읍니다.

 

Modeling

 

 

 Modeling Result

 

 

추후 실행 마크 다운에는 여러가지 코드들이 있으니 이것저것 좋바하여 실행 해 보시면 여러가지 공부가 될 것 같읍니다.

 

결과 출력 코드를 통해 오분류표(Accuracy, Recall, Precision, F1 Score)를 확인 합니다.

# 결과 출력
for result in results:
    print(f"Model: {result}")
    for key, value in results[result].items():
        print(f"{key}: {value}")
    print("\n")

# 앙상블 모델 구성 및 평가 (예시: MinMaxScaler 사용)
estimators = []
for model_name, model_info in models_params.items():
    best_model = GridSearchCV(model_info['model'], model_info['params'], cv=5, scoring='accuracy').fit(X_train_minmax, y_train).best_estimator_
    estimators.append((model_name, best_model))

voting_classifier = VotingClassifier(estimators=estimators, voting='soft')
voting_classifier.fit(X_train_minmax, y_train)
y_pred_ensemble = voting_classifier.predict(X_test_minmax)

# 앙상블 모델의 성능 평가
ensemble_accuracy = accuracy_score(y_test, y_pred_ensemble)
ensemble_precision = precision_score(y_test, y_pred_ensemble, average='macro')
ensemble_recall = recall_score(y_test, y_pred_ensemble, average='macro')
ensemble_f1 = f1_score(y_test, y_pred_ensemble, average='macro')

print("Ensemble Model Performance (MinMaxScaler):")
print(f"Accuracy: {ensemble_accuracy}")
print(f"Precision: {ensemble_precision}")
print(f"Recall: {ensemble_recall}")
print(f"F1 Score: {ensemble_f1}")

 

 

 

 

그리고 찾아보니 Kaggle에 실제 Panel Solar Data가 있어 링크 남겨놓을테니 필요하신분은 확인해보시면 좋을거 같읍니다. Kaggle에서 경진 데이터라 다재다능하게 분석한 유저들의 기록도 참고하시면 정말 좋을것같읍니다.

 

Solar Panel Analysis ☀️⚡♻️

Kaggle : https://www.kaggle.com/code/dianaddx/solar-panel-analysis

 

Solar Panel Analysis ☀️⚡♻️

Explore and run machine learning code with Kaggle Notebooks | Using data from Solar Power Generation Data

www.kaggle.com

 

 

파일의 오타나 궁금하신점은 tasktaeyun@gmail.com로 메일보내주시면 성심성의껏 답변 드리겠읍니다.

반응형