경기도미래기술학교 AI개발자 부트캠프 28일차 TIL-파이썬으로 하는 벡터공부 계속. Mean subtraction 하는 이유, 편차 만들기, 분산, 표준편차 등.
2023. 6. 16. 15:01ㆍpython
반응형
Mean subtraction 하는 이유.
Mean Subtraction은 데이터 전처리 기법인데 주로 이미지 처리, 머신러닝 모델 학습 등에 사용된다.
이 작업을 함으로서 데이터의 중심을 원점으로 맞춰서 데이터의 각 포인트 간 상대적 위치를 유지할 수 있다.
편차 구하기.
data = [1,2,3,4,5]
deviation = [x-sum(data)/len(data) for x in data]
print(deviation)
numpy 쓰면 이렇게 된다.
import numpy as np
data = [1,2,3,4,5]
mean = np.mean(data)
deviations = [x-mean for x in data]
print(deviations)
표준편차(standard deviation)
data = [1,2,3,4,5]
n = len(data)
mean = sum(data)/n
#편차를 제곱한다.
squared_deviations = [(x-mean)**2 for x in data]
#평균한다.
#분산은 편차 제곱의 평균.
variance = sum(squared_deviations)/n
std_deviation = variance ** 0.5
print(std_deviation)
math_scores, english_scores = [50,60,70],[30,40,50]
n_student = len(math_scores)
math_sum, english_sum = 0,0
math_square_sum, english_square_sum = 0,0
for student_idx in range(n_student):
math_sum += math_scores[student_idx]
math_square_sum += math_scores[student_idx]**2
english_sum += english_scores[student_idx]
english_square_sum += english_scores[student_idx]**2
math_mean = math_sum / n_student
english_mean = english_sum / n_student
print(math_mean)
print(english_mean)
math_variance = math_square_sum/n_student - math_mean**2
english_variance = english_square_sum/n_student - english_mean**2
math_std = math_variance**0.5
english_std = english_variance**0.5
print("mean/std of Math:",math_mean, math_std)
print("mean/std of English:",english_mean, english_std)
for student_idx in range(n_student):
math_scores[student_idx] = (math_scores[student_idx]-math_mean)/math_std
english_scores[student_idx] = (english_scores[student_idx]-english_mean)/english_std
print('Math scores after standardization: ',math_scores)
print('English scores after standardization: ',english_scores)
math_sum, english_sum = 0,0
math_square_sum, english_square_sum = 0,0
for student_idx in range(n_student):
math_sum += math_scores[student_idx]
math_square_sum += math_scores[student_idx]**2
english_sum += english_scores[student_idx]
english_square_sum += english_scores[student_idx]**2
math_mean = math_sum / n_student
english_mean = english_sum / n_student
print(math_mean)
print(english_mean)
math_variance = math_square_sum/n_student - math_mean**2
english_variance = english_square_sum/n_student - english_mean**2
math_std = math_variance**0.5
english_std = english_variance**0.5
print("mean/std of Math:",math_mean, math_std)
print("mean/std of English:",english_mean, english_std)
# 1-13 Standardization. 평균이 0이고, 분산이 1로 바뀌게 된다. # 각 데이터에서 평균을 빼주고 표준편차(시그마)로 나눈다.
유닛벡터를 잘모른다.
import math
v1 = [1,2,3]
v2 = [4,5,6]
#norm 계산.
magnitude_v1 = math.sqrt(sum(x**2 for x in v1))
magnitude_v2 = math.sqrt(sum(x**2 for x in v2))
#유닛 벡터로 변환
unit_v1 = [x / magnitude_v1 for x in v1]
unit_v2 = [x / magnitude_v2 for x in v2]
print(unit_v1)
print(unit_v2)
cosine_similarity = sum(a*b for a,b in zip(unit_v1,unit_v2))
print(cosine_similarity)
v1 = [1, 2, 3]
square_sum = 0
for dim_val in v1:
#각 요소의 제곱을 더한다.
square_sum += dim_val**2
#제곱근.
norm = square_sum**0.5
print("norm of v1:", norm)
for dim_idx in range(len(v1)):
v1[dim_idx] /= norm
print(v1)
# 유닛 벡터의 각 엘리먼트를 제곱하여 더한 값은 1이 나와야 함
add_element=0
for dim_idx in range(len(v1)):
add_element += v1[dim_idx]**2
print(add_element**0.5)
두 개의 코드를 확인 하기. 유닛 벡터는 각 엘리먼트를 제곱해서 더하면 1이 나온다.
728x90
'python' 카테고리의 다른 글
경기도미래기술학교 AI개발자 부트캠프 30일차 TIL- Decision Tree의 한계. ratio와 지니인덱스 (0) | 2023.06.20 |
---|---|
경기도미래기술학교 AI개발자 부트캠프 29일차 TIL- Decision tree란? 엔트로피란? 개념 알고 실습하기. (1) | 2023.06.19 |
경기도미래기술학교 AI개발자 부트캠프 27일차 TIL- 벡터 공부 (0) | 2023.06.15 |
코딩테스트. 백준허브 연결하기. (0) | 2023.06.13 |
경기도미래기술학교 AI개발자 부트캠프 24일차 - 파이썬으로 랜덤 비밀번호 생성하기. (0) | 2023.06.12 |