목록파이썬 (8)
헬창 개발자
1. K-최근접 이웃이란?K-최근접 이웃(K-Nearest Neighbors, KNN) 알고리즘은 지도 학습에서 사용되는 간단하고 직관적인 분류 및 회귀 알고리즘입니다. 주어진 데이터 포인트의 라벨을 예측하기 위해, 해당 데이터 포인트와 가장 가까운 K개의 이웃 데이터 포인트를 참조합니다. 이웃들의 라벨 정보를 바탕으로 예측을 수행합니다.2. KNN 알고리즘의 기본 개념분류: K개의 가장 가까운 이웃의 클래스 라벨을 확인하고, 가장 많이 등장하는 클래스로 예측합니다. 예를 들어, K=3일 때, 가장 가까운 3개의 이웃 중 2개가 클래스 A에 속하고 1개가 클래스 B에 속하면, 예측 클래스는 A가 됩니다.회귀: K개의 가장 가까운 이웃의 값을 평균하여 예측 값을 결정합니다. 이웃의 평균 값이나 중간 값을 ..
1. 계층적 군집화란?계층적 군집화는 데이터를 계층적으로 클러스터링하는 방법으로, 데이터 포인트를 유사성에 따라 클러스터로 그룹화합니다. 이 방법은 군집의 계층적 구조를 형성하며, 덴드로그램(dendrogram)을 통해 클러스터의 병합 과정을 시각적으로 표현할 수 있습니다.2. 계층적 군집화의 유형계층적 군집화는 크게 두 가지 유형으로 나눌 수 있습니다:단일 링크 (Single Linkage): 두 클러스터 간의 거리를 두 클러스터 간의 가장 가까운 거리로 정의합니다. 이는 "최단 거리 연결" 방법이라고도 불립니다.완전 링크 (Complete Linkage): 두 클러스터 간의 거리를 두 클러스터 간의 가장 먼 거리로 정의합니다. 이는 "최장 거리 연결" 방법이라고도 불립니다.평균 링크 (Average ..
알고리즘 가장 간단한 지도학습 분류(classification) 알고리즘이 kNN(k-Nearest Neighbor)이라면, 가장 간단한 비지도학습 군집(clustering) 알고리즘은 k-means 클러스터링을 꼽을 수 있다. 비지도학습이기 때문에 k-means 클러스터링은 레이블이 없는 데이터들만으로도 작동한다. k-means 클러스터링은 데이터를 k개의 클러스터(cluster)로 분류해주는데, 다음과 같은 알고리즘으로 작동한다. 1) 사용자로부터 입력받은 k의 값에 따라, 임의로 클러스터 중심(centroid) k개를 설정해준다. 2) k개의 클러스터 중심으로부터 모든 데이터가 얼마나 떨어져 있는지 계산한 후에, 가장 가까운 클러스터 중심을 각 데이터의 클러스터로 정해준다. 3) 각 클러스터에 속하..
1. 선형 회귀란?선형 회귀(Linear Regression)는 입력 변수와 출력 변수 간의 관계를 선형 함수로 모델링하는 기법입니다. 목표는 입력 변수와 출력 변수 간의 관계를 설명하는 직선(혹은 평면)을 찾는 것입니다. 이 기법은 회귀 분석의 가장 기본적인 형태입니다.2. 선형 회귀의 수식단일 입력 변수 xxx와 출력 변수 yyy에 대한 선형 회귀 모델은 다음과 같은 수식으로 표현됩니다:β0는 절편(Intercept)β1은 기울기(Slope)3. 선형 회귀 알고리즘선형 회귀 알고리즘의 목표는 데이터 포인트와 예측 직선 간의 오차를 최소화하는 것입니다. 오차는 주로 평균 제곱 오차(Mean Squared Error, MSE)로 측정됩니다. 선형 회귀의 주요 단계는 다음과 같습니다 1.모델 정의 2...
설계도 코드 class stack: def __init__(self): self.data= [] #스택 생성 self.cnt =0 def push(self,data): # 삽입 함수 self.data.append(data) self.cnt += 1 def isempty(self): # 공백 체크 return len(self.data)==0 def pop(self): # 삭제 함수 if not self.isempty(): self.cnt -= 1 return self.data.pop() def size(self): return len(self.data) def postfix(self, a): # 후위표기식 변경 self.temp = '' # 후위표기식 저장 for i in a: if i.isdigit():..
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 1..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. ..
https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0]×B[0] + ... + A[N-1]×B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하..