반응형

전체 글 241

[R] DBSCAN R 코드, 예시, 해석, 파라미터 조정 방법

지난 포스팅에서 DBSCAN논문을 리뷰해 보았다. 이번에는 R에서 DBSCAN을 어떻게 사용하는지 알아보고자 한다. >> DBSCAN 논문 리뷰 바로가기 >> 원하는 클러스터 모양이 없을 때 파라미터 조정방법 바로가기 in R 1. DBSCAN및 그래프를 그리기 위한 package loading - DBSCAN은 "fpc" library에 구현되어 있다. 1 2 library(fpc) library(ggplot2) cs 2. clustering할 데이터 생성 및 시각화 1 2 3 4 5 data db$isseed # 각 포인트별 core point인지 아닌지 [1] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE [..

AI/Clustering 2019.08.20

[논문] DBSCAN 리뷰 : Density Based Spatial Clustering of Applications with Noise

이전 포스팅에서 군집분석에 대해 알아보았다. >> 군집과 분류의 차이 바로가기 >> 군집분석이란? (What is clustering?) 바로가기 >> DBSCAN in R 바로가기 >> R에서 DBSCAN 파라미터 조정방법 바로가기 이번 포스팅에서는 밀도 기반(Density-based) 군집분석인 DBSCAN 알고리즘 논문 해석 및 리뷰를 해보고자한다. 본 논문은 1996년에 나왔다는 점을 고려해야한다. 논문링크 : https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf Abstract 클러스터링 알고리즘은 공간(spatial) 데이터베이스에서 class를 식별하는 작업에 적합하다. - spatial database : 좌표공간에 뿌려진 데이터들 그러나, 대규모의 공..

AI/논문 2019.08.19

군집분석이란? (What is clustering algorithm?)

지난 포스팅에서 군집(clustering)과 분류(classification)의 간단한 정의와 차이점을 알아보았다. >> 군집과 분류의 차이 바로가기 이번에는 군집분석(clustering)에 대해 좀 더 깊게 알아보겠다. 1. 군집분석이란? 군집분석이란? 개체를 분류하기 위한 명확한 분류기준이 존재하기 않거나 기준이 밝혀지지 않은 상태에서 주어진 데이터들의 특성을 고려해 같은 그룹(클러스터)를 정의하고, 다른 클러스터의 개체보다 서로 더 유사한 개체가 되도록 그룹화하여 그룹의 대표성을 찾아내는 방법이다. 여기서 cluster란? cluster란? 비슷한 특성을 가진 데이터들의 집합이다. 2. 군집분석의 원리 군집분석의 원리는 크게 두 가지가 있다. ① 군집 내 응집도 최대화 ② 군집 내 분리도 최대화 ①..

AI/Clustering 2019.08.18

군집과 분류의 차이 (difference of clustering and classification)

1. 군집(clustering) 군집분석은 unsupervised learning(비지도 학습) 방법으로 군집의 수, 속성 즉 label이 사전에 알려져 있지 않을 때 사용하는 분석방법이다. clustering 이란? 데이터 간의 유사도를 정의하고 그 유사도에 가까운 것부터 순서대로 합쳐가는 방법이다. clustering 알고리즘의 예시로는 k-means 알고리즘, h-cluster 알고리즘 등이 있다. 군집분석은 사전에 label에 대한 정보를 모르기 때문에 각 개체가 어떤 군집에 들어갈까 예측하기보다는 이렇게 나누어질 수 있구나! 정도의 지식을 발견하는 것에 적합하다. 예를들어, 과일과 채소로 이루어진 다음과 같은 데이터가 있다고 가정해보자. 이것을 비슷한 모양끼리 군집화 하면 다음과 같다. 또는 과..

AI/Clustering 2019.08.17

문자열, list 뒤집기(reverse string or list in python)

python에서 문자열 또는 list의 element들의 순서를 거꾸로 하고싶다면 "문자열"[::-1] 또는 list(reverse("문자열")) 로 해주면 된다. 예를들어) >>> "supper"[::-1]-> 'reppus' >>> ['s','u','p','p','e','r'][::-1]-> ['r', 'e', 'p', 'p', 'u', 's']또는 >>> list(reversed("supper"))-> ['r', 'e', 'p', 'p', 'u', 's'] >>> list(reversed(['s','u','p','p','e','r']))-> ['r', 'e', 'p', 'p', 'u', 's']단, reversed() 함수에 list를 씌워주지 않으면 다음과 같이 reversed 객체가 return..

Python 2019.08.16

[백준-python] 2675번 : 문자열 반복

https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 www.acmicpc.net 코드 n = int(input()) # 테스트 케이스 개수 for i in range(n): c = input().split() # 입..

[백준-python] 1157번 : 단어공부 설명

https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 코드1 n=input().upper() # 입력 및 대문자화 t=[] # 알파벳 개수 저장할 list for i in set(n): # 입력받은 알파벳 중 unique한 알파벳만 t.append(n.count(i)) # 개수 idx = [i for i,x in enumerate(t) if x==max(t)] # 최대값 위치 if len(idx)>1:print("?") # 최대값이 여러개면 ? 출력 else : print(list(..

[백준-python] 10809번 : 알파벳 찾기

https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. www.acmicpc.net 코드 print(*map(input().find,map(chr,range(97,123))),sep=" ") 코드설명 단어 "baekjoon"을 예로 설명 소문자 알파벳 리스트 생성 >>> list(map(chr,range(97,123))) # 아스키코드 활용 ['a', 'b', 'c', 'd', 'e',..

[백준-python] 11729번 : 하노이 탑 이동 순서(hanoi top in python)

https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5 www.acmicpc.net 코드 # hanoi function def def hanoi(n,a,b,c): if n==1: move.append([a..

반응형