[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기
반응형

분류 전체보기 495

[scikit-learn 라이브러리] KNN 분류기 옵션

KNeighborsClassifier(n_neighbors, weights, algorithm, leaf_size, p, metric, metric_params, n_jobs) n_neighbors : 이웃의 수 (default : 5) weights : 예측에 사용된 가중 함수 (uniform, distance) (default : uniform / uniform : 가중치를 동등하게 설정, distance : 가중치를 거리에 반비례하도록 설정) algorithm : 가까운 이웃을 계산하는데 사용되는 알고리즘 (auto, ball_tree, kd_tree, brute) leaf_size : BallTree 또는 KDTree에 전달 된 리프 크기 p : (1 : minkowski_distance, 2: ..

TF, DF, IDF

TF 특정 단어가 문서에 등장한 횟수 DF 전체 문서 중 특정 단어가 등장한 문서의 수 IDF DF의 역수 로그를 취해 수가 많이 커지는 것을 방지하고, 분모에 1을 더해 분모가 0이되는 것을 방지했다. n은 전체 문서수 활용 예제 import pandas as pd from math import log from konlpy.tag import Okt from collections import Counter doc_list = [ '안녕하세요 감사해요 잘있어요 다시 만나요', '안녕하세요 오늘도 좋은 하루 보내세요', '안녕하세요 안녕하세요 안녕하세요 오늘도 날씨가 좋네요', ] token_list = Okt().morphs(' '.join(doc_list)) token_list = list(set(to..

[scikit-learn 라이브러리] iris 데이터셋 사용 예제

데이터 판단 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df = sns.load_dataset('iris') df ==결과== sepal_length sepal_width petal_length petal_width species 0 5.1 3.5 1.4 0.2 setosa 1 4.9 3.0 1.4 0.2 setosa 2 4.7 3.2 1.3 0.2 setosa 3 4.6 3.1 1.5 0.2 setosa 4 5.0 3.6 1.4 0.2 setosa .. ... ... ... ... ... 145 6.7 3.0 5.2 2.3 virginica 146 6.3 2.5 5.0 1.9 vi..

[알고리즘 연습] 배열의 회전

배열의 회전 배열의 회전은 Rotation을 떠올리면 이해가 편하다. '한번의 회전'은 '한번의 Rotation'으로, [1,2,3,4,5]가 [2,3,4,5,1]이 된다. 배열과 회전 횟수를 파라미터로 활용해 배열을 회전하는 알고리즘을 짜보자. 풀이 def rotateArray(nums, k): partialReverse(nums, 0, len(nums) - 1) partialReverse(nums, 0, k - 1) partialReverse(nums, k, len(nums) - 1) return nums # 다음 함수는 추가적인 공간 사용 없이 배열의 일부를 뒤집어 주는 함수입니다. def partialReverse(nums, start, end): for i in ra..

[알고리즘 연습] 0 이동시키기

0 이동시키기 0과 양수가 섞여있는 배열이 존재한다. 해당 배열의 0들을 전부 뒷쪽으로 옮겨 [양의정수들, 0들] 형태로 나타나야 한다. 풀이 def moveZerosToEnd(nums): currentPosition = 0 for i in range(len(nums)): if nums[i] != 0: temp = nums[currentPosition] nums[currentPosition] = nums[i] nums[i] = temp currentPosition += 1 return nums 단순히 생각해보면 리스트 2개를 만들고, 각각 양수와 0을 담아 마지막에 합칠 수 있다. 하지만 그런 방법은 공간복잡도 측면에서 비효율적이다. 따라서 해당 배열 자체를 수정하는 방법을 생각해보았다. 현재 i 인덱스..

[알고리즘 연습] 주어진 숫자를 1로 만들기 위한 최소 횟수 구하기

주어진 숫자를 1로 만들기 위한 최소 횟수 구하기 int형의 숫자 num이 주어졌을 때 해당 num을 한정된 연산을 이용해 최대한 적은 연산 횟수로 1을 만들어야 한다. 가장 적은 케이스의 횟수를 구하라. 할 수 있는 연산은 3으로 나누기, 2로 나누기, 1 빼기 총 세가지이다. 풀이 def convertTo1(num): now = 1 tries = 0 check = [0 for _ in range(1,num + 1)] for i in range(0,num): tries = check[i] now_num = i + 1 plus_one_index = now_num + 1 - 1 mul_two_index = now_num * 2 - 1 mul_three_index = now_num * 3 - 1 if (pl..

[알고리즘 연습] 배열에서 타겟과 일치하는 수 2개 찾기

배열에서 타겟과 일치하는 수 2개 찾기 int형 배열과 int형 타겟수이 주어진다. 배열에는 중복되는 수가 없다. 두 수를 합쳐서 타겟수이 되는 두 수가 반드시 배열에 존재한다. 풀이 def twoSum(nums, target): nums.sort() i = 0 j = len(nums) - 1 while i target: j -= 1 elif sum < target: i += 1 return a,b sort를 진행해 배열을 순서대로 만든다. (시간복잡도 O(N logN)) 그리고 양끝에 인덱스를 하나씩 두고 두 수의 합이 너무 크면 끝 인덱스를 줄이고, 두 수..

[scikit-learn 라이브러리] 비만도 데이터 기반 분류 문제

데이터 판단 import pandas as pd import matplotlib.pyplot as plt from sklearn.neighbors import KNeighborsClassifier from sklearn import metrics # 평가를 위한 모듈 data = pd.read_csv('bmi_500.csv', index_col='Label') print(data.head(3)) Gender Height Weight Label Obesity Male 174 96 Normal Male 189 87 Obesity Female 185 110 ... 위와 같은 비만도 데이터가 있다. 각 데이터에는 성별과 키, 몸무게, 비만도 정보가 기록되어 있다. 총 500개의 데이터가 존재한다. 해당 데이터들..

선형회귀와 경사하강법(Gradient Descent)

선형회귀와 경사하강법은 딥러닝의 핵심이라고 할 수 있을 정도로 중요한 개념이다. 이를 제대로 이해하지 못한다면, 절대 딥러닝 전체를 이해할 수 없다. 해당 게시글은 나의 이해를 돕기 위한 것이기 때문에 어떤 시각자료도 첨부되어 있지 않다. 어떤 것인지 느낌은 알고 있지만, 역전파과정이 헷갈려서 나의 부족함을 새삼 깨닫고 처음부터 다시 정리중입니다ㅎㅎ... 선형회귀란, 종속 변수 y와 한 개 이상의 독립 변수 x와의 선형 상관 관계를 모델링하는 회귀분석 기법이다. 선형회귀는 y = ax + b라는 선으로 대표되는데, 여기서 a와 b라는 매개변수가 독립변수와 종속변수간의 상관 관계를 더 잘 표현하도록 해야한다. 이는 경사하강법(Gradient Descent)로 최적화된다. 쉽게 말하면 전체 데이터를 대표하기..

반응형