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
- 참고:
- MySQL에서 중복레코드를 처리할 때 사용하는 방법 중 2가지를 비교합니다.
INSERT IGNORE
INSERT INTO ON DUPLICATE UPDATE
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의 유형
- Target leakage
- Train-Test contamination
Target leakage
- feature가 모델 개발을 할 때는 사용이 가능하지만, 예측을 할 때는 활용이 불가능한 경우.
- 사용하고자 하는 feature가 있는 경우, 단순히 ‘예측에 도움이 되는지’ 뿐만이 아니라 ‘예측 시점에 활용 가능한지‘도 생각하는 것이 중요.
Train-Test contamination
- Data preprocessing 또는 Feature engineering을 할 때, validation(또는 test) data의 정보를 이용하는 경우.