
数据科学数学必修课(2022.07.05出版)
本书用七章分别讲解了数学基础、概率论、描述性统计、线性代数、线性回归、逻辑回归、神经网络。
目录

笛卡尔: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