目录
1.机器学习的概念
1.1 什么是机器学习
对于某给定的任务T,在合理的性能度量方案P的前提下,某计算机程序可以自主学习任务为T的经验E;随着提供合适、优质、大量的经验E,该程序对于任务T的性能逐步提高。
1.2 机器的一般流程
数据收集
数据清洗
特征工程
数据建模
2. 数学分析
2.1 对数函数的的上升速度
对数函数虽然底数不同但都是经过点(1,0),但经过时斜率不同,从下图可以看出底数越大,斜率越小
问题分析:
2.2 导数
import numpy as np
import matplotlib.pyplot as plt
# 应用Taylor处理小数部分
def calc_e_small(r):
print('r', r)
# Taylor展开10项
n = 10
# 1 ~ n 的阶乘组成的array
f = np.arange(1, n + 1).cumprod()
print('f', f)
# n个r组成array
g = np.array([r] * n)
print('g', g)
# r的1~n次方
b = g.cumprod()
print('b', b)
# e的n项Taylor展开
return np.sum(b / f) + 1
def calc_e(x):
'''
e^x = 2^k * e^r |r| <= 0.5 * ln2
'''
reverse = False
if x < 0:
x = -x
reverse = True
ln2 = 0.69314718055994530941723212145818
c = x / ln2
k = int(c + 0.5)
r = x - k * ln2
y = (2 ** k) * calc_e_small(r)
if reverse:
return 1 / y
return y
t1 = np.linspace(-2, 0, 10, endpoint=False)
t2 = np.linspace(0, 2, 20)
t = np.concatenate((t1, t2))
# print(t)
y = np.empty_like(t)
for i, x in enumerate(t):
y[i] = calc_e(x)
plt.plot(t, y, 'ro')
plt.plot(t, np.e ** t)
plt.show()
Taylor应用:计算sin
import numpy as np
import matplotlib.pyplot as plt
def calc_sin_small(x):
x2 = -x ** 2
t = x
f = 1
sum = 0
for i in range(10):
sum += t / f
t *= x2
f *= ((2 * i + 2) * (2 * i + 3))
return sum
def calc_sin(x):
a = x / (2 * np.pi)
k = np.floor(a)
a = x - k * 2 * np.pi
return calc_sin_small(a)
t = np.linspace(-2 * np.pi, 2 * np.pi)
y = np.empty_like(t)
for i, x in enumerate(t):
y[i] = calc_sin(x)
plt.xlim((-7, 7))
plt.ylim((-1.1, 1.1))
plt.plot(t, y,'go',label='Taylor(t)')
plt.plot(t,np.sin(t),'r-',label='sin(t)')
plt.grid(True)
plt.legend()
plt.show()