α’ααααααα·ααΆααααΆα’αααΈαα·ααΈααΆα αααΎαααΎααααΈααααααααΈααΆαααα·ααα·ααααΆαααααααΆαααααααααααααΆαααα (ααΌ) α
αα·ααΈααΆαααααααΆααα’ααααααΆααααααααΆααααΈααΆααααααΆααα·ααΆααααΆαα ααΈαααααΊααα’ααααΎαα·ααΈααΆαααααααΆαααα·α αααα»αα α αΌαααΎααααααΆαααα·ααΈααΆαααααααΌα ααΆααααααα
- αααααααααΆααα·ααΆα
- αααααΆααααααΆα
- ααΆαα α»ααααααΆα Stochastic
αααααΆαααα·ααΈααΆαααααααΈαα½ααααααΆααααααααΆααααΈααΆααααααααΆααααααα α’ααααααααααααΌααα»αααΆααααααα αααααΆαα αααΎαααααΌαααΆααααα αααα ααΆα’αααΈαααααααΌαααΆααααααααααα·αααααΎαααααΆαααα ααΆαααΈ αα·αα’ααααααααααΎαααααΆααααΆαααααΆ ααΆαααΈ. ααΆααααΌαααΆαααααΏααΆααΆαααααΎααααΆα ααΆαααΈ ααΉαααΆαααααααααΆαα αααΆαααΎαα»αααααΌαααα
ααΌαααΆααα’αααααααΆααααααα±αααα
αααα»αα’αααααααααΌαααΆαααααααα
αααα»α αααααααΆαα 2.7 αααααααΎ αα»αααααΌααααα½ααα Jupyter. ααΌαααααα αα·αα―αααΆααααααΆααα·ααααααααααΌααααΌαααΆααααα αααα
ααΎ
α’ααααααααααΆααααααααααΆααααα αααΎααααααΆααα’αααα αΆααααααΎαααααΌα αα·αα’ααααααααΆαα αΆααααααΎαααααα·α αααααααΎααααΈααααΎααΆααα αΆααααααΆααα·ααααΆαααααααααααΌααΆααα½ααα αααα»ααααααΆαα·ααααα·αααα·α - ααΆαααααααΆαααΈαα
ααΎααααΈαααα αΆααααααΆαα ααΎαααααΎα§ααΆα αααααααΆαααααα½αα
α§ααΆα ααααααααααα
ααΎαβααΆαβαααααβααααΆαβαααΆαβαααβαααααβααααααβα’αΆααααα Y ααΈ X (ααΆααΆαααα α‘)α
ααΆααΆαααΈ 1 βααααααααα§ααΆα αααβ
ααΎαααΉααααααααΆααααα ααΊααΆααααααααΆα, αα·α - ααααΆααα
αααΌααααα»ααααααα αααααΆαβααα α
αααΌαβααΊβα’αΆαααααβααΎβααβααβααααΆα αα·α - αααααΆαααα½αααααααααααΆααα
αααΌαα’αΆαααααα
α§ααΆα αααααΊααΌα αααα - ααΌα ααααααΆααααΈααααααααααΆαααΉαααα’ααααΆαααααααααααααααΆααα αααΌααα ααΎααααααααΆααα·αααΈα ααα»α αααα·αααααΆαααα ααα½αααααααα - ααΆααα·α αα½α ααΆαααααα½αααα αααααΆαααΆαααΆααααα ααΆαααΆααααααααααααΉαααααΎα±ααααΆα’αΆα ααααΎαα ααΆα ααΌα ααααα½ααααα·ααΆαααΆ ααΎααααΈαααααα αα·αααααααααααΆαααΆαααΆααααα½αααααα αααααΆαααααα’αααα αΆααααααΎαααααΌααααα αΌαα α αΎαααΆαααΆαααααααααααΉαα’αα»ααααΆαα±ααα’ααααααα αααααααααΆαα§ααΆα ααααα ααΎαααααΆααααααααΆααααααααααααααααΆααα
α’αα»ααααΆαα±ααααΎαααααααααΆααΆαααΉαααα’αααααααΆααααααα±αααααα»αα§ααΆα αααα’αΆα ααααΌαααΆααααΆαααααααΆααααΆαααα’ααααααΈααΆαααα·ααα·ααααΆαααααααΆαααααααααααααΆαααα (ααΌ) αααααααα:
αααααΆααααααααα ααΊααΆαααααα αααΌαααααΌαααΆαααα½α - α αααΌααααααααΌαααΉααα ΠΈ ααΊααΆαααα»αααααααααααααααααΆαααααΆααααααΆαα
α αααΆαααΆαααα»α ααΆααΏααααα α ααΆαααααΆα α¬αααααΆααααααααΆαααααΆααααααΆαα ααααΆαα±ααα ααα½αααα αα ααααααααΆααααΆααααααΌα .
ααΆααααααα ααΆααα·α αα ααααααΎααααα»αα§ααΆα αααααΊααααΎαααΎααααα»ααααααααα αααα»ααααΈααΆα ΠΈ ααααααααΆααααααααα αααΌααααααΆαααααΆααααααΎαααΆαααααΈα ααααΎααα·α i.e. αααααβαααβαααα αΆαβαααα»αβααααΌβααΉαβααΆαβαα·α αα½α α
αα·ααΈααΆαααααααΆααααα·α αααα»αα
αααααΆααα·ααΈααΆαααααααΆαααα·α αααα»α αααααΆααα½αααααΌαααΆαααααΆαααααΆαααα αα αα ααααααααα’αα»ααααΆαα±ααα’ααααααααΆαααΆααα»αα αααα αα·ααα αααααααααΆαααααα·αααΎαα½αααααΆααααααΆαααα»αα α§ααΆα αααααααα·αααΎαααα»αααααΈαα½α αααααΆαααΊ +5 (ααΌαααααΆα) αα·ααα½αααα -5 (ααααααΆα) αααααΆααααααααΌααααααααΆαααΉααα»αα ααααααΆαα αα·ααα αα α αΎαααΆαα ααα½αααα 0 (ααΌααα)α ααΆαα·αα’αΆα αα αα½α αααααα»αααΆαααααααααααΆαααα»ααααααΎααααΈααααΎαααααααααααααα·αααααΌαα»αα αΎααααααΆαααααααααΆαααΆααα’ααααΉαααΆαααΆααα·αααααΆαα αΎαααΉααααα»αα ααΎαααΉααα·αααααα ααΎα ααα»α αααα±ααααΆαααα’α·ααα ααα»ααααααααΆαααααααα αΆαααΆ ααΎααααΈααΆαααΆααααα½αααααΆαααααΆ ααΆααΆαααααΆαααααα»αααΆαααΆαααααααΆαααΈααααΆααΆααΆαααα
αααααΊααΆα’αααΈαααααΌαααααααΎααα ααΌα αααααΎαααΉααααααααααΌααα·α αααα»ααααααααΆαααΆαα (ααα α»α):
αααααΆααααααααα ααΊααΆαα»αααΆαααααΆααααΆααααααΆαα ααααΎααα·α (αααααΊα αααΌααααααΎαααααΆ)
ααΊααΆα ααααΎααα·α (α αααΌααααααΆαααααααααα»αααααΌ)
ααΊααΆαααααααααααααΌ (α ααα½αααααααααααΆαααααΌαααΆαααααα)
α αΌαααΎααααα αααα»αααΆα ααααααααΈααΆαααΈααααααααααααααααααα α αΎαααααααααα½αααΎααααΈαααααα αααααααααΆααα·ααΆαα ααα»ααααααΆααααΌα α αΌαααΎαααΎαααααααΎαααααΆαααααααΈαα½αα’αααΈααΆααα»αααααΆααααΆααα»αααααΆ α αΎαα αα αΆαα’ααααααααααΈααΆαααααααααΈααα
ααΆααα»αααααΆ
ααΆααα»αααααΆααΊααΆααααα·ααααα·ααΆαααααΆααααααααααααΈααααα’αα»αααααα½αα
ααΎααααΈααααααΎαααααΆααα’αααΈ? ααααΈααααα’αα»αααααααααα’ααααΆααααΆαααααΆααααααΌααα»αααΆα αα·αααααΆααααΎαααΈαα·ααα ααααααΆα ααααα·αααΎααααΈαααα α ααα»α αα½αααΊαα·αααααΆα ααααα»αααΆαααΉαααΎαα‘αΎα ααΎαα·αααΌα αααααα αα»αααΆαααΉαααα α»αα α αΎααααααααΆααααααααααααΈααααααΆα αααΆα α’ααααΆααααΆαααααΆααααααΌαααααααα»αααΆαααΆααααααααα ααααΌα ααΆαααααΆαααααααΆα ααα’αα»ααααααΆαααααααααα
α§ααΆα ααα αα αααααααααααααααααααααααααΌα’ααααα Cartesian αααααααααααΈαααα α ααα»α M(0,0) ααΊααααΎααΉα +25 ααΆαβαααβααΆβαα βα ααα»α βαα½αβαααβααΆαβαααααβα±ααβαα βαααβαααβαααααβααααΌαβααΆαβααααΆααβααααΌβαβ αα ααΆαααααΆααααα―αααΆααααααΆ ααααα ααΎαα‘αΎα 25 α―αααΆααααααΆα αα ααΎααααΆα ααααΆααΎααα ααΌα ααΆααΆαααΎαα‘αΎααααΆαααααΆααααααααα ααΈα ααα»α αααααΆααααααα±ααα
α§ααΆα ααααα½ααααα αααααααααΈααααΊααααΎααααΆ -0,1 ααΆααααααΆαα αααααααΆααααΈαααα αααα»ααα½αα―αααΆααααααΆ ααααα ααα α»αααααΉααα 0,1 α―αααΆααααααΆα αααα»ααααααΆαα½αααααΆααα αα ααΎααααΆα αααααα»αααΆα ααΎαα’αΆα ααααααααΎααααααΆαα α»ααααααααααα½αα±ααααααααααΆααα ααΌαααΆαααααααααααΆααΆαα½ααααααα½α ααΆααΌα ααΆααΎααααα»αα α»ααααααΆαααααααααααααΈαααααα½α αα·αααΌα α§ααΆα ααααα»α αααααΎαααααΌαα‘αΎαααααΌαααααααα ααααααΆαα :)
ααΌα αααααααααΆααααΈαααα αααα»αααΆα αααα αΆαααα ΠΈ ααΎαααααααααΈααΆαααΈααααααααααααααααααααΆααααΈ 1 α αααααΆααααΈααααααααΈααΆα ααΎαααΉαααα½αααΆααααααααααααααΈααΆαααΈα ααααααααααααΆααααααΎαααΉαα’αΆα ααααΎαααΎαααααααααααα»α ΠΈ αααααααααααα·ααααααααααα»αααααααΌαααααΆαα α ααα»α αααααΆααααααα±ααααααΆααααααΌααααα ααα½ααα·α αα½α αααα»α α αΎααααα»αααααΈαααααααααααΆααα·ααΆααα·αααααΆααααααΌαααΆαααααααα αααααΆααα·αααα αα»αααΆαααα α»ααα αααα»ααααααΆαααααΎαααΉαααΆααααααααα·αα’αααααααΆ αααα ααα»ααΆαααααααααααΈαααααααααααα α ααα»α ααΆαααααααΉαααααΎααΉαααΌαααα
ααΌα ααααααααα ααΆαα αααΆααααααΆααα»αααααΆ αααΈααΆαααααΈααααααααααααααααΆααααΈ 1 ααΆααααααΉααααα»α ααΉαααααααααα
αααΈααΆαααααΈααααΆαααααααΆααααΈ 1 ααΆααααααΉα ααΉαααααααααα
ααΆαααααα ααΎαααΆαααα½ααααααααααααααΈααΆααααααΆααααααααααΆααα·ααΆαααααΆαααααα½αα
α
αΆααααααΎα{αααΈααΆα*}
α
αΆααααααΎα{cases}
na + bsumlimits_{i=1}^nx_i β sumlimits_{i=1}^ny_i = 0
sumlimits_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i β sumlimits_{i=1}^ny_i) = 0
αααα
αα{cases}
αααα
αα{αααΈααΆα*}
αα»αααΉααααααααΆααααΈααΆα α αΌαααΎααααα»αααΆαα»α αα·αα·αααααΎαααΆααΆααααα»αααααΉαααααΌα αα·αααααΎαααααααααΆααα·ααααααα
αααα»ααααα»α αα·αααααΎαααααααααΆααα·αααααα
ααΆαα½αααααααΌαααΆαααααααααΆααααΆαααααΆαααααΆααα·ααααααΆαααααΆαααααααααααΆααα·ααΆααα·αααΆαααααααααΆαααααααΆαα gradient αα·α stochastic gradient descent ααΎαααΉαααααΎααΌααα αααα»ααααααααα½αααΈα: ααΆαααααΎααααΆαααααααΆααα ααΆαααΈ α αΎαααααα·αααααΎααΆ αααααΎαααΉαααααΌαααΆαααΆαααααΎαααααααααΆααα·αααααααααααα (ααΌαααΎαααΌα)α
ααΌααααα»α αα·αααααΎαααΆααα·αααααα
# ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math
import pylab as pl
import random
# Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΠΌ Π² Jupyter
%matplotlib inline
# ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠ²
from pylab import rcParams
rcParams['figure.figsize'] = 12, 6
# ΠΎΡΠΊΠ»ΡΡΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Anaconda
import warnings
warnings.simplefilter('ignore')
# Π·Π°Π³ΡΡΠ·ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
table_zero = pd.read_csv('data_example.txt', header=0, sep='t')
# ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈ Π½Π° ΡΠ°ΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ
print table_zero.info()
print '********************************************'
print table_zero
print '********************************************'
# ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ NumPy
x_us = []
[x_us.append(float(i)) for i in table_zero['x']]
print x_us
print type(x_us)
print '********************************************'
y_us = []
[y_us.append(float(i)) for i in table_zero['y']]
print y_us
print type(y_us)
print '********************************************'
# ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ NumPy
x_np = table_zero[['x']].values
print x_np
print type(x_np)
print x_np.shape
print '********************************************'
y_np = table_zero[['y']].values
print y_np
print type(y_np)
print y_np.shape
print '********************************************'
ααΆαααΎαααΎα
α₯α‘αΌαααα αααααΆααααΈααΎαααΆααααα»ααα·ααααααααααΌα ααΈααΈααα·αα·αααααΆαααααΉαααααΌαααααΆααααα»α α αΎαα α»ααααααααααΎαααααααααΆααα·αααααα ααΎαααΉαα’αα»ααααααΆαααΎαααΎαααααΌαα αα·ααΈααΆααααααααααααΌαααΆαααααΎααΆααΉαααΆαααααααΆααααΆααααααΊ αααααααΌ αααααΆααα ααααΆα. αααα»αβα§ααΆα αααβααααβααΎα αααααΆαβα ααα½αβααΆαβααααα ααΆβααααΆαβα ααα»α βαααα»αβααΆαβααααΎβαααααΆαααβααα ααααΆα. ααΎαααΉαααααΎαααααΆαααααααααΆα αααΆααααααΌααΈα α αΎαααααΆαααααααα‘ααααΎααααααα
ααΌα Scatterplot
print 'ΠΡΠ°ΡΠΈΠΊ β1 "ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π²ΡΡΡΡΠΊΠΈ ΠΎΡ ΠΌΠ΅ΡΡΡΠ° Π³ΠΎΠ΄Π°"'
plt.plot(x_us,y_us,'o',color='green',markersize=16)
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.show()
ααΆααΆαααΈ 1 "ααΆαααΉαααα’ααααααααΆααα αααΌααααα αΆαααααααααΆα"
αααααααααΆααα·ααΆα
α αΌαααΎαααααΎα§αααααααΌαα αααα»ααα αααα»α αααααααΆαα αα·ααααααααΆααααααααααααΈααΆαα
α
αΆααααααΎα{αααΈααΆα*}
α
αΆααααααΎα{cases}
na + bsumlimits_{i=1}^nx_i β sumlimits_{i=1}^ny_i = 0
sumlimits_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i β sumlimits_{i=1}^ny_i) = 0
αααα
αα{cases}
αααα
αα{αααΈααΆα*}
ααααα ααΆαα αααΆαααααα Cramer ααΎαααΉαααααΎααααααΆαααααααΌαα ααααΌα ααΆαααααΆαααααααα αα·αααα αααααΆαααααααα αααααααΆαααααααα αα αααααΆαααααααΌαα - ααααααααααα»α ααααααααααΆαααααα ααΎαααααΎααααα»α .
ααΌααααααααααΆααα·ααΆα
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² a ΠΈ b ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Ρ ΠΡΠ°ΠΌΠ΅ΡΠ°
def Kramer_method (x,y):
# ΡΡΠΌΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π²ΡΠ΅ ΠΌΠ΅ΡΡΡΠ°)
sx = sum(x)
# ΡΡΠΌΠΌΠ° ΠΈΡΡΠΈΠ½Π½ΡΡ
ΠΎΡΠ²Π΅ΡΠΎΠ² (Π²ΡΡΡΡΠΊΠ° Π·Π° Π²Π΅ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄)
sy = sum(y)
# ΡΡΠΌΠΌΠ° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΈΡΡΠΈΠ½Π½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ
list_xy = []
[list_xy.append(x[i]*y[i]) for i in range(len(x))]
sxy = sum(list_xy)
# ΡΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
list_x_sq = []
[list_x_sq.append(x[i]**2) for i in range(len(x))]
sx_sq = sum(list_x_sq)
# ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
n = len(x)
# ΠΎΠ±ΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ
det = sx_sq*n - sx*sx
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΏΠΎ a
det_a = sx_sq*sy - sx*sxy
# ΠΈΡΠΊΠΎΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ a
a = (det_a / det)
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΏΠΎ b
det_b = sxy*n - sy*sx
# ΠΈΡΠΊΠΎΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ b
b = (det_b / det)
# ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΏΡΠΎΠΎΠ²Π΅ΡΠΊΠ°)
check1 = (n*b + a*sx - sy)
check2 = (b*sx + a*sx_sq - sxy)
return [round(a,4), round(b,4)]
# Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ
ab_us = Kramer_method(x_us,y_us)
a_us = ab_us[0]
b_us = ab_us[1]
print ' 33[1m' + ' 33[4m' + "ΠΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² a ΠΈ b:" + ' 33[0m'
print 'a =', a_us
print 'b =', b_us
print
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΡΠΌΠΌΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ
def errors_sq_Kramer_method(answers,x,y):
list_errors_sq = []
for i in range(len(x)):
err = (answers[0] + answers[1]*x[i] - y[i])**2
list_errors_sq.append(err)
return sum(list_errors_sq)
# Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ
error_sq = errors_sq_Kramer_method(ab_us,x_us,y_us)
print ' 33[1m' + ' 33[4m' + "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ" + ' 33[0m'
print error_sq
print
# Π·Π°ΠΌΠ΅ΡΠΈΠΌ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΡΠ΅ΡΠ°
# print ' 33[1m' + ' 33[4m' + "ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ΅ΡΠ° ΡΡΠΌΠΌΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
# % timeit error_sq = errors_sq_Kramer_method(ab,x_us,y_us)
αααααΆα’αααΈαααααΎαααα½αααΆαα
ααΌα
ααααααααααααααα»αααααΌαααΆαααααΎαααααΌααααααααΆαααΆααααααΌαααΆααααααΎαα‘αΎαα α
αΌαααΌααααααΆααααααααα
ααΎα’ααΈααααΌααααΆααααααα
αΆααααα
αΆααααα’αα»αααααΆααααα»ααααααΆαααααΎαα
ααΌααααααΆααααααααααα
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ°ΡΡΡΠ΅ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΡΡΡΠΊΠΈ
def sales_count(ab,x,y):
line_answers = []
[line_answers.append(ab[0]+ab[1]*x[i]) for i in range(len(x))]
return line_answers
# ΠΏΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊΠΈ
print 'ΠΡΡΠΈΠΊβ2 "ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΈ ΡΠ°ΡΡΠ΅ΡΠ½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ"'
plt.plot(x_us,y_us,'o',color='green',markersize=16, label = '$True$ $answers$')
plt.plot(x_us, sales_count(ab_us,x_us,y_us), color='red',lw=4,
label='$Function: a + bx,$ $where$ $a='+str(round(ab_us[0],2))+',$ $b='+str(round(ab_us[1],2))+'$')
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.legend(loc=1, prop={'size': 16})
plt.show()
ααΆααΆαααΈ 2 βα ααααΎαααααΉαααααΌα αα·αααααΆβ
α’αααα’αΆα
ααΎαααααΆα αααααααΆααααααΆααααααΈαα½ααα αααα»αααααΈααααααΎα ααΎαααΉααα·αααα½αααΆααααααααΆαααααααααααΆαααααΆαα½αααΈααΆαα ααα»ααααααΎαααΉααααααααΆαα
ααααΉαα
ααααΎαααααααΎαα’αααΈααααααααααΈααΆααααααααααααΈααα’αααααΆαααααααααααααααααααΆαααΉαααα’ααααααααΆααα
αααΌααα
ααΎααααααααΆαα
ααΌαααααΌαααΆααααααΆα
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ Π² ΠΏΡΠΎΡΠ΅Π½ΡΠ°Ρ
def error_per_month(ab,x,y):
sales_c = sales_count(ab,x,y)
errors_percent = []
for i in range(len(x)):
errors_percent.append(100*(sales_c[i]-y[i])/y[i])
return errors_percent
# ΠΏΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊ
print 'ΠΡΠ°ΡΠΈΠΊβ3 "ΠΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΏΠΎ-ΠΌΠ΅ΡΡΡΠ½ΠΎ, %"'
plt.gca().bar(x_us, error_per_month(ab_us,x_us,y_us), color='brown')
plt.xlabel('Months', size=16)
plt.ylabel('Calculation error, %', size=16)
plt.show()
ααααΌαααΆαααα 3 βαααααΆα, %β
αα·αααα’α₯αααα
αααα ααα»ααααααΎαααΆααααα
ααααΆααα·α
αα
ααααααΎαα
α αΌαααΎααααααα’αα»αααααααααΎααααΈααααααααα»α ΠΈ ααααΎαααααΆααα ααΆαααΈααΆααααα αααΆαα ααΎαααΉαααααααα»αααΆαααΈαα αα½αααααΎαααΆααααΈα pseudoinverse (αα·αααααΌαααΆαααααΆααααα»αααΆαα’αα»αααααα αααααΆαααααΎαααΆαααΊαααα»αααααΆααααα»αααΆαααααΆ αα·ααα·αααΆααααααααΆα) αα½ααααααααΎαααΈααΆααααΆααααΈαα
ααΌααααααααααΆααα·ααΆα (NumPy)
# Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠΎΠ»Π±Π΅Ρ Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² 1.
# ΠΠ°Π½Π½ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΊΠΎΡΡΡΠΈΡΠ΅Π½Ρ a
vector_1 = np.ones((x_np.shape[0],1))
x_np = table_zero[['x']].values # Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π² ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π²Π΅ΠΊΡΠΎΡ x_np
x_np = np.hstack((vector_1,x_np))
# ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ
print vector_1[0:3]
print x_np[0:3]
print '***************************************'
print
# Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² a ΠΈ b Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ
def pseudoinverse_matrix(X, y):
# Π·Π°Π΄Π°Π΅ΠΌ ΡΠ²Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²
X = np.matrix(X)
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ
XT = X.T
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ
XTX = XT*X
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ
inv = np.linalg.pinv(XTX)
# Π·Π°Π΄Π°Π΅ΠΌ ΡΠ²Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΎΡΠ²Π΅ΡΠΎΠ²
y = np.matrix(y)
# Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ Π²Π΅ΠΊΡΠΎΡ Π²Π΅ΡΠΎΠ²
return (inv*XT)*y
# Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ
ab_np = pseudoinverse_matrix(x_np, y_np)
print ab_np
print '***************************************'
print
# Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
def matrix_equation(X,y):
a = np.dot(X.T, X)
b = np.dot(X.T, y)
return np.linalg.solve(a, b)
# Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ
ab_np = matrix_equation(x_np,y_np)
print ab_np
α αΌαααΎααααααααααααααααΆαααααΆαα αααΆαααΎααΆαααααααααα»α ΠΈ α’αα»αααααΆααα·ααΈααΆαααααα ααα½α α£ αααααΆααααα αΆαα
αααααΌααααααΆααααααΆαααααααΆααααΆ
print ' 33[1m' + ' 33[4m' + "ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ΅ΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy:" + ' 33[0m'
% timeit ab_us = Kramer_method(x_us,y_us)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ΅ΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ:" + ' 33[0m'
%timeit ab_np = pseudoinverse_matrix(x_np, y_np)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ΅ΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ:" + ' 33[0m'
%timeit ab_np = matrix_equation(x_np, y_np)
ααΆαα½αααΉαα
ααα½ααα·αααααααα·α
αα½α
αα»αααΆα "αααααααααααα½αα―α" α
αααααα»α αααααααΎααααα»ααααααααΎαα·ααΈααΆααααααααα Cramer α
α₯α‘αΌααααα’αααα’αΆα αααααα αα·ααΈααααααααααΎααααΈααααααααααα»α ΠΈ .
αααααΆααααααΆα
ααΆααααΌα α αΌαααΎααααααααΆααΎαααααΆαααΊααΆα’αααΈα αα·ααΆαα±ααααΆαααα αααααΆαααΊααΆαααααααααααα αΆαααΈαα·ααα ααααΆαααΌαααΆααα’αα·ααααΆαααα»αααΆααα½αα αααααΆαααααααααααΆααΆαα½αααΉαααΆαα‘αΎααααα ααααααααΆαααααα»ααα αααααααααα αααααα»ααα ααααΌαααααα ααΆααααααΎαα§ααΆα αααααΆαα½αααααααΎαα αα αΆαααΆααΆααα·αααΎαααααΌαααΆααααααΆααααααααα»αααΎααααΈαα αααααΈααααΆαα±ααααΆαααΏαααΆααααα’αΆα ααααΎαα ααΆα αααααΊα’αααααααΆ - ααααααααααα»αααΆααα·αααΎαα‘αΎαα¬ααα α»αα αα α ααα»α ααα ααααΈααααΉαααααΎααΉαααΌαααα ααΌα ααααβα αΎα ααΎαβαα·αβααααΌαβααΆαβαααβαααααΆαβαα ααα»ααααβααΆβααΆαβαααααΆααβααΉαβαααβα ααΎααααΈααααααα antigradient α’αααααααΆααααααααΌααα»ααααααΆαααα -1 (αααα½α) α
α αΌαααΎαααα α·ααααα»αααΆααααΎααΆααα·ααααααΆαα»αααΆααα½αα’αΆα ααΆαα’ααααααΆααΆα αααΎα α αΎαααΆαα α»ααα αααα»ααα½ααααα»αα αααααα½αααΆαααααααΎαααα½ααααααααΆααααααΆαααααΎα‘αΎαααΆαααααα ααΎαααΉααα·αα’αΆα αααααααα’αααααααΆαααααααααααα’αΆα ααΆαααΆαα’αααΈαααααΆαααααΎααααααα αααααΆαβα α»α αααβαα·αβαααβααΆβααΆαβααααΆαβααα ααβαααβααΎαβαα! αααα»αααααΈααααααΎα ααΎααααα»ααααααααΆαααΆαα½αααΉαα’αααααααΆαααα½α α αΆααααΆααααΈαα»αααΆαααααααΎαα αα ααΎααααΆα ααααΊααΆαααΆαααΆααΌα‘αΆααααααΆα α αΎαααΌα αααααΎαααΆααα’ααααααΆαα½αααααΉααααΆαα αααΆααααΈαααααα·ααααΆααα·ααα·ααααΆααααααΆααΆααααααΎα αααΆαααΆααΌα‘αΆααΆαα’αααααααΆαααα½αααα»αααααα
αααααΆααβααΈβααΎαβααΆαβααβααΎαβααΆβα ααα»βα’αααΈβααΆαβααΆβααΎαβααααΌαβααΆαβαααααΆαβαα½α α αΎαβααβααΆβαααααΆαβααΊβααΆβαααααβαα½α αααβααΊβααΆβααα·α αααβαααβααΆαβααΌα’αααααβαααβααΆαβαααααβα±ααβαααβααΆβαααα»αβααΌα ααααΆβαααΆαβααΆααααΆααα ΠΈ ααΎαα’αΆα α’αα»ααααααΆαα α»ααααααΆαα
αα»ααααα αΆααααααΎααααα»αααααΎα±ααα’αΆαααααααααΈαααΈα’αααΈαααα½ααααααααΆαααΆαααααααΌαα
- ααΎαααααααααα»ααααααα pseudo-α ααααα ααΌα’ααααααααααα»α ΠΈ . αααα»αα§ααΆα αααααααααΎα ααΎαααΉαααααααααα»ααα αα·αααΌαααα αααβααΆβαααααΆααβααααααΆ ααα»ααααβααααΈβααΈαα½ααβα’αΆα βααΆαβααΆαα’αα»ααααβααααβαααα½αα
- ααΈααΌα’ααααα αααααααααααααΈααααΆαααααααΆααααΈ 1 αα α ααα»α . ααΌα ααααααααα·αααΎααααΈααααΊαα·αααααΆα ααααα»αααΆαααΉαααΎαα‘αΎαα ααΌα αααααααααΆααααααααααααααΈαα ααΎαααΉαααααΆααααΈαααα»ααα·ααα αααα»αααααΆαααΌαααΆαα αααααΊαααα»ααα·ααα αααααααΌαα ααααα·αααΎαα·ααααααααααα»α’αα·αααααΆα ααααα»αααΆααα α ααα»α αααααα α»α α αΎααααααΆααααααααααααααΈααααΈα ααΎαααααΆααααΈαααα»ααα·ααα αααααααΌαα
- ααΎαα’αα»ααααααααα·ααααα·ααΆαααααααααααΆααΆαα½αααΌα’ααααα α αααααααααααααΈαααααααααααα α ααα»α .
- ααΎααααΈαα»αα±αααααααΈααΎα’ααααααΆα αΎαα ααα αΎαα αΌααα αααα»αααα αααααα ααΆα αΆαααΆα αααααΌααααααααα αααα αΆααααα»ααα·ααα ααααΆαα α»αα ααΆααΌαα α’αααα’αΆα αααααα’αααααααΆααααΌαα’αααΈαααααααααααα αΆαα±ααααΆαααααΉαααααΌα αα·αααααααααΆααααααΌαααΆαααα»αα’αα‘α»ααααααααΎαααΆαα α»ααααα»ααααααααααΆαααααααααΆαα αααΆαααΎααΆαααααΆα ααα»ααααα₯α‘αΌαααα ααΎαααΆαααΆααα·α αα αα»αααααΆααααα·α ααααα½α α αΎαααΎαααΉααααααΎαααα αααα αΆααααααααΎαα·ααΈααΆααααααα·ααααΆααΆααααααα "poke" α¬ααΌα ααααα½ααααα·ααΆααα αααα»αααΆααα·ααΆαααΌαα ααΆαααααααα
- αα ααααααααΎαααααΈααΌα’ααααααααααΆααααααα±αα ΠΈ ααααααααααα·ααααααααααα» ααΎαααα½αααΆαααΌα’αααααααααΈα ΠΈ . ααΎαα’αα»ααααααα αΆααααααΆαα (αα) αα½α α αΎαααΈααΌα’ααααααααααΆαααααΆα ααΌα ααααα αΎα αααααααα αΆααααααΎαααααα αΎαααααααα αα αΌααααααΆαααααα½αααααα½ααααααααΌαααΆαααααΌαααΆααααααα α
ααΆααα’αα! α₯α‘αΌαααα ααΎαααααααα½α ααΆααα αΎα ααΎααααΈαααααααααααααααα αααα»αααααααα Mariana Trenchα αααβα αΆααααααΎαα
ααΌααααααΆααααΆαα α»ααααααΆα
# Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy.
# Π€ΡΠ½ΠΊΡΠΈΡ Π½Π° Π²Ρ
ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ x,y, Π΄Π»ΠΈΠ½Ρ ΡΠ°Π³Π° (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ=0,1), Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡ(tolerance)
def gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001):
# ΡΡΠΌΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π²ΡΠ΅ ΠΌΠ΅ΡΡΡΠ°)
sx = sum(x_us)
# ΡΡΠΌΠΌΠ° ΠΈΡΡΠΈΠ½Π½ΡΡ
ΠΎΡΠ²Π΅ΡΠΎΠ² (Π²ΡΡΡΡΠΊΠ° Π·Π° Π²Π΅ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄)
sy = sum(y_us)
# ΡΡΠΌΠΌΠ° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΈΡΡΠΈΠ½Π½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ
list_xy = []
[list_xy.append(x_us[i]*y_us[i]) for i in range(len(x_us))]
sxy = sum(list_xy)
# ΡΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
list_x_sq = []
[list_x_sq.append(x_us[i]**2) for i in range(len(x_us))]
sx_sq = sum(list_x_sq)
# ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
num = len(x_us)
# Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
a = float(random.uniform(-0.5, 0.5))
b = float(random.uniform(-0.5, 0.5))
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, Π΄Π»Ρ ΡΡΠ°ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 1 ΠΈ 0
# ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΏΡΡΠΊΠ° ΡΡΠ°ΡΡΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΄Π°Π»ΠΈΠΌ
errors = [1,0]
# Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠΈΠΊΠ» ΡΠΏΡΡΠΊΠ°
# ΡΠΈΠΊΠ» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠΌΠΌΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ tolerance
while abs(errors[-1]-errors[-2]) > tolerance:
a_step = a - l*(num*a + b*sx - sy)/num
b_step = b - l*(a*sx + b*sx_sq - sxy)/num
a = a_step
b = b_step
ab = [a,b]
errors.append(errors_sq_Kramer_method(ab,x_us,y_us))
return (ab),(errors[2:])
# Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
list_parametres_gradient_descence = gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001)
print ' 33[1m' + ' 33[4m' + "ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_gradient_descence[0][0],3)
print 'b =', round(list_parametres_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π² Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠΏΡΡΠΊΠ΅:" + ' 33[0m'
print len(list_parametres_gradient_descence[1])
print
ααΎαααΆαα
α»ααα
ααΆααα Mariana Trench α αΎααα
ααΈαααααΎαααΆαααααΎαααααααααα»αααΌα
ααααΆααΆααα’ααα ΠΈ αααααΆα’αααΈαααααααΌαααααΉααα»αα
ααααα αα»ααα½αααα ααΆαααααΎαααααα ααΆααααα·αααΉααααα ααααααΎαααΉαααααααααααα αα αααα·ααααΆαααααα αααααΊαααααΆααα ααΆαααΈ.
αααααΌααααααΆααα α»ααααααΆα (NumPy)
# ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy,
# Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΌΠΌΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ NumPy
def error_square_numpy(ab,x_np,y_np):
y_pred = np.dot(x_np,ab)
error = y_pred - y_np
return sum((error)**2)
# Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy.
# Π€ΡΠ½ΠΊΡΠΈΡ Π½Π° Π²Ρ
ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ x,y, Π΄Π»ΠΈΠ½Ρ ΡΠ°Π³Π° (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ=0,1), Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡ(tolerance)
def gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001):
# ΡΡΠΌΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π²ΡΠ΅ ΠΌΠ΅ΡΡΡΠ°)
sx = float(sum(x_np[:,1]))
# ΡΡΠΌΠΌΠ° ΠΈΡΡΠΈΠ½Π½ΡΡ
ΠΎΡΠ²Π΅ΡΠΎΠ² (Π²ΡΡΡΡΠΊΠ° Π·Π° Π²Π΅ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄)
sy = float(sum(y_np))
# ΡΡΠΌΠΌΠ° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΈΡΡΠΈΠ½Π½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ
sxy = x_np*y_np
sxy = float(sum(sxy[:,1]))
# ΡΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
sx_sq = float(sum(x_np[:,1]**2))
# ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
num = float(x_np.shape[0])
# Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
a = float(random.uniform(-0.5, 0.5))
b = float(random.uniform(-0.5, 0.5))
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, Π΄Π»Ρ ΡΡΠ°ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 1 ΠΈ 0
# ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΏΡΡΠΊΠ° ΡΡΠ°ΡΡΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΄Π°Π»ΠΈΠΌ
errors = [1,0]
# Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠΈΠΊΠ» ΡΠΏΡΡΠΊΠ°
# ΡΠΈΠΊΠ» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠΌΠΌΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ tolerance
while abs(errors[-1]-errors[-2]) > tolerance:
a_step = a - l*(num*a + b*sx - sy)/num
b_step = b - l*(a*sx + b*sx_sq - sxy)/num
a = a_step
b = b_step
ab = np.array([[a],[b]])
errors.append(error_square_numpy(ab,x_np,y_np))
return (ab),(errors[2:])
# Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
list_parametres_gradient_descence = gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001)
print ' 33[1m' + ' 33[4m' + "ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_gradient_descence[0][0],3)
print 'b =', round(list_parametres_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π² Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠΏΡΡΠΊΠ΅:" + ' 33[0m'
print len(list_parametres_gradient_descence[1])
print
ααααααααα»α ΠΈ αα·αα’αΆα
ααααΆααααααΌαααΆαα
ααΌααααα‘ααααΎαααΈαααααααααα α»αααΆαααααΆααααααΌαα’αα‘α»ααααα α»ααααααΆα αααααΊαααααααααααΌααααααααΆαααΆαααααΆαααααΆααααααΌαααΆαα½αααΉαααα αΆαααΈαα½ααα
ααΌααααααΆααααΌαααααΌααααααααΆαααΆααα
print 'ΠΡΠ°ΡΠΈΠΊβ4 "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-ΡΠ°Π³ΠΎΠ²ΠΎ"'
plt.plot(range(len(list_parametres_gradient_descence[1])), list_parametres_gradient_descence[1], color='red', lw=3)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
ααααΆα ααααα 4 βααααΌααααααααΆαααΆαααααα‘α»ααααα α»ααααααΆαβ
αα
ααΎααααΆα αα ααΎαααΎαααΆααΆαα½αααΉαααα αΆαααΈαα½αα ααα α»αααα
α»α α αΎααααααΆααααΈα
ααα½αααΆααααΆααααααΆαααααΎααααααα ααΎαααααααααΎααααααΆααααααΎααααααααα
ααΆα α»αααααα α αΌαααΎααααΆααααααΆαααΆααα»αααααΆαααααααααΆααααα·ααααα·ααΌαα
ααΌαααΎααααΈααααααααααααΆααααΆα α»ααααααΆααααααΆα
print ' 33[1m' + ' 33[4m' + "ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy:" + ' 33[0m'
%timeit list_parametres_gradient_descence = gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy:" + ' 33[0m'
%timeit list_parametres_gradient_descence = gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001)
αααα ααβααΆβααΎαβαααα»αβααααΎβα’αααΈβαα½αβαα»α ααα»ααααβααΆβααΆβαα»αααΆα "αααααβααΆαβαααα" ααααααΆβαααβαα·αβααααΎβαααααΆααα ααΆαααΈ ααααΎαααΆαααΎαααΈαααααααΆααααΆαααα»αααΆααααααααΎαααααΆααα ααΆαααΈ.
ααα»ααααααΎααα·ααααα ααααααα ααα»αααααααα»αααααααα ααααΆααα·ααααΆαα·ααΈαααα½αα±ααααααΎααα½αααααααααααΎααααΈαααααααΆααααΈααΆααααααααααααΈααα’αααααΆααααα αα½αααααΆ!
ααΆαα α»ααααααΆα Stochastic
ααΎααααΈαααααΈαααααΆαααααααααα·ααααα·ααΆααααααααΆααααααΆα stochastic ααΆααΆααΆαααα’αααααΎαααΆααα»αααΎααααΈαααααααΆααα»αααααΆααααααΆααΈααΆαα α»ααααααΆαααααααΆα ααΎααα αααα»αααααΈαα gradient descent αα αααα»ααααΈααΆαααααααΈαααα ΠΈ ααΆαααααΎααααΌαααααααααααααααααα·αααααΆααα’αα αα·αα ααααΎααα·ααααααΆααα αααα»αααααΌ (αααααΊααααΌαααααΆααα’αα ΠΈ ) αα αααα»α stochastic gradient descent ααΎαααΉααα·αααααΎαααααααΆααα’αααααααΆααα αααα»αααααΌααααα ααα»αααααααα»ααα αα·α pseudo-random ααααΎαααΎαα’αααΈαααααα α ααΆαααααααααααααΌ α αΎαααααΎαααααααααααΆα
α§ααΆα ααα ααααα·αααΎαααααααααααααΌαααΆααααααααΆααα 3 (ααΈ) αααααΎαααααααα ΠΈ αααααΆααααααΎααααα½αααααααα αααα»ααααΈααΆαααααΈαα αα·ααααααααΌα’αααααααααΈα αααααΆαααα αααααΆααααααααΌα’ααααα ααΎααααααααααααααααααααααααααΌαααα ααααα αααα½αααααααααααααΌαααααΆααΉααα·αα·αααααα αααα»ααααΈααΆαααΈαααααααααααααααα αα·ααααααααΌα’αααααααΆααα·ααΈααααΈαα½αα ΠΈ αα αα αΌααααααΆααααα αΌαααααΆαααααα ααΆαααααααα αα glance ααααΌα ααΆα’αΆα α αΆααααΌα ααΆααΆαα·αααααΎαααΆαααΆααααααα ααα»ααααααΆααααΎααΆαα ααΆααΆααΆααα·ααααααΆααΆαα½αα’αααααααααΆααααΆααα α»ααα·αααα α»αααΆαα½ααααααααα αΆαααααα»αααααα·αααΆααΆααααααα
ααΎα’αααΈαα ααΆαα»ααααααααα·ααααΆαα α»ααααααΆα stochastic ααΆαααααααΆ? ααααα·αααΎααα αααααΌααααααΎαααΆαααα αααααΆαα α αΎαααααΌαααΆαααΆααααΆαααααααΆαααααΊα αααααΆααΆααααααΆααααα½ααααα»αααΆαααααΎαααΆα αα·ααΆαααΆ αα½αααΆαααααα ααααα ααΆααΆαααααΌααΆααααΌαα αααααΊααΆαααααααααααΆαα α»ααααααΆα stochastic α αΌααααααα ααΆβααΆαβαα·αβααΆααβαααα»αβααααΈβααααβααΎα ααΎαβααΉαβαα·αβαααααΆααβααΎαβααΈβααΆαβαα»αβααααΆβα αααΎαβααα
αααααΎαααΌαα
ααΌααααααΆααααΆαα α»ααααααΆα stochastic
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΎΡ
.Π³ΡΠ°Π΄.ΡΠ°Π³Π°
def stoch_grad_step_usual(vector_init, x_us, ind, y_us, l):
# Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ind
# (ΡΠΌ.Ρ-ΡΠΈΡ stoch_grad_descent_usual)
x = x_us[ind]
# ΡΠ°ΡΡΡΠΈΡΡΠ²ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ y (Π²ΡΡΡΡΠΊΡ), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ x
y_pred = vector_init[0] + vector_init[1]*x_us[ind]
# Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ°ΡΡΠ΅ΡΠ½ΠΎΠΉ Π²ΡΡΡΡΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π² Π²ΡΠ±ΠΎΡΠΊΠ΅
error = y_pred - y_us[ind]
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ° ab
grad_a = error
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²ΡΠΎΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ab
grad_b = x_us[ind]*error
# Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ Π²Π΅ΠΊΡΠΎΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ²
vector_new = [vector_init[0]-l*grad_a, vector_init[1]-l*grad_b]
return vector_new
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΎΡ
.Π³ΡΠ°Π΄.ΡΠΏΡΡΠΊΠ°
def stoch_grad_descent_usual(x_us, y_us, l=0.1, steps = 800):
# Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ²
vector_init = [float(random.uniform(-0.5, 0.5)), float(random.uniform(-0.5, 0.5))]
errors = []
# Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΠΈΠΊΠ» ΡΠΏΡΡΠΊΠ°
# ΡΠΈΠΊΠ» ΡΠ°ΡΡΠΈΡΠ°Π½ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π³ΠΎΠ² (steps)
for i in range(steps):
ind = random.choice(range(len(x_us)))
new_vector = stoch_grad_step_usual(vector_init, x_us, ind, y_us, l)
vector_init = new_vector
errors.append(errors_sq_Kramer_method(vector_init,x_us,y_us))
return (vector_init),(errors)
# Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.1, steps = 800)
print ' 33[1m' + ' 33[4m' + "ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΡΠΎΡ
Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠΏΡΡΠΊΠ΅:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
ααΎααααα‘ααααΎααααα»αααααααα»ααααααααα α αΎαα
αΆαααααα½αααΎαααααα½ααααα½αααΆ "ααΎααΆα’αΆα
αα
ααΆαααΆαααΆ?" ααΎαααα½αααΆαααααααααα»αααααααααα ΠΈ . αααα ααααΆ stochastic gradient descent ααΆαααααΎααααΆαααΆααααααααα’αααα»ααααααΆαααααΈααΆα? ααΆα’αα»ααααα ααΆαααααααααΆααα αΎααααα»αααΆαααΎαααααΌααααααααΆαααΆαααα αΎαααΎαααΆααΆαα½αααΉααααααααααΈαααααα»αααα α»αααΊααααΆαα ααΎααα·ααααααΆααααΎααααΈα’αααααααΉαααα α
αΌαααΎααααααΎαααααΆα ααααααΆαααααΆααααααΌαααα α»αα
ααΌαβαααααΆααβαααααβααααΌαβααβαααααΆαβααΆαααβαααα»αβααΆαβααααΆααβα α»αβαααααΆα stochastic
print 'ΠΡΠ°ΡΠΈΠΊ β5 "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-ΡΠ°Π³ΠΎΠ²ΠΎ"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1])), list_parametres_stoch_gradient_descence[1], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
ααααΆα ααααα 5 βααααΌααααααααΆαααΆαααααα‘α»ααααα α»ααααααΆα stochasticβ
αααα‘ααααΎαααΆααα·ααΆαα’αααΈαααααααααΆαααΉαα
αΌαααααααα αΎαα₯α‘αΌααααααΎαααΉααα½ααα»αα’αααΈαααααααααΆαα
ααΌα ααααβααΎβααΆαβα’αααΈβααΆαβααΎαβα‘αΎα? ααΆαααααααααααΆαααΎαα‘αΎαα αα ααααααααΎαααααΎαααΎααααα ααααααα½ααα αααααΆααΊαααααΆαααααααααΆαααααΎαααΎαααααααα½ααααααααΆαααααααΎααααααααααΎααααΈααΆαααααααααα α»ααααα»αααΆαααααΆααααΆααα αααΌαα αααααΆααααααΎαααααΎαααΎααααα½αααα α αΎαααααΎααΆαααααΆα‘αΎααα·α ααα»ααααααΎαααΆαααααααααα α»ααααααΆαααααααααΆαααααΎαααΎαααΈααΈαα α₯α‘αΌααααααΌαα αΆαααΆ ααΈαααααααΌαααΆααααααΆααααΆαααααΆααααΈαααααΆαααααααΈααΆααααααααααααΈααα’αααααΆααααα αααααΆααααααΆαα ααααααααΆαα½ααααα»αα ααααααΈααααααααααΌαααΆαααααΎαααΎα αααααΆαααααααααα α»αααααααΈαα½αα αααα½ααααααααΆαααααααΎαααΉααααααΎαααα α»ααααΆαααααααααααααααΆααααααΌααΆααααΌαα ααΌα ααααααΎααααΌαααααΎα’αααΈ? α ααααΎαααΊααΆααααα α’αααααααΌαααΆαααααααααα αΆαα α»αα αααααΆααααΈααΆαααΆααα’αα αααααΆαααααααααα αΆαα α»α ααα α»αααααΉαααα "ααα" α‘αΎαααΎα α»ααααααα α¬αααα»ααα αα·α ααα α»α "ααα" ααΉααα·αααααα ααα»ααααααΆααΉααα·αααααΎαααΆαααΏααα :) ααΌααα·αα·αααααΎαα
ααΌαααΎααααΈααααΎαααΆα SGD ααΆαα½αααΉαααΆαααΎαα‘αΎααα·α αα½α
# Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΌΠ΅Π½ΡΡΠΈΠ² ΡΠ°Π³ Π² 100 ΡΠ°Π· ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π³ΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠ΅
list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.001, steps = 80000)
print ' 33[1m' + ' 33[4m' + "ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΡΠΎΡ
Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠΏΡΡΠΊΠ΅:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
print 'ΠΡΠ°ΡΠΈΠΊ β6 "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-ΡΠ°Π³ΠΎΠ²ΠΎ"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1])), list_parametres_stoch_gradient_descence[1], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
ααααΆα ααααα 6 "ααααΌααααααααΆαααΆαααααα‘α»ααααα
α»ααααααΆα stochastic (80 ααΆααααα αΆα)"
αααα»αααΆαααΆααααααΎαα‘αΎα ααα»αααααα
αααα·αααααααα ααΆααααααα·αααα ααΆα’αΆα
ααααΌαααΆααααααααΌαααΆααα·ααΈαααα ααΎαααααΎαααΎαα§ααΆα ααααα
αααα»α 1000 ααΎαα
α»ααααααααααααααααα»ααααααα α»αα’αααααααΆααααΌαααΆαααααΎα‘αΎαα αα·ααααααΆααααΏαααα ααΎαααααΉαααααΌααααααααααααααααα»ααααα½αα―ααααααα ααΎαααΉααα·αααααΎαααααααα ααα»ααααααααΌαααα
α·ααααα»αααΆααααΎααΆααα·ααΆαα ααΆααΎααα
αααΌα α αΎαααα α»αα αΆααααΌα
ααΆααα
α»αααααΎαααααΆα ααΆααα·αααααα·ααα·αααα ααΌααααα‘ααααΎα 1000 ααΎαααααΌα α αΎαααααααααααΆααΆαα½αα
α»ααααααα
αααααΌααααααΆααααααΌαααΆα SGD (ααα αΆα 1000 ααααΌα)
print 'ΠΡΠ°ΡΠΈΠΊ β7 "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-ΡΠ°Π³ΠΎΠ²ΠΎ. ΠΠ΅ΡΠ²ΡΠ΅ 1000 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1][:1000])),
list_parametres_stoch_gradient_descence[1][:1000], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
print 'ΠΡΠ°ΡΠΈΠΊ β7 "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ-ΡΠ°Π³ΠΎΠ²ΠΎ. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 1000 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1][-1000:])),
list_parametres_stoch_gradient_descence[1][-1000:], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
ααααΆα ααααα 7 βααααΌααααααααΆαααΆαα SGD (ααα αΆαααααΌα 1000)β
ααααΆα ααααα 8 βααααΌααααααααΆαααΆαα SGD (1000 ααα αΆαα
α»αααααα)β
αα
ααΎαααααΌααααααααΌα ααΎαααααααααΎαααΆαααα α»ααα»αααααααααΈ αα·αααα
α»ααααΆαααααΆααα αα
βαααα»αβααΆαβααααΎβα‘αΎαβαα·αβα
α»αβαααααβααα ααΎαβααΎαβααΎαβααΆ error αα
βαα»ααα·αβααααα 1,475 α αΎαβαα
βαααβααααβααΌααααΈβααβααααΎβααΉαβαααααβααβαααααΎαβααα ααα»ααααβαααααΆααβααβααΆβαα
βααβα‘αΎα... αααα»αβαα·ααΆαβααααβααα α’αααβα’αΆα
βαααααβα
α»αβαααααβαα αααα»α ΠΈ α αΎαβαααααΆααβααβααααΎαβααΎαβαααβααΆαβααα α»αβαα·α
βαααα»αα ααααααΆαααΆααααα ααΎαααΆααααα αΆαααααααααααΆααααα ααΎαααααΌαα’αα»αααα 80 ααΆααααα αΆα (ααΌαααΎαααΌα) ααΎααααΈααα½αααΆαααααααα·αααα’αααα»αα α αΎαααααααα»ααααα‘αααΈαααα·αααααΆαααααααααααααΆααααΆααΆαα½αααΉαααΆαααααΆααα
α»ααααααΆα stochastic ααΆαααααα
ααΉαααΆαα
α»ααααααΆαα ααΎβα’αααΈβαααβα’αΆα
βααααΌαβααΆαβααβαααααΌαβαα·αβααααΎβα±ααβαααααΎαβα‘αΎα? ααΆαα·ααα·ααΆααααααα»αααΆαααααααααΆααααΆαα
αααα»αααα αΆαααααΌα ααΎααααα»αααααΆααα
α»αααααααα»αα
α·ααα ααΌα
ααααα αΎα ααΎααα½αααα
αΆαα
ααααΈααα αΆααααααα½ααα
αααα»αααα αΆαααααΌα α αΎαααΆαααααααααα αΆααα
αααααΎαααααααα
αα»αα ααΎαααΉααα·αααααΎαααααααα
αααα»αα’αααααααααα - ααΆααααααα αΎαα α’αααβαααβααααΆααααΆβα’αΆα
βαα·αβαααβαααα½αβα―αβααΆβααααΎβαααΆαβααΆβααβαα·αβαα·ααΆαβααα :)
α₯α‘αΌαααα α αΌαααΎαα’αα»ααααααΆαα α»ααααααΆα stochastic αααααααΎαααααΆααα ααΆαααΈ (α αΎαβααΎαβαα»αβαααααβαα½αβααΎβαααβαααβααΎαβααΆαβααβααΎαβαα»αβααα)
ααΌααααααΆαα Stochastic Gradient Descent (NumPy)
# Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π³Π°
def stoch_grad_step_numpy(vector_init, X, ind, y, l):
x = X[ind]
y_pred = np.dot(x,vector_init)
err = y_pred - y[ind]
grad_a = err
grad_b = x[1]*err
return vector_init - l*np.array([grad_a, grad_b])
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΎΡ
Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ°
def stoch_grad_descent_numpy(X, y, l=0.1, steps = 800):
vector_init = np.array([[np.random.randint(X.shape[0])], [np.random.randint(X.shape[0])]])
errors = []
for i in range(steps):
ind = np.random.randint(X.shape[0])
new_vector = stoch_grad_step_numpy(vector_init, X, ind, y, l)
vector_init = new_vector
errors.append(error_square_numpy(vector_init,X,y))
return (vector_init), (errors)
# Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)
print ' 33[1m' + ' 33[4m' + "ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² a ΠΈ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Π‘ΡΠΌΠΌΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΡΠΎΡ
Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠΏΡΡΠΊΠ΅:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
print
αααααααΆααααααα
ααΆααααΎαααααΌα
ααααΆααΉαααααααα
α»ααααααααααα·αααααΎ ααΆαααΈ. ααααααΆαααΆααααααααααΊααΆα‘αΌααΈααα
α αΌαααΎαααααααααααΆααΎααΆαααααααΌααααααΆα stochastic ααΆαα αααΆααααααα»ααααΆαα
αααααΌααααααΆααααααααααααααΆααααΆ SGD (80 ααΆααααα αΆα)
print ' 33[1m' + ' 33[4m' +
"ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΡ
Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy:"
+ ' 33[0m'
%timeit list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.001, steps = 80000)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' +
"ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΡ
Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy:"
+ ' 33[0m'
%timeit list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)
α
αΌααα
αααα»αααααααΆααααα
αααΎα αααααΆαααααααΉαα ααΆααααΈααααααα ααΌααααα "αααααααααααα½αα―α" αααα αΆαααααααααα’αααα»αα ααΆααα’ααααααααα αΆαααΆ ααααΌαααααΆααα·ααΈααΆααααααα’α·αααα’ααααααααααα ααΎααααΈααααΎααααΆαααααααΆααα ααΆαααΈααααα·αααΆαααααΎαααααΏαααααα·ααααα·ααΆαααααΆα αα
αααα»αα’ααααααααααΎαααΉααα·ααααα’αααΈαα½αααααα ααΉαααΆαααΏααααααααΌααα·ααα
ααααααααααααα’ααα :)
ααααααα
αα»αααΉααααααα αααα»αα ααααααΎααααα½ααααααααααΎαα ααααΈα’αααα’αΆαααΆααΈααααααααααΎαα ααΆααα·αα ααα»α’αααΈααΆαααΆ "ααΆαα»ααααα" ααααααααΆαα½αααΌαα α α ααα»α’αααΈααΆαααΆααΎαααααΌαααΎαα‘αΎαααΎαααα (ααΆαα αααΎαα α»αααααα) ααΎααααΈαααααααααΈααααΆαααααΆαααααα ααααα·αααΎααΎαααΆαα§αααααααααΆαααΆααα αα·αααΆαααααααααααα αααα»αααααααααΎαα ααααααβααβαααααβααααΆαβαα·ααΆαβαααβαααααΌαβααΎαβαα βααΆααβααααααβααααΉαααααΌα?
α ααααΎαα αααααααα½αααααααα·ααα ααΎααααα α₯α‘αΌαααα ααΎαααΆαααΎαα§ααΆα αααααααΆαααααα½α αααα ααααΎααα·αααΊ α’αΆαααααααΎαααααΆαα½αα . α’ααααα·αααΎαααΏααααααΉαααΆαααααααα»αααΈαα·α ααΌα ααααααΌααααααααΆααΎαααΆααααααΆ 2, 30, 50 α¬α αααΎαααΆααααα α αΌααααααααααααααΆααααΆααααα α¬ααΆαααααΊαααααααααααΆαααα»αααααααααΈαα½ααα αααα»αααααΈααα αααααααααΆααα·ααΆαα’αΆα αα·αα’αΆα ααααααααΉαααΆαααΆααααα αα·ααααΆαααα αα αααα»αααα ααΆαα α»ααααααΆα αα·αααΆααααααααα½αααααααΆααΉαααΊαα ααα»ααααα αααΆααααΆααΆαααΎααα·ααα αα·αααααα - α’αααααααΆαααα»αααΆαα α αΎαβαα»αβααΆααααβα’αααΈβααααΏα - ααΎαβαααα ααβααΆβααΉαβααΎαβαα·ααΈβαααβα’αΆα βα±ααβααΎαβαααααβαα·αβαααααβααααααβααα αΆα (αααβααΊβααααΏα)α
α αΎαα₯α‘αΌααααααΆαααααααααΆαααααααα
ααΈαα½α αααα»ααααααΉαααΆ αααααΆααααααααα αΆααααα»αα’ααααααααααΉααα½αα αΆααααααΎα "α’ααααα·ααααΆααΆααααααα·αααααα" αααα»αααΆααααααΉαααΈαααααααααααΆααααΈααΆααααααααααααΈααα’αααααΆαααα (αα·ααα·αααααΉαααααα»ααααα) α
ααΈααΈα ααΎααα·αα·αααααΎααα·ααΈααΆα αααΎαααΎααααΈαααααααΆααααΈααΆαα α₯α‘αΌααααα’αΆαααααααΎααααΆαααΆαααΎαα’αΆα ααααΎαααΎααα½αααααααααααααα»αααΎααααΈαααααααΆααααα αΆα
ααΈααΈ ααΎαααΆαααΎαααΆαααααααΆαααααααααααα αααααΊααααααααα αΆαα α»ααααααΆαα αααΆαααΆααααααααααα·αα’αΆα ααααΌαααΆαααααααααα ααααα ααΌα αααααΆαααααααααΆααααΆαααΎααΎααααΈααΆαααααααααΆαα αααΆαααΎααΆαααααΆααααααααα αΆααα½αααααααΌαααΆαααααΆααααααΌααααα»αα’αα‘α»ααααα α»αα
ααΈαα½α αααα»αααααΈααααααΎα αα»αααΆα "αααααααΆααααα" ααΆααααα αΆααααααααααααααΆααα’αααα»ααααααΆααααΆαααααΆα ααααααα ααααΆαααααΆααααα·ααααααΆααΆαααααΎααααΆααααααΆααααα»ααααααααααΆααααααααααΆααα ααΆαααΈ. ααα»ααααβααααΌαβααΆβααΆαβαααβααΆβα’αΆα βααααΎβααΆα ααΆαβααααα·ααααΆαβααΆαβαααααβαααα αΆαβαααα½αβα―αα αααααΆααα·αααα αα½αααΆαααΆααΆαααααααααα»αααΆαααΆααα½αααα·αααααΆααααααΎαα‘αΎα α αΎααααααΆααα·αααα ααΆαα·ααααααααΆααααααααααΎα±ααα’αααΈαααΆαααΆααααα»αααααΆαααααα αααα»ααα αα·α αα½αααΆααα·ααΈααΆααααααΆααααα»αααΆααααααααΆααααα αΆααΊααΆαααααα·αααααΆαααΆαα α αΎαα αΆααααΆααααΈααααα ααααααΎαααΊααΎααααΈαα·ααΆααα·ααΈααΆαααααααΈαααα»αααΆααααααααΆααααΈααΆααααααααααααΈααα’αααααΆαααα ααΆαααααΎααααΆαααα»αααΆα "αααααααααααα½αα―α" ααΊαααααααααΆαααααααΆααααΎαα
α’ααααααΆααααα (α¬α’αααΈαα½αααΌα ααα)
1. αααααααααααΈααα’ααα
2. αα·ααΈααΆαααααααΆαααα·α αααα»αα
3. ααααΈαα
4. αααααΆα
5. αααααΆααααααΆα
6. αααααΆααα NumPy
ααααα: www.habr.com