목차

오늘의 TIL 순서는

  1. 시작전 마음가짐
  2. Python 문제 풀이
  3. LLM&RAG 5주차 내용 정리
  4. 환경변수 문제 해결
  5. 머신러닝 결과 해석
  6. 웹트롤링 특강
  7. 회고

입니다.

 

TIL/크롤링/크롤링_1.ipynb at main · Onesword-Jang/TIL

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

github.com

 

 

TIL/LLM/LLM_RAG_5.ipynb at main · Onesword-Jang/TIL

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

github.com

 

 

TIL/ML/LDA.ipynb at main · Onesword-Jang/TIL

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

github.com

 

 


시작전 마음가짐

지금까지 진행 상황들을 보았을 때 해야할 과제들이 많아지고있습니다.

 

빨리 끝낼 수 있는 주제들을 먼저 처리하며 마음의 짐을 덜고 싶습니다.

 

오늘은 해결을 못한 내용들을 처리하고싶으니 매우 바쁜 하루가 될 것 같습니다.

 

그럼 학습을 시작하겟습니다.


Python 문제 풀이

1. 문자열 겹쳐쓰기

  • 문제를 보고 슬라이싱이 생각남
  • answer = my_string[:s] + overwrite_string 까지 하고 문자열 뒷부분이 빠짐것을 확인
  • overwrite_string 만 추가해서 문자열 뒷부분 겹침 확인
  • s 값을 더해줘서 해결
def solution(my_string, overwrite_string, s):
    answer = my_string[:s] + overwrite_string + my_string[s +len(overwrite_string):]
    return answer

2. 문자열 섞기

  • 분명히 배웠었는데 기억이 나지 않음
  • join, map 등을 활용해보려했으나 실패
  • 검색을 통해 완료 (이전에 배웠던 부분은 리스트컴프리헨션)
# 조건문을 활용한 섞기
def solution(str1, str2):
    answer = ""
    for i in range(len(str1)):
        answer += str1[i] + str2[i]
    return answer
# 리스트 컴프리헨션
def solution(str1, str2):
    answer = [str1[i] + str2[i] for i in range(len(str1))]
    return ''.join(answer)
# map 함수와 join 사용하기
def solution(str1, str2):
    answer = ''.join(map(lambda i: str1[i] + str2[i], range(len(str1))))
    return answer

3. 문자 리스트를 문자열로 변환하기

  • 조인 함수로 성공
  • 아직 조인 함수를 사용하는데 미숙함이있어 문법에서 에러가 나옴
  • 시도한 함수들 join, 데이터 타입 변환, map
def solution(arr):
    answer = ''.join(arr)
    return answer

LLM 5주차 내용 정리

  • 5주차 5-5 강의 정리를 마쳤습니다.
  • LLM과 여러 패키지를 활용하는 방법을 코드로 보여주고 코드의 요소 하나하나 설명해주는 강의였습니다.
  • 하지만 강의의 분기점이 강의 자료의 숫자로만 되어있어 처음에는 강의자료에있는 코드들이 한개의 코드박스에 들어가서 진행하는 코드라 생각하고 진행하였지만 반복하는 부분이 많아 정리하기 어려웠습니다.
  • 또한 많은 정보를 담고있어 차근차근 보아야하고 많은 복습 및 실습이 필요해 보입니다.
  • 복습을 위해 명확하게 파트 분리를 진행하고 복습을 해야할 것으로 보입니다.

환경변수 문제 해결

1. 우선 질문하러 가기 전 다시한번 더 API키 및 환경변수 문제 확인

  1. 작업 영역 소스파일 열거하는 데는 시간이 오래걸립니다. 대신 하위 폴더를 여는 것이 좋습니다. => 하위폴더 사용방법
  2. 대화형 챗봇의 API키 직접 입력시 사용 가능
  3. DOTENV사용 경우: 잘못된 API키를 사용한다는 openai.AuthenticationError 발생 => 환경 변수를 어떻게 설정하는지 봐야할 듯
  4. api키 노출없이 키 사용방법

2. 해결한 문제

  1. vscode를 시작함과 동시에 열려있던 c드라이브 폴더를 그대로 사용해서 문제가 나온거였다. 해결
  2. API키 지정 코드에서 오타 존재 =>client = OpenAI(api_key="api_key")에서 ""제거 => Dotenv로 API키 사용 가능
  3. 키 노출 우려 => .env를 활용해도 print문으로 api키를 출력이 되는게 문제라 판단 => 로컬 컴퓨터 환경 변수에 API키값 저장 => OpenAI Python 라이브러리 버전 1.0.0 이상에서는 이 API가 더 이상 지원되지 않아서 문제 발생 => 생각해보니 코드상에서만 노출이 안되면 print문을 써도 같은 값이 출력이 안되는 것이라느걸 깨달음 => .env 사용하자

