2장_05_LinearSVM 선형 서포트벡터 머신 (Linear SVM)¶ SVM 은 클래스를 구분하는 분류 문제에서, 각 클래스를 잘 구분하는 선을 그어주는 방식이다. 아래의 그림들을 보면 SVM 이 직관적이라는 것을 알 수 있다. 두 클래스의 가운데 선을 그어주게 된다. 가장 가까이 있는 점들과의 거리가 가장 큰 직선을 찾는다. 이때 가장 가까이 있는 점들을 Support Vector 라고 하고, 찾은 직선과 서포트벡터 사이의 거리를 최대 마진(margin) 이라 한다. 결국 마진을 최대로 하는 서포트벡터와 직선을 찾는 것이 목표이다. SVM 에 대한 상세한 설명은 뒤에서 다루겠다. 참고 자료 : https://en.wikipedia.org/wiki/Support_vector_machine https..
문제 1"iris.csv" 를 읽어오면 (150,5) 의 Numpy 어레이로 만들 수 있다. 5개의 속성을 정규화 하라. 즉, 각 속성은 평균은 0, 표준편차가 1이 되어야 한다. 문제 2아래의 코드에서 마지막 칼럼의 값이 0 보다 큰 샘플을 모두 구하라. import numpy as np a = np.random.randn(10,3) 정답 Untitled14 1번¶ In [8]: f=open('iris.csv') line=f.readline() feature=line.strip().split(',') labels = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'] data=[] for line in f: l = line.strip().split(',') l..
In [3]: import pandas as pd from mlxtend.preprocessing import TransactionEncoder from mlxtend.frequent_patterns import apriori In [4]: dataset= [['양말','팬티','신발'], ['신발','바지','팬티','셔츠'], ['모자','양말','신발'], ['신발','바지','팬티','장갑']] In [6]: t = TransactionEncoder() t_a = t.fit(dataset).trans..
1. 네이버 검색광고(네이버 공식 광고 사이트) 네이버에 비용을 지불하고 유료광고를 집행하는 광고주들이 모인 사이트.네이버와 별도 신규 가입.(개인 광고주) 광고시스템> 도구> 키워드 도구> 키워드를 쓰고 조회해보기 - 키워드를 컴퓨터랑 피씨에서 얼마나 검색하는지 조회량을 볼 수 있다. 현재 날짜를 기준으로 1년 전까지 알려줌. 설별 통계, 연령별 통계 등등 2. 네이버 데이터랩 네이버에서 무료로 제공하는 빅 데이터 사이트.정부에서 제공하는 큰 공공데이터도 알 수 있다. 특정 검색어나 급상승 검색어, 분야별 검색어를 통해 트렌드를 알 수 있다. 3. 구글 트렌드 구글에서 제공하는 빅 데이터 사이트네이버와는 다르게 글로벌 트렌드를 알 수 있다.우리나라 검색 엔진 이용 횟수는 네이버가 압도적으로 높다. 4...
문제 1"iris.csv" 파일을 open() 으로 열어서, 행의 갯수가 151 임을 확인해 보라.그리고, shape 가 (150,4) 인 X 와 (150,) 인 y 로 분리하라. 문제 2np.random.rand(), np.random.randn(), np.random.randint() 세 함수의 차이점을 설명하라. 정답 In [3]: import numpy as np f=open('iris.csv') line=f.readline() feature=line.strip().split(',') labels = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'] data=[] for line i..
해시 테이블 해시 테이블¶ 해시 테이블이 어떻게 작동하고, 왜 성능이 그렇게 좋은지를 알아보기 위해 간단한 맵 구현부터 시작해서 해시 테이블가지 차차 진행해 보도록 한다. 나는 파이썬으로 일일이 구현해서 설명하지만, 실생활에서는 코드를 이렇게 쓰지 않는다. 그냥 사전을 사용하면 된다! 따라서 이 장의 나머지 부분에서 여러분은, 사전이라는 것이 존재하지 않으며 키를 값에 매핑하는 자료형을 구현하려고 한다고 상상하면 되겠다. 여러분이 구현해야 할 연산은 다음과 같다. add(k, v): 키 k에서 값 v를 매핑하는 새 항목을 추가한다. 파이썬 사전 d에서 이러한 연산은 d[k] = v라고 쓴다. get(target): 키인 target에 대응하는 값을 검색해서 반환한다. 파이썬 사전 d에서 이러한 연산은 d..
검색 알고리즘 분석 검색 알고리즘 분석¶ 검색은 어떤 집합과 목표 대상을 받아 그 대상이 해당 집합에 들어있는지를 판별하고 때론 대상의 인덱스를 반환해 주는 알고리즘이다. 가장 단순한 검색 알고리즘은 '선형검색'으로, 집합의 항목들을 순서대로 지나가다가 대상을 찾으면 멈춘다. 최악의 경우 집합을 끝까지 지나야 하는 경우도 있으므로 실행시간이 선형이다. 시퀀스에 사용하는 in 연산자는 선형검색을 사용한다. find나 count 같은 문자열 메소드도 마찬가지다. 만약 시퀀스에 들어있는 원소들이 순서대로 되어있다면, O(log n)인 이분검색을 사용할 수 있다. 이분검색은 여러분이 사전에서(자료형이 아닌 실제 종이사전) 단어를 찾고 싶을 때 쓰는 알고리즘과 굉장히 유사하다. 맨 앞에서 시작해서 순서대로 모든 ..
Untitled2 파이썬 기본 연산 분석¶ 대부분의 산술 연산은 상수 시간이다. 곱셈은 덧셈이나 뺄셈보다 대개 오래 걸리고, 나눗셈은 더 오래 걸리지만, 이들의 실행시간은 피연산자의 크기와는 상관이 없다. 매우 큰 정수들은 예외이긴 하다. 그런 경우, 실행시간은 자릿수에 따라 증가한다. 인덱스 연산(시퀀스나 사전에 들어있는 원소들을 읽거나 쓰는 것) 또한 데이터 구조의 크기에 상관없이 상수 시간이다. 시퀀스나 사전을 쭉 거치는 for 루프는 본문에 있는 연산들이 모두 상수 시간인 한, 일반적으로 선형이라고 보면 된다. total = 0 for x in t: total += x 내장 함수인 sum 또한 선형으로, 위와 동일한 작업을 하지만 더 효율적으로 구현되었기 때문에 약간 빠를 뿐이다. 알고리즘 분석의..