요약 : 파이썬100문 day2, 벡터연산 개념정리, 리스트를 활용한 벡터연산(차원확장)
x1,y1,z1=1,2,3
x2,y2,z2=3,4,5
x3,y3,z3=x1+x2,y1+y2,z1+z2
x4,y4,z4=x1-x2,y1-y2,z1-z2
x5,y5,z5=x1*x2,y1*y2,z1*z2
# ㄴhadamard product 원소끼리의 곱
# cf)dot product는 원소끼리의 곱의 합. 스칼라로 나옴
a=10
x1,y1,z1=1,2,3
x2,y2,z2=a*x1,a*y1,a*z1
x3,y3,z3=a+x1,a+y1,a+z1
x4,y4,z4=a-x1,a-y1,a-z1
-feature개수는 이론적으로 무한대. 2개만 쓰는 경우는 잘 없음. 3~4개까지 씀. 일단 2차원에서 feature space를 먼저 이해해보면 이와 같음.
x,y,z=1,2,3
norm=(x**2+y**2+z**2)**0.5
x,y,z=x/norm,y/norm,z/norm
norm=(x**2+y**2+z**2)**0.5
x1,y1,z1=1,2,3
x2,y2,z2=3,4,5
dot_prod=x1*x2+y1*y2+z1*z2
x1,y1,z1=1,2,3
x2,y2,z2=3,4,5
e_distance=(x1-x2)**2+(y1-y2)**2+(z1-z2)**2
e_distance**=0.5
pred1, pred2, pred3 = 10, 20, 30
y1, y2, y3 = 10, 25, 40
n_data=3
s_error1 = (pred1 - y1)**2
s_error2 = (pred2 - y2)**2
s_error3 = (pred3 - y3)**2
print(s_error1, s_error2, s_error3) #squared error
mse=(s_error1 + s_error2 + s_error3)/n_data
print(mse)
scores=[10,20,30] #단수형 복수형 지켜서 만들어주는게 좋음
n_student=len(scores) #len함수 쓰면 좋은게, 데이터 수정될때마다 고칠 필요가 없기때문
mean=(scores[0]+scores[1]+scores[2])/n_student
print("score mean: ", mean)
#--------------------------------------------------------
#mean subtraction2
scores[0]-=mean
scores[1]-=mean
scores[2]-=mean
mean=(scores[0]+scores[1]+scores[2])/n_student
print("score mean: ", mean)
#분산과 표준편차2
square_of_mean=mean**2
mean_of_square=(scores[0]**2+scores[1]**2+scores[2]**2)/n_student
variance=mean_of_square-square_of_mean
std=variance**0.5
print("score standard deviation: ",std)
#standardization2
scores[0]=(scores[0]-mean)/std
scores[1]=(scores[1]-mean)/std
scores[2]=(scores[2]-mean)/std
square_of_mean=mean**2
mean_of_square=(scores[0]**2+scores[1]**2+scores[2]**2)/n_student
variance=mean_of_square-square_of_mean
std=variance**0.5
print("score mean: ", mean)
print("score standard deviation: ",std)
scores=[10,20,30]
#method.1
for score in scores:
print(score)
#method.2 인덱스[]로 접근하기 중요!
for score_idx in range(len(scores)):
print(scores[score_idx])
scores2=[10,20,30,40,50]
for score_idx in range(len(scores2)):
scores2[score_idx]+=10
list1=[10,20,30]
list2=[100,200,300]
for idx in range(len(list1)):
print(list1[idx],list2[idx])
ㄴ인덱스 활용하는 것이 중요한 부분임!
score_sum=0
for score in scores:
score_sum+=score
numbers=[1,4,5,6,4,2,1]
iter_cnt=0
for _ in numbers:
iter_cnt+=1
num_sum=0
for i in range(101):
num_sum+=i
numbers=list()
for i in range(1,101):
numbers.append(i)
numbers=list()
for i in range(100):
numbers.append(0)
scores=[10,20,30]
#method.1
score_sum=0
n_student=0
for score in scores:
score_sum+=score
n_student+=1
score_mean=score_sum/n_student
print("score mean: ",score_mean)
#method.2
score_sum=0
for score_idx in range(len(scores)):
score_sum+=scores[score_idx]
score_mean=score_sum/len(scores)
print("score mean :",score_mean)
#method1
scores_ms=list()
for score in scores:
scores_ms.append(score-score_mean)
print(scores_ms)
#method2
for score_idx in range(len(scores)):
scores[score_idx]-=score_mean
print(scores)
#method.1
v1,v2=[1,2,3],[3,4,5]
v3=[v1[0]*v2[0],v1[1]*v2[1],v1[2]*v2[2]]
print(v3)
#method.2
v1,v2=[1,2,3],[3,4,5]
v3=[0,0,0]
v3[0]=v1[0]*v2[0]
v3[1]=v1[1]*v2[1]
v3[2]=v1[2]*v2[2]
print(v3)
#method.3 - append기능을 이용한 hadamard
v1,v2=[1,2,3],[3,4,5]
v3=list()
v3.append(v1[0]*v2[0])
v3.append(v1[1]*v2[1])
v3.append(v1[2]*v2[2])
print(v3)
v1=[1,2,3]
#method1
norm=(v1[0]**2+v1[1]**2+v1[2]**2)**0.5
print(norm)
#method2
norm=0
norm+=v1[0]**2
norm+=v1[1]**2
norm+=v1[2]**2
norm**=0.5
print(norm)
v1=[1,2,3]
norm=(v1[0]**2+v1[1]**2+v1[2]**2)**0.5
print(norm)
v1=[v1[0]/norm,v1[1]/norm,v1[2]/norm]
norm=(v1[0]**2+v1[1]**2+v1[2]**2)**0.5
print(norm)
v1,v2=[1,2,3],[3,4,5]
#method1
dot_prod=v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]
print(dot_prod)
#method2
dot_prod=0
dot_prod+=v1[0]*v2[0]
dot_prod+=v1[1]*v2[1]
dot_prod+=v1[2]*v2[2]
print(dot_prod)
e_distance=0
e_distance+=(v1[0]-v2[0])**2
e_distance+=(v1[1]-v2[1])**2
e_distance+=(v1[2]-v2[2])**2
e_distance**=0.5
print(e_distance)
predictions=[10,20,30]
labels=[10,25,40]
n_data=len(predictions)
mse=0
mse+=(predictions[0]-labels[0])**2
mse+=(predictions[1]-labels[1])**2
mse+=(predictions[2]-labels[2])**2
mse/=n_data
print(mse)