3. 4주차 강의부터 다시 실습 실행

  • 5-1 강의 까지 들었고 매끄럽게 강의 수강을 했습니다.
  • 또한 이때까지 환경변수 설정 오류로 나오던 실행경로 오류는 가상환경의 파일과 작업중인 파일의 위치 문제였습니다. => 작업중인 디렉토리에 새로운 가상환경을 설정

머신러닝 결과 해석(LDA)

  • LDA에 대한 해석을 드디어 완료했습니다. 생각보다 간단했는데 수학적 개념으로 된 설명을 읽다보니 머리가 뜨거워진듯 합니다.

LDA란?

  • 우선 LDA는 차원 축소와 분류를 한번에 진행하는 모델이다.
  • 클래스 내의 분산 최소화, 클래스 간의 분산을 최대화 시킨 축을 찾아 차원축소 한다.

간단한 진행과정과 결과 해석

  1. 데이터와 레이블을 분리한다.
  2. 선형판별 축을 찾는다(클래스 수 -1 개)
  3. 찾은 선형판별 축으로 모델학습(선형변환)한다.
  4. 첫번째 열(첫 번째 선형판별 축)과 두번째 열(두 번째 선형판별 축)을 사용하여 시각화하고 데이터의 분산이 잘이루어졌는지 확인한다.

분석을 하는 이유?

  1. 정확성 향상: 분류 성능이 높아지면 잘못된 예측을 줄일 수 있습니다.
  2. 비지니스 성과 개선: 비즈니스 의사결정을 개선하는 데 기여(추천 시스템 등)
  3. 리소스 효율성 향상: 운영 및 리소스 비용을 절감(콜센터 등의 챗봇, 인건비 절감)
  4. 사용자 경험 향상: 사용자에게 더 나은 경험을 제공(스팸 필터 등)
  5. 일반화 성능 향상: 다양한 데이터셋에도 잘 일반화될 수 있다.

크롤링 특강

  • 크롤링 강의를 들으며 가끔 보게 되던 HTML, URL구조, f12를 누르게 되었을 때 만나게 되는 정보들을 알게 되었습니다.
  • 오늘 특강으로 많은 정보를 학습했으니 이 정보들을 더욱 구조화 시켜 내 것으로 만들어야 겟습니다.
  • 특히 신기했던게 URL의 구조를 보고 URL에서 어떤 파라미터들이 어떤 역할인지 알아보고 그것들을 사용한다는게 매우 신기했습니다.
  • 전체적으로 처음듣는 내용이어서 어려웠지만 늘 궁금하던 내용이라 재미있었습니다.

회고

오늘은 전체적으로 학습 시작 전에 생각한대로 흘러가서 학습의 질이 매우 높았습니다.

 

중간에 크롤링 특강의 존재를 알게 되어 머신러닝 t-SEN의 결과분석은 못했지만 크롤링 특강 자체가 매우 흥미있어 괜찮았습니다.

 

Python 문제풀이를 하며

 

파이썬 문제는 풀렸을 때의 쾌감 이 너무 좋습니다.

 

하지만 한가지 문제로 시간을 많이 사용하게 되면 무형의 압박감이 생겨 GPT의 힘을 빌리고 싶어지지만 꾹 참으며 내가했던 필기 자료나 검색을 통하여 이루어 내고있습니다.

 

환경 변수 문제를 해결하며

 

환경 변수 문제 이 때 까지 왜이렇게 고민을 했나 싶을 정도로 쉽게 해결이 되었습니다.

 

지금까지 가상환경을 설치하며 날린 시간들이 조금 아깝지만 이제 이런 문제들이 해결이 되었으니 마음 놓고 실습을 진행할 수 있습니다.!!

 

작업중인 디렉토리에 가상환경 파일을 만들어야한다...

 

머신러닝 결과 분석을 하며

 

LDA이녀석도 저번주에 생각했던 것보다 매우 간단한 녀석이였습니다.

 

전문적인 블로그 글과 유튜브 영상을 참고해서 분석했는데 너무 많은 수학적 용어들이 머리를 복잡하게 만들었던 것 같습니다.

 

추가적으로 분류하는 머신러닝을 공부하고있기에 분류, 분석은 왜 하는 것인지 찾아보았고 그 결과로 왜 이렇게까지 데이터 분석 스킬이 필요한지 이해가 되는 학습이였습니다.

 

크롤링 특강

 

평소 궁금해했던지라 신기하고 재미있었습니다.

 

하지만 어려웠다는... 그리고 마지막에 과제를 주셨는데 날잡고 강의 복습을 진행한 뒤 과제까지 처리해보려 합니다.

 

감사합니다.

 

+ Recent posts