Python으로 설계하는 Machine Learning 워크플로
Dr. Chris Anagnostopoulos
Honorary Associate Professor
진실의 단계:
무잡음 또는 강한 레이블:
잡음 또는 약한 레이블:
피처 엔지니어링:
감염 호스트별 방문 고유 포트 평균:
np.mean(X[y]['unique_ports'])
15.11
레이블 무시 시 호스트별 고유 포트 평균:
np.mean(X['unique_ports'])
11.23
피처를 레이블링 휴리스틱으로 변환:
X_train, X_test, y_train, y_test = train_test_split(X, y)
y_weak_train = X_train['unique_ports'] > 15


X_train_aug = pd.concat([X_train, X_train])
y_train_aug = pd.concat([pd.Series(y_train), pd.Series(y_weak_train)])

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
정답 레이블만 사용한 정확도:
0.91
가중치 없는 정답+약한 레이블:
accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug).predict(X_test))
0.93
가중치 추가:
accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug, sample_weight=weights).predict(X_test))
0.95
Python으로 설계하는 Machine Learning 워크플로