SVM 힌트 및 설명¶
- 결과 정확도가 떨어지는 경우가 많다.
- 추가 작업 가능하다면 해봐라
- SVM은 경계선을 찾아서 제한된 조건을 구분한다. 앞과 같이 데이터를 양분할 때 주로 사용된다.
- 파라미터 중에서 C파라미터를 이용해 마진 오류의 균형을 맞춘다. 예를 들어 양분화되어있는 선이 있다고 했을 때 임의의 값이 틀릴 경우 마진의 오류라고 하는데 이게 완벽할 수 없고 오류가 발생할수도 있다.
마진이라는 것은 둘 사이의 거리가 작아진다는 이야기인데,C가 크다면 마진의 크가기 작아지고, 마진의 오류도 작아진다. 반대로 C가 작다면 마진의 크기가 커지고 마진 오류도 커진다.
SVM모델이 과대적합이면 C를 감소시켜서 조금 더 유연한 모델로 만들고, 과소적합이면 C를 증가시켜서 조금 더 타이트한 모델을 만들어서 제공할 수 있다!
정확도가 떨어진 때 계산 요소
- 학습 데이터를 교체하거나 바꾼다
- 알고리즘을 아예 바꾼다.
- 알고리즘의 하이퍼 파라미터를 변경한다.
- YES / NO를 찾을 때 서포트 백터를 많이 사용한다.
- 10개의 데이터 중에서 하나를 고를 때 입력 파라미터는 784개나 된다.
- 따라서 SVM을 MNIST에 적용하려면 가지고 있는 SPECTRUM을 0->1로 바꾸거나 하는 게 중요하다.
- 즉 StandardScaler. MinMaxScaler등으로 데이터 스케일링을 해보거라
- 즉 서포트백터는 마진을 찾는 게 중요하고, 마진 이외의 데이터 위치는 중요하지 않다! 따라서 데이터가 있었다, 없었다가 중요하다!
- 따라서 SCALER를 조정해봐라
PANDAS¶
loc. iloc¶
In [ ]:
import pandas as pd
data = ['a','b','c','d','e']
df = pd.DataFrame(data)
df.drop([2], inplace = True)
df
Out[ ]:
- 원본 데이터에 반영을 시켜주기 위해서는 drop을 할 때 inplace를 해줘야 한다
In [ ]:
# df.loc[2] # 2번 인덱스가 삭제가 되어서 열람할 수 없다
df.loc[[1,3]]
# 행의 위치를 가지고 올 경우
df.iloc[[1,2]]
Out[ ]:
pandas csv¶
- 데이터 읽는 법
pd.read_csv()
- 데이터 상위 값
df.head()
- 데이터 하위 값
df.tail()
pandas를 사용하지 않을 때 csv와 excel 처리하기¶
- pandas를 사용하지 않고 csv나 excel을 읽을 수 있다
그러나 그렇게 될 경우 코드가 더 길어진다.
꼭 기억하기!!
- drop에는 index=1이나, replace =true를 해줘야한다,
6장에서 TXT, CSV 파일 읽어오는 과정이 있음
In [8]:
ser1 = {1,2,4,5,6}
print(type(ser1))
import pandas as pd
df= pd.DataFrame(ser1)
df
Out[8]:
csv¶
csv란?¶
- 콤마로 구분된 value들이다.
- csv가 아닌 파일을 csv로 변환하여 dataframe으로 읽기 위해서는 option으로 determeter 을 사용해야한다
- header가 없는 파일의 경우
header = None
을 해줘야한다. - 또는 header(columns)나 index 미사용시에는
header=False, index = False
를 해줘야한다.
none값 처리하기¶
- Nan값은 비어있는 값으로 나온다.
- 이러한 값을 따로 형식을 지정하고 싶을 경우
na_rep='-'
를 사용하면 된다.
특정 값 filtering¶
df[[column1, column2]]
- 복수의 컬럼을 가지고 오고 싶을 경우 []을 한번 더 써준다.
- 슬라이싱
df[3:5]
을 사용하거나, ioc, iloc를 사용할 수도 있다. query를 이용할수도 있다.
unique()는 유일한 값만을 return한다
- filter을 사용하여 조작할수도 있다. Subset the dataframe rows or columns according to the specified index labels.
- filter의 경우 items로 원하는 컬럼을 가져올 수 있고, regex로 정규표현식을 통해 값을 가져올 수 있다. 또한 like를 통해 원하는 값이 포함된 것을 가져올 수 있다.
option으로 axis = 0,1을 선택하여 filtering할 값이 column인지 row인지 확인할 수 있다.
boolean 값을 만들어서 이것을 df[boolean값]하면 boolean중 true의 값만 가지고 올 수 있다. 꽤 편하고 유용한듯 해서 앞으로 자주 사용해야겠다.
* query함수의 6가지 기능
- 비교 연산자( ==, >, >=, <, <=, != )
- in 연산자( in, ==, not in, != )
- 논리 연산자(and, or, not)
- 외부 변수(또는 함수) 참조 연산
- 인덱스 검색
- 문자열 부분검색( str.contains, str.startswith, str.endswith )
* filte란?
- filter는 입력받은 각 요소를 함수로 수행 후 ture인 것만 묶어서 반환한다.
- 그래서 filter내에는 함수, 또는 lambda등이 들어갈 수 있다.
- 내장함수로는 items, regex, like가 있다.
- 특히 regex는 정규표현식과 자주 쓰이니 공부하기
- [정규표현식 강의](https://programmers.co.kr/learn/courses/11)
'개발 > sk infosec cloud ai 전문가 양성과정' 카테고리의 다른 글
[PYTHON데이터분석 2020/09/01] SK infosec 클라우드 AI 전문가 양성과정 수업필기본 (0) | 2020.09.07 |
---|---|
[PYTHON데이터분석 2020/09/03] SK infosec 클라우드 AI 전문가 양성과정 수업필기본 (0) | 2020.09.07 |
[클라우드 컴퓨팅]SK infosec 클라우드 AI 전문가 양성과정 수업필기본 (0) | 2020.09.06 |
[docker4]SK infosec 클라우드 AI 전문가 양성과정 수업필기본 (0) | 2020.09.06 |
[docker 3]SK infosec 클라우드 AI 전문가 양성과정 수업필기본 (0) | 2020.09.06 |