☑️ 서론 및 목차

오늘부터는 TIL 가독성을 높이기 위해

 

학습을 시작하며 드는 생각

 

공부를하며 모르는 부분들과 실습을 진행하며 만난 오류들을 정리

 

공부를 마무리하며 회고

 

순서로 진행할 것입니다.

 

필기와 코드 설명은 쥬피터 노트북 코드상자에 정리할 것으로 GITHUB링크를 참고해야합니다.

 

TIL/AI/AI_5_1-5.ipynb at main · Onesword-Jang/TIL

 

TIL/AI/AI_5_1-5.ipynb at main · Onesword-Jang/TIL

오늘 배운 것은?! Contribute to Onesword-Jang/TIL development by creating an account on GitHub.

github.com

 

 


☑️ 학습 시작

오늘의 공부는  AI모델활용 강의  5-5까지 듣고 머신러닝의 비지도 학습을 복습할 것입니다.

 

강의만 듣고있으면 12시간 중 절반의 시간을 멍 때리기 때문에 강의양을 조절했습니다.

 

지금 까지 강의를 들으며 느낀 생각은

 

AI모델을 활용하면 정말 다양하고 내가 원하는게 무엇이든지 만들어 낼 수 있을거라는 생각이 들었습니다.

 

그 만큼 조심해야하는 부분이 많고 세세하게 설정해야하는 부분이 많아 보여 어렵게 느껴지지만 

 

나중에 숙달이 되었을 땐 꼭 궁금하거나 만들고 싶다고 생각이 드는 모델을 만들어 보고싶습니다.


☑️ 학습 중 만난 문제

AI모델활용 5 - 1

1. FastAPI 서버 실행 부분에서 ipynb파일을 바로 실행 시킬 수 없음 (FastAPI를 정의한 app을 찾을 수 없다고 Error가 나옴)

FastAPI를 사용할 땐 py파일을 만들어 사용하거나 vscode에서 만들면 쉽다.

쥬피터 노트북에서 사용하는 3가지 방법이있다.

 

1) 매직 명령어 사용

%%writefile AI_5.py
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

2) subprocess 사용

import subprocess
subprocess.run(["uvicorn", "AI_5:app", "--reload"])
  • 이 방법은 Uvicorn 프로세스에 점유되어 다른 셀을 사용할 수 없는 한계가 있다.

3) 별도 터미널에서 실행

  • 일반 터미널이나 Anaconda Prompt에서 FastAPI를 실행하는 것이 가장 간편한 방법
  • Jupyter Notebook은 FastAPI 서버와 독립적으로 사용할 수 있어, 서버 실행에 영향을 받지 않는다.

4) 쥬피터 노프북 셀에서 사용 방법은 3번 째 코드

2.  port의 종류

- 8000 : 테스트 용

 

- Well-Known Ports(0-1023): 이 범위의 포트는 표준화된 프로토콜에 의해 사용

  • 80 : HTTP
  • 443 : HTTPS
  • 25 : SMTP
  • 21 : FTP

- Registered Ports (1024-49151): 이 범위는 특정 애플리케이션에 의해 등록되어 사용

  • 3306 : MySQL
  • 5432 : PostgreSQL

- Dynamic/Private Ports (49152-65535): 이 범위의 포트는 동적으로 할당되는 포트로, 일반적으로 클라이언트 애플리케이션이 서버에 연결할 때 임시로 사용

 

AI모델 활용 5 - 4

1. numpy와 ultralytics의 컴파일러 문제와 빌드도구(meson)의 경로 관련 오류

이 문제는 주로 Visual Studio C++ 빌드도구가 누락되어 발생한다.

해결방법

https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/

  1. Visual Studio C++ 빌드 도구 설치(설치 중 "Windows용 C++ CMake tools" 같이 다운하면 좋음)
  2. 사전 빌드된 numpy설치 (1.24.3)
  3. 설치 재시도(사전 빌드 numpy설치 후)

☑️ 머신 러닝 비지도 학습

🔎 K-means-clustering

1. matplotlib의 패키지 의존성 문제로 설치 불가

  • 딥러닝, AI모델활용 강의에 사용하던 가상환경을 사용해서 모듈들의 버젼 때문으로 인지
  • 머신러닝 거성환경을 사용하고 update를 한 뒤 해결!

2. 클러스터링 모델 적용 후 생성된 군집 번호 열추가 안함

  • 할당 단계를 거치고 결과를 반환해줄 열을 추가 하지않아 오류가 난 것으로 인지
  • Cluster열을 추가하는 코드 추가
    # KMeans 모델 생성 및 군집 추가
    kmeans = KMeans(n_clusters=5, random_state=42)  # 군집 개수(n_clusters)는 조정 가능
    data['Cluster'] = kmeans.fit_predict(data_scaled)  # 클러스터 결과 추가

🔎 계층적 군집화

1. 불러오는 모듈 정의

from sklearn.cluster import AgglomerativeClustering
  • AgglomerativeClustering은 sklearn의 군집화 알고리즘 중 하나로, 상향식 계층적 군집화 방식
    import scipy.cluster.hierarchy as sch
  • scipy.cluster.hierarchy는 SciPy에서 계층적 군집화를 위한 다양한 함수와 도구를 제공하는 모듈
  • 덴드로그램(Dendrogram)을 시각화하는 dendrogram 함수와, 상향식 군집화를 수행하는 linkage 함수를 제공

2. 덴드로그램이란?

  • 데이터 포인트 간의 유사도와 계층적 클러스터링 결과를 시각화하는 트리 형태의 다이어그램
  • 데이터가 군집화되는 과정을 단계별로 표시
  • 특정 위치에서 가지가 나뉘는 위치를 기준으로 최적의 클러스터 수를 직관적으로 파악 가능

3. k개를 찾는 방법

  • 엘보우 방법
  • 실루엣 분석(-1~1): 1에 가까울수록 잘 분리된 군집
  • 지식 및 경험
  • 일반적으론 2~10개 정도 사용해서 최적을 찾음(많을수록 오버피팅이 될 수 있음)

4. plt.scatter 간소화

colors = ['red', 'blue', 'green', 'cyan', 'magenta']
for i, color in enumerate(colors):
    plt.scatter(X_scaled[y_hc == i, 0], X_scaled[y_hc == i, 1], s=100, c=color, label=f'Cluster {i+1}')
  • enumerate는 파이썬 내장 함수로, 리스트와 같은 순회 가능한(iterable) 객체를 반복하면서 각 요소의 인덱스와 값을 동시에 가져올 수 있게 해준다.

 


☑️ 회고

AI모델활용 강의를 들으며

 

아직 저는 API 키를 발급 받지 않은 상태에서 진행했기에

 

직접적으로 결과를 볼 수 없었는데

 

강사님께서 직접 음성 생성 AI을 활용하는 모습을 보여주셔서 굉장히 흥미로웠습니다.

 

머신러닝 비지도 학습을 진행하며

 

이전에 학습할 때 보다 학습하기 수월했으며 재미있었다.

 

하지만 아직도 모르는 부분 까먹은 부분이 많아 보인다.

 

마지막으로

 

강의를 듣다가 주말에 포트폴리오를 만드는 시간을 가지려했었단걸 떠올렸습니다.

 

오늘이 저의 생일이라 약속이 많아 진행하지 못했는데 이번 주에 도전하는 시간을 매일 1~2시간 정도 가져야겟습니다.

 

 

+ Recent posts