본문 바로가기

Python (Linux)46

38. Python - 비선형 SVM 분류, 다항 커널과 RBF커널 선형 SVM 분류가 효율적이고, 많은 경우에 아주 잘 작동하지만 선형적으로 분류할 수 없는 데이터도 많습니다. 비선형 데이터셋을 다루는 한 가지 방법은, 다항 특성과 같은 특성을 더 추가하는 것입니다.이렇게 하면, 선형적으로 구분되는 데이터셋이 만들어질 수 있습니다. 아래의 왼쪽 그래프는 하나의 특성 x1만을 가진 간단한 데이터셋을 나타냅니다.그림처럼 선형으로는 구분이 안 되지만 x1^2을 추가하여 2차원 데이터셋은 완벽하게 선형적으로 구분할 수 있습니다. # 비선형 분류 X1D = np.linspace(-4, 4, 9).reshape(-1,1)X2D = np.c_[X1D, X1D**2] y = np.array([0,0, 1,1,1,1,1,0,0 ]) plt.figure(figsize=(11,4))plt.. 2019. 2. 3.
37. Python - 서포트 벡터 머신(소프트 마진 분류) 저번에 라지 마진 분류를 보았다면 오늘 볼 것은 소프트 마진 분류입니다. 모든 샘플이 도로 바깥쪽에 올바르게 분류되어 있다면 이를 하드 마진 분류(hard margin classification)라고 합니다.하지만 하드 마진 분류에는 2가지 문제점이 있습니다. 데이터가 선형적으로 구분될 수 있어야 제대로 작동하며, 이상치에 민감합니다. 아래의 그래프에서는 붓꽃 데이터에 이상치가 있어 하드 마진을 찾을 수 없습니다. 따라서 일반화가 잘 될 것 같지 않습니다.아래의 코드를 통해 보면 알 수 있습니다. X_outliers = np.array([[3.4, 1.3], [3.2, 0.8]])y_outliers = np.array([0, 0]) #numpy.concatenate는 아래로 합쳐줍니다.#따라서 X와 X_.. 2019. 2. 2.
36. Python - 서포트 벡터 머신(라지 마진 분류) 오늘은 5장 가장 처음인 서포트 벡터 머신(SVM, Support Vector Merchine)을 알아보겠습니다.SVM은 매우 강력하고 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델입니다.머신러닝에서 가장 인기 있는 모델에 속하고, 머신러닝에 관심 있는 사람이라면 반드시 알고 있어야 하는 모델입니다.SVM은 특히 복잡한 분류 문제에 잘 들어맞으며, 작거나 중간 크기의 데이터셋에 적합합니다. 1. 선형 SVM 분류 SVM의 기본 아이디어는 라지 마진 분류(Large Margin Classification)으로 나타내어 직접 보는 것이 좋습니다.먼저, 코드를 통해 봅니다. from sklearn.svm import SVCfrom sklearn import datasets.. 2019. 1. 31.
35. Python - Matplotlib 한글 설정 (환경 설정으로 고정), 마이너스 깨짐 Matplotlib에서 한글을 쓰려고 하면 깨지는데, 이것을 고치는 방법은 여러 개가 있습니다.rcParam을 직접 지정해줄 수도 있고, FontProperties로 path를 가져오는 방법도 저번에 봤지만,오늘은 주피터노트북이 실행될 때 바로 로드될 수 있도록 하는 방법을 가져왔습니다. 그래서 전역설정이나 매 번 설정하지 않아도 주피터노트북을 실행할 경우 자동으로 이제 한글이 됩니다. import matplotlib.font_manager as fmimport matplotlib as mplfont_list = fm.findSystemFonts(fontpaths=None, fontext='ttf')print('설정 파일 위치', mpl.matplotlib_fname()) 설치되어있는 폰트 리스트를 가져.. 2019. 1. 31.