일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- generic
- 앙상블
- git
- scss
- npm
- vuetify
- AI
- dotenv
- Python
- webpack
- nginx
- machine learning
- security
- 보안
- leetcode
- condition
- type
- JavaScript
- VUE
- BOJ
- C#
- var
- TypeScript
- property
- vue.js
- loop
- docker
- C++
- Clone
- bash
- Today
- Total
목록Development (105)
ice rabbit programming
이전 글에서 SVM과 나이브 베이즈 분류에 대해서 다루었다. 이번 글에서는 KNN 기법을 정리하고 회귀 때와 마찬가지로 평가 기법에 대해서 작성하려고 한다. KNN KNN(K-Nearest Neighbor)는 기존 데이터 중에 가장 가까운 K개 이웃의 정보로 새로운 데이터를 예측하는 분류 기법이다. KNN은 한 가지 가정을 두고 분류하는데, 유사 특성 데이터는 유사 범주에 속하는 경향이 있다는 것을 전제로 한다. 예를 들자면 기존 데이터의 분류를 마치고, 새 데이터를 이전에 분류했던 기준에 따라 분류하는 경우라고 볼 수 있겠다. KNN을 아래와 같은 특징을 가진다. 직관적이고 복잡하지 않다. 해석도 꽤 쉬운 편에 속한다. K 값에 따라 성능이 크게 좌우된다. 딱히 학습이랄 것이 없는 Lazy Model이..
파일을 HTTP로 주고받을 때에는 multipart/form-data의 폼으로 전송하게 되는데, request의 바디는 여러 파트로 나누어져 파라미터와 파일의 내용을 전달하게 된다. 아무래도 업로드가 파일이 서버에 저장되는 것이니 더 주의할 부분이 많다. 정보를 유출하거나 공격하는 파일을 만들어 외부에서 실행하는 것이 파일 업로드 시의 대표적인 공격이다. 파일 업로드 시 주의할 점 사이즈(개수/크기) 제한을 두어야 한다. -> 사이즈 제한을 두지 않으면 대용량의 파일을 올려 DoS 공격을 취할 수 있다. 타입 체크를 실시하여야 한다. 이에 더해 파일의 실행 권한을 부여하지 않는다. -> 웹쉘을 올려 외부에서 실행하여 공격할 수 있다. 외부에서 실행 뿐만 아니라 아예 접근이 불가능하도록, 외부에서 접근이 ..
virtual env(가상 환경) python을 좀 다루었다면, env를 많이 이용할 것이다. 해당 프로그램만을 위한 환경을 위해 env를 따로 만들어서 python을 실행하는 것이다. 그렇기 때문에 가상 환경을 켜고 패키지를 설치하면, 같은 디렉토리라도 가상 환경을 껐을 경우 제대로 실행이 되지 않는다. 위 말이 좀 추상적이라고 생각한다면, 서로 요구한 패키지의 버전 등이 다른 프로젝트끼리 충돌이 일어나지 않게 하기 위해 각각의 환경을 구축하는 것이다. ex) A 프로젝트에서 0.1버전 요구, B 프로젝트에서 0.2버전 요구. 환경이 나누어져있지 않다면 충돌 발생 패키지 매니저 node.js를 사용해보았다면 package.json이 친숙할 것이다. npm은 node.js의 패키지를 관리해주는데(yarn..
이전의 두 글에서 회귀에 대해서 다루었었다. 이번에는 지도학습의 다른 종류인 분류(Classification)에 대해서 다룰 것이다. 분류는 X에 따라 Y를 분류하는 것으로, 주어진 입력 값이 어떤 클래스에 속할지에 대한 결과 값을 도출하는 것이다. 즉, 어떠한 기준에 따라 0 또는 1의 값을 보내는 모델이다. 여기서 어떠한 기준을 결정 경계(Decision Boundary)라고 부르는데, 데이터를 분류하는 기준 값으로 0인지 1인지를 결정하는 기준 값이다. 보통은 확률 0.5를 기준으로 나눈다. 회귀의 분류에의 적용 이전에 다루었던 회귀를 분류에 적용할 수 있는 방법이 있는데, Logistic Regression이다. 회귀는 이론적으로 무한대의 값을 가질 수가 있으므로(선은 무한하니까), 분류에 사용하..
지난 글에서 회귀 분석의 모델에 대해서 간단하게 다루었고, 과적합에 대해서 얘기하며 포스팅을 마무리했었다. 이번 포스팅에서는 과적합 방지 기법부터 시작하여, 회귀 알고리즘을 평가하는 것에 대해 다루도록 하겠다. 과적합 방지 우선 과적합(Overfitting)을 방지하는 방법부터 시작할 것이다. 과적합은 지난 글에도 언급했듯이 모델이 훈련 데이터에 과도하게 맞추어져 있어, 일반성이 떨어지는 경우이다. 일반성을 증가시키기 위해 모델의 복잡성을 줄이거나 랜덤성을 높이는 것이 목적인데, 크게 두 가지를 꼽을 수 있다. 첫 번째로는 교차 검증(Cross Validation)이다. 훈련용 데이터와 별개의 테스트 데이터, 검증 데이터로 나누어 성능을 평가하는 방식이다. 일반적으로는 k-fold 교차 검증을 많이 사용..
현재는 AI와는 꽤 거리가 먼 직무를 맡고 있고, 그나마 있는 경험은 학부생 시절에도 관련 수업을 한두 개 들은 정도였다. 12월 한 달 동안 AI의 기초에 관한 강의를 수강할 기회가 있어, 배운 내용들을 정리 및 공유하기 위해 포스팅을 시작하려 한다. 일전에 한 달 정도 포스팅했던 typescript와 비슷할 것 같다. 다만, 지식 공유도 목적에 있기는 하지만 전문가가 아니고, 개념적인 내용 정리에 초점을 맞출 생각이기에 그림 등 시각 자료가 다소 부족하고, 코드가 부족할 수 있다. 프로그래밍에 종사하고 있지만 AI 관련 지식이 없는 사람으로서, 이해한 내용을 최대한 쉽게 정리하려고 했다는 장점이 있지만 좀 더 전문적이고 세세한 설명을 원하시는 분들은 다른 글을 찾아보심이 좋을 것이라 생각된다. 머신러..
대부분의 언어에는 파일 입출력 기능을 제공한다. 심플함이 모토인 파이썬답게, 파일 입출력 쪽도 간단하게 구현할 수 있다. 이번 포스팅에서는 그 중에서 패키지를 활용한 Excel 파일 읽기를 다룰 것이다. pip install xlrd로 패키지를 우선 설치하고, 다음 코드로 간단하게 파일을 읽어올 수 있다. import pandas as pd data = pd.read_excel("./data.xls") 간단한 코드로 data에는 data.xls의 내용들이 담긴다. 단, 엑셀 파일 내에 header가 존재한다면 타입이 다르기 때문에 우리가 원하는 형태인 row별 데이터를 뽑아올 수 없다. extract_data = data["코드"] 이런 식으로 데이터를 가공해주는 것이 필요하다.
python은 스타일 가이드가 꽤 엄격한 편에 속한다. 특히 다른 언어에서는 논쟁거리가 되는 indent(들여쓰기)가 아예 문법으로서 기능하기도 한다. PEP-8이라는 공식 스타일 가이드를 배포하는데, 양이 매우 방대하다. C#에서 문법 검사 및 오토 포매팅해주는 툴인 Resharper를 사용해보고, 툴의 강력함을 느꼈었는데, VS Code에서는 무료 확장으로 많은 linter를 제공한다. 본인은 많이 쓰는 pylint, pyright, black을 설치하여 사용하고 있다. (좀 더 자세한 설명을 원한다면 VS Code 공식 문서 혹은 이쪽 글에도 비교 정리가 잘 되어있다.) 이번 포스팅에서는 간략한 개요와, 설치 가이드 위주로 다룰 예정이다. Code Style Checker 문법 검사를 하고 Warn..