TIL 92일차 : 데이터 분리, pymysql, sqlalchemy

2024. 3. 20. 10:48회고/TIL(매일)

 

✏️도전한 점


1. 머신러닝에서 군집과 분류의 차이를 제대로 이해한다. (아티클 글로 정리함)

2. 머신러닝 train/test 데이터 분리하고 캐글 머신러닝 대회 참가하는 과정을 학습했다.

3. 학습 과정에서 희소행렬과 원핫인코딩과의 이해문제가 있었지만 해결했다.

4. 수준별 학습 시 궁금했던 인증키가 없어도 데이터가 수집되는 현상을 여쭤봤으나 아직 미해결

5. pymysql로 나의 데이터베이스에 적재된 테이블 중 하나를 가져와봤다.

 

01 질문 대폭탄


1. 루키 개념에 대해서

- 그 사람의 다음 작품을 계약할 때, 우선 순위를 어떻게 가져갈건지 고려할 때 사용한다.
- 출판사들이 계약금 비중이 적은 이유가 대형 플랫폼(교보)에 수수료 주는게 크다고 한다.
- 대형 플랫폼에 올릴 때 안 유명할수록 더 많이 줘야함. 선계약해서
- mz친구들이 찾을 만한 책을 빨리 찾아서 계약하고 추천 서적에 올리는 것도 가능하다.
- 크레마(회원 그룹?)에 추천 서적도 있고,
- 아직 루키가 아닌 인재를 빨리 찾아서 저렴한 가격에 모셔오는 게 플랫폼이 이득이겠지?

 

2. 데이터의 분리에 대해서
- 이미 EDA하고 온다고 생각해서 보통은 모델링 직전에 한다.

3. GridSeachCV에 대해서
- 선형모델? 가능하다. 파라미터가 있으면 다 사용한다. 그리드서치 쓰면 너무 좋음. (선택인 듯?)

4. 데이터베이스에 적재된 데이터용량이 정말 크다.

- 내가 상상할 수 있는 용량 그 이상이다.
- 그 데이터에서 SQL로 내가 필요한 데이터를 정재해서 가져온다.
- SQL ORM으로 먼저 정재하면 그만큼 양이 줄어드니까
- 코드 돌릴 수 있는 양이 줄어들면 효율이 좋으니까!

- 이부분은  CS지식을 진짜 쌓아야겠다. +SQLD도

5. 트위터 api 수집에 대해서

- 현재 ceo가 바뀌고 무료 수집이 막혔고, 유료만 남았다.

- 최근 블로그글을 살펴보고 안되는 점 질문하기

 

6. 크롤링 PATH 유형이 2가지 일 떄

- 조건문을 사용해서 8일 때 없으면 9를 찾아라 할 수 있음.

 

02 희소행렬 문제해결


1. 범주형 자료 인코딩 과정 시, 레이블 인코딩에서는 인덱스(이상치 제거한 후)가 잘 적용됐는데 원핫인코딩을 적용하면 죽었던 인덱스가 살아나는 현상을 이해하기 어려웠음.

2. 원핫인코딩만의 차이점에 대해 다시 설명을 듣고, 생각해보니 새로운 데이터프레임을 만들 때 인덱스를 제거해도 계속 자동으로 살아났던 기억이 떠오름.

3. 찾아보니 새로운 데이터프레임을 만들면 인덱스 정수가 새롭게 배열된다는 점을 찾을 수 있었다. 바로 이부분이 죽었던 인덱스가 살아나는 이유였다.

 

결론: 희소행렬로 새로운 데이터프레임을 만들 때 인덱스가 재배열 되고,  얘가 0부터 887까지(총 888개) 만들어서 이때 인덱스가 살아난다. 살아난 인덱스는 concat에 에러가 발생시킨다.

 

03 아티클 스터디 : 군집과 분류의 차이


 

🔎아티클 스터디: 군집과 분류의 차이를 이해한다.

1. 오늘의 아티클(주제) 저번 주에 "파트 5"부터 "파트 14"까지 머신러닝에 대한 기초 개념을 잡기 위해 몰아서 읽었다. 너무나 유익했던 코믹스 아티클이었다. 그 중에서 분류와 군집화에 대한 차

specialda.tistory.com

 

04 pymysql로 연동해본 코드


import pymysql

# Connect to the database
connection = pymysql.connect(host='localhost',
                             user='root',
                             password='1234',
                             database='DB_NAME',
                             cursorclass=pymysql.cursors.DictCursor)

with connection.cursor() as cursor:
    # Read a single record
    sql = "SELECT * FROM list_of_orders"
    cursor.execute(sql)
    result = cursor.fetchall()

print(result)

 

 

후기: 내일은 딕셔너리를 데이터프레임으로 바꿔봐야겠다. 시간이 될까?