기본 콘텐츠로 건너뛰기

[math] 정적분의 특성

최근 글

[ML] 마할로비스(Mahalnobis) 거리와 이상치 감지

마할로비스(Mahalnobis) 거리 마할로비스(Mahalnobis) 거리 벡터인 한점과 분포 사이의 거리를 측정하는 효과적인 다변량 거리 메트릭스 이 지표는 다변량의 이상 탐지, 높은 불균형한 데이터 세트의 분류, 단일 클래스 분류, 새로운 데이터들의 예측에 효과적입니다.2차원의 두 점사이의 거리를 나타낼 경우 일반적으로 유클리드거리가 사용됩니다. 그 두점 (p1, p2), (q1, q2)라고 하면 유클리드 거리는 다음과 같이 계산됩니다. $$\tag{식 1}d(p, q) =\sqrt{(p_1-q_1)^2+(p_1-q_2)^2}$$ 식 1을 다차원으로 확장하면 즉, $(p_1, p_2, \cdots, p_n), \;(q_1, q_2, \cdots, q_n)$ 유클리드 거리는 식 2와 같이 계산됩니다. $$\tag{식 2}d(p, q) =\sqrt{(p_1-q_1)^2+(p_1-q_2)^2+ \cdots +(p_n-q_n)^2}$$ 식 2와 같이 다차원의 경우 모든 차원에 대한 가중치는 전혀 고려되지 않습니다. 즉, 차원들 사이에 영향이 없다는 가정이 성립되어야 합니다(모든 차원은 독립적). import numpy as np import numpy.linalg as la import pandas as pd from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") np.random.seed(3) X=np.random.normal(0, 1, 100) X1=np.linspace(-2,2, 100) y1=X1+np.random.randn(100) p1=(-1, 1) p2=(1, 1) fig, ax=plt.subplots(1, 2, figsize=(7, 3), sharey=True) ax[0].scatter(X1, X, s=5) ax[0].sc

[ML] 이진 분류 추정기의 평가

이진분류기의 평가 이진 분류를 위해 로지스틱 모델을 사용합니다. 모델 생성을 위해 사용한 데이터셋은 pima-indians-diabetes.csv로서 Kaggle 에서 가져올 수 있습니다. 이 파일은 .csv 형식이므로 pandas.read_csv("경로")를 통해 호출할 수 있습니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score from sklearn.metrics import f1_score, confusion_matrix, precision_recall_curve, roc_curve from sklearn.preprocessing import StandardScaler, Binarizer from sklearn.linear_model import LogisticRegression data = pd.read_csv('pima-indians-diabetes.csv') data.head(3) preg plas pres skin test mass pedi age class 0 6 148 72 35 0 33.6 0.627 50 1 1 1 85 66 29 0 26.6

[Math] 미분 문제

미분의 응용 문제 예) 자동차 A, B가 각각 서와 동쪽에 500m 의 간격을 두고 있습니다. A는 B를 향해 35m/h의 속도로 이동하고 B는 남쪽으로 50m/h의 속도로 이동합니다. 3시간 후에 두차 사이의 거리의 변화율? 증가 또는 감소? 위 문제는 그림의 z의 변화율을 계산하는 것입니다. 위의 x, y, z은 t에 대한 함수로 인식할 수 있습니다. \begin{align}x^2(t)+y^2(t)&=z^2(t)\\ \frac{d(x(t)}{dt}=-35&\quad \frac{d(y(t))}{dt}=50\end{align} 3시간 후 x=500-35⋅3=395, y=50*3=150 from sympy import * t=symbols('t') x=Function('x')(t);x x(t) y=Function('y')(t);y y(t) z=Function('z')(t);z z(t) eq=x**2+y**2-z**2;eq $x^{2}{\left(t \right)} + y^{2}{\left(t \right)} - z^{2}{\left(t \right)}$ deq=diff(eq, t);deq $2 x{\left(t \right)} \frac{d}{d t} x{\left(t \right)} + 2 y{\left(t \right)} \frac{d}{d t} y{\left(t \right)} - 2 z{\left(t \right)} \frac{d}{d t} z{\left(t \right)}$ dz=solve(deq, diff(z, t)); dz (x(t)*Derivative(x(t), t) + y(t)*Derivative(y(t), t))/z(t) x1=500-35*3 y1=50*3 z1=(x1**2+y1**2)**0.5;z1 422.5221887664599 dz[0].subs({x:x1, diff(x, t):-35, y:y1, diff(y, t):50

[R]데이터 시각화

데이터 시각화 내용 Bar plot Stacked and grouped bar plot 막대 플롯 조정 스피노그램(Spinograms) Pie chart Bar plot 막대그래프는 목록변수의 분포(빈도수)를 나타냅니다. 막대의 위치는 수직 또는 수평으로 작성할 수 있습니다. 가장 간단한 형태는 다음 함수를 사용하는 것입니다. barplot(객체, main, xlab, ylab, horiz, names.arg) 객체는 벡터 또는 행렬 형입니다. main: 제목 xlab, ylab: x, y 축 라벨 horiz = True 이면 수평바가 생성 names.arg: 각 바의 라벨을 작성 library(vcd) ar<-Arthritis names(ar) [1] "ID" "Treatment" "Sex" "Age" "Improved" head(ar) ID Treatment Sex Age Improved 1 57 Treated Male 27 Some 2 46 Treated Male 29 None 3 77 Treated Male 30 None 4 17 Treated Male 32 Marked 5 36 Treated Male 46 Marked 6 23 Treated Male 58 Marked table() 는 교차 분류 요인(cross-classifying factors)을 사용하여 요인 수준의 각 조합에서 카운트의 분할표(contingency table, 교차표)를 작성합니다. count<-table(ar$Improved);count None Some Marked 42 14 28 par(mfrow=c(1, 2)) barplot(cou