[알고리즘] KDTree로 가장 가까운 포인트 찾기
·
연구 Research/데이터과학 Data Science
K-neighbor 알고리즘에서 근접한 포인트를 찾을 때 다양한 방법으로 구할 수 있다.그 중 KD tree 방식을 이용한 효율적인 근접 포인트 찾는 알고리즘을 기록한다. import jax.numpy as jnpfrom jax import vmapclass KDTreeJAX: def __init__(self, data, depth=0): self.axis = depth % data.shape[1] self.median_idx = len(data) // 2 # Sort data along the current axis sorted_data = data[jnp.argsort(data[:, self.axis])] self.median_poi..
[데이터과학] scipy interpolation 종류 정리
·
연구 Research/데이터과학 Data Science
모든 scipy interpolation을 다 시도해보았다. 각 interpolation마다 특징이 있으므로 원하는 것을 사용하면 된다. from scipy import interpolate import numpy as np x = np.arange(0, 10) y = np.sin(-x) kind_set = [ "zero", "linear", "quadratic","nearest", "nearest-up", "slinear", "cubic", "previous"] xnew = np.arange(0, 9, 0.1) for i in range(4): f = interpolate.interp1d(x, y, kind=kind_set[i]) ynew = f(xnew) plt.plot(xnew, ynew, labe..
[matplotlib] x,y축 format 지정하는 방법
·
연구 Research/데이터과학 Data Science
matplotlib에서 log scale그래프를 그리다가 다음과 같이 y축 숫자표기가 너무 크다는 것을 발견하고 이를 수정하기 위한 코드를 작성하였다. 여러 방법을 찾아보긴 했는데 내가 느끼기에 가장 간단하고 범용성이 높은 방법은 다음과 같다. 1. axes 인스턴스 필요 대부분의 matplotlib 그림에서 고급 기능을 쓰기 위해서는 axes 인스턴스를 필요로 한다. 이 axes는 내가 그리고자 하는 figure에 할당된 class인데 그 내부에서 구체적으로 설정하는 매서드가 담겨있어서 이것에 접근해야한다. plt.plot(num_history, train_mse_history) plt.ylabel('MSE') plt.xlabel('epoch') plt.yscale('symlog') ax = plt.g..
[Matplotlib] 3D scatter plot 그리는 코드
·
연구 Research/데이터과학 Data Science
matplotlib에서 3D scatter plot을 그리는 방법 3D plot을 그리기 위한 코드는 여러 방식이 있을 텐데 아래 방식이 가장 스탠다드인 것 같아서 이렇게 사용한다. max_value = np.amax( np.abs(data) ) # max값으로 축 제한 fig = plt.figure(constrained_layout=True) ax = fig.add_subplot(projection='3d') ax.scatter(data[:,0], data[:,1], data[:,2], marker='o', color ='r', alpha=1.0) ax.set_xlim([-max_value, max_value]) ax.set_ylim([-max_value, max_value]) ax.set_zlim([..
[데이터과학] Pandas에서 dataframe 생성 및 export
·
연구 Research/데이터과학 Data Science
데이터 결과를 보고나서 이를 저장하기 위해 일일이 옮겨적지 않고 dataframe으로 만든 다음에 csv로 export하는 방법이 훨씬 편하다. 간단하게 표현하면 아래와 같은 코드를 사용한다. result_name = (어쩌구저쩌구) filename = result_folder + result_name + '.csv' write_csv = pd.DataFrame( record_matrix ) # data_frame 생성 # 또는 write_csv = pd.DataFrame( record_matrix, columns = ['A','B','C'] ) write_csv.to_csv(filename) dataframe을 사용하면 그 dataframe에서의 데이터를 종합하여 보여주는 기능이 있다. result_m..
[데이터과학] Unbalancing data 처리
·
연구 Research/데이터과학 Data Science
majority(다른 클래스에 비해 샘플 수가 많은 클래스) 샘플 수가 minority 샘플 수가 차이가 많이 나면 학습을 하는데 어려움을 겪을 수 있습니다. 따라서 각 클래스의 샘플 수 균형을 맞춰주는 방법에 대해서 알아보겠습니다. 1. under-sampling majority 샘플수를 줄여서 minority 샘플 수와 균형을 맞추는 방법 2. over-sampling minority 샘플을 반복 샘플링하는 방법 3. Synthetic generation 위의 두 방법 외에도 SMOTE(Synthetic Minority Over-sampling Technique) 방법이 있습니다. minority에서 샘플을 복원추출하는 것 말고 인공적인 데이터를 추가로 생성하는 방법입니다. feature space에..
[데이터과학] 결측치 Missing Data 처리
·
연구 Research/데이터과학 Data Science
결측치에도 종류가 있기 때문에 각 결측치의 특성에 따라서 처리하는 방법이 달라질 수 있습니다. 1. 결측치 Missing data 종류 1) Missing completely at random (MCAR) 완전히 무작위로 Missing value가 있는 경우입니다. 관찰 가능한 변수에도 영향을 받지 않고, 관찰 불가능한 (우리가 관심있어하는) 변수에도 무관합니다. 예를 들면, 설문조사를 하는 데 성별이나, 나이에 관계없이 일정하게 결측치가 존재한다면 결측치가 설문의 결과를 편향되도록 만들지 않을 것입니다. 즉 이 데이터에 대한 분석은 unbiased되었다고 볼 수 있습니다. 2) Missing at random (MAR) 관찰된 데이터의 변수에 따라 결측치 경향성이 있을 뿐, 결측치 자체에는 그 경향성이..