本书用七章分别讲解了数学基础、概率论、描述性统计、线性代数、线性回归、逻辑回归、神经网络。
笛卡尔:To be a data sciencist, it's crucial to learn some math!目录
这章用到的是
SymPy
这个库。SymPy
这个库真是挺实用的,画图一目了然。SymPy
还有个特点,它计算出来的是准确值。真应该把它推广到高中数学教学中!
数论
自然数这些名词用英语该怎么讲?
Natural numbers 自然数
Whole numbers 非负整数
Integers 整数
Rational numbers 有理数
Irrational numbers 无理数
Real numbers 实数
Complex and imaginary numbers 复数和虚数
变量和函数
需要一定的Python基础,可以参考《利用Python进行数据分析》的第2章
使用SymPy
这个库(可以参考SymPy
文档),可以非常方便的画函数的曲线图。先来画一个一元二次方程。
from sympy import *
x = symbols('x') #声明变量x
f = x**2 + 1
plot(f)
对于公式,SymPy
还可以画三维图
from sympy import *
from sympy.plotting import plot3d
x, y = symbols('x y')
f = 2*x + 3*y
plot3d(f)
SymPy
甚至可以计算极限:
from sympy import *
x = symbols('x')
f = 1 / x
result = limit(f, x, oo)
print(result) # 0
微分
使用SymPy
计算微分方程:
from sympy import *
x = symbols('x')
f = x**2
# 计算函数f的微分
dx_f = diff(f)
print(dx_f) # 结果是2*x
# 计算x = 2时,微分是多少
print(dx_f.subs(x,2)) # 结果是4
偏微分:
from sympy import *
from sympy.plotting import plot3d
x,y = symbols('x y')
f = 2*x**3 + 3*y**3
# 分别计算对x和y的偏微分
dx_f = diff(f, x)
dy_f = diff(f, y)
print(dx_f) # prints 6*x**2
print(dy_f) # prints 9*y**2
# plot the function
plot3d(f)
链式法则
=
from sympy import *
x, y = symbols('x y')
# y对x的微分
_y = x**2 + 1
dy_dx = diff(_y)
# z对y的微分
z = y**3 - 2
dz_dy = diff(z)
# 先用链式法则,再不用链式法则,进行求导计算
dz_dx_chain = (dy_dx * dz_dy).subs(y, _y)
dz_dx_no_chain = diff(z.subs(y, _y))
# 两者的结果相同
print(dz_dx_chain) # 结果是6*x*(x**2 + 1)**2
print(dz_dx_no_chain) # 结果是6*x*(x**2 + 1)**2
积分
使用SymPy
计算积分,计算对于函数从0到1的积分面积:
from sympy import *
x = symbols('x')
f = x**2 + 1
# 计算对于函数f和变量x,在0到1的范围内的积分
area = integrate(f, (x, 0, 1))
print(area) # 结果是4/3
网友评论