22년 4월의 공부 - dataclasses, 중복레코드 처리 in SQL, Data Leakage
포스트
취소

22년 4월의 공부 - dataclasses, 중복레코드 처리 in SQL, Data Leakage

2022년 4월 동안 검색하고 공부한 것들을 정리한 내용입니다.

1. dataclasses

  • 참고: dataclasses 공식문서
  • __init__()__repr__() 과 같은 생성된 특수 메서드를 사용자 정의 클래스에 자동으로 추가하는 데코레이터와 함수를 제공합니다. @dataclass 데코레이터를 통해 사용할 수 있습니다. 아래와 같이 __init____repr__을 명시하지 않았지만 자동으로 설정이 된 것을 확인할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from dataclasses import dataclass

@dataclass
class account:
    name: object
    password: int
    balance: int

    random.seed(1234)
    _id = "x"+str(int(round(random.random(),6)*1E6))


    def print1(self):
        print(self.name, self.password, self._id, self.balance)

    def deposit(self,amount):
        self.balance += amount
        return "입급 완료."

        
acc1 = account(name='lego', password=1234, balance=100000)
print(acc1) # account(name='\x08lego', password=1234, balance=100000)
acc1.deposit(3000)
print(acc1.balance) # 103000

2. 중복레코드 처리 - MySQL

INSERT IGNORE

중복레코드 오류가 발생하면 (이를 무시하고) 처음에 기록된 데이터가 남습니다.

1
2
3
4
INSERT IGNORE INTO table (column_list) 
VALUES (value_list);

# 출처: https://www.mysqltutorial.org/mysql-insert-ignore/

INSERT INTO ON DUPLICATE UPDATE

중복레코드 오류가 발생했을 때 업데이트할 값을 지정할 수 있습니다.

1
2
3
4
5
6
7
8
INSERT INTO table (column_list)
VALUES (value_list)
ON DUPLICATE KEY UPDATE
   c1 = v1, 
   c2 = v2,
   ...;

# 출처: https://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/

3. Data Leakage

Data leakage의 유형

  1. Target leakage
  2. Train-Test contamination

Target leakage

  • feature가 모델 개발을 할 때는 사용이 가능하지만, 예측을 할 때는 활용이 불가능한 경우.
  • 사용하고자 하는 feature가 있는 경우, 단순히 ‘예측에 도움이 되는지’ 뿐만이 아니라 ‘예측 시점에 활용 가능한지‘도 생각하는 것이 중요.

Train-Test contamination

  • Data preprocessing 또는 Feature engineering을 할 때, validation(또는 test) data의 정보를 이용하는 경우.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.