学好数理化,走遍天下都不怕!这句话我们从小就听过,放在今天似乎依然适用。达芬奇说:“数学是一切科学的基础”,数学和代码也有着千丝万缕的联系。似乎任何对机器学习和数据科学充满热情的人都相信,总有一天,他们会把python库研究透彻,并享受其中的数学知识。将向您展示大量论文,详细介绍其原理。你对核心数学的理解越好,你就越有可能受到启发去创造新的方法。对于学过数学或者从事机器数学学习多年的人来说,不难将上面的等式详细解析成含义和代码。但对于大多数普通人来说,无异于读天书。古代数学家似乎喜欢用看起来很有趣的符号来表达直观的方法,却把方程和变量复杂化。其实代码不仅可以写出程序,还可以让这些复杂的语言重新变得直观。加深对数学理解的最好方法是编写代码片段来描述方程式,这样更容易理解。看完下面的例子,相信你也会有同感。求和与乘积求和符号是迭代数学中最有用和最常用的符号之一。尽管设计复杂,但操作非常简单实用。x=[1,2,3,4,5]result=0foriinrange(5):result+=x[i]Outputofprint(result)->15如上图,这个符号代表一个for循环,从最上面的数开始,top数字是最大值。底部设置的变量将成为索引变量,每次循环的所有结果将添加到总值中。上面的符号被称为乘积运算符,其工作方式类似于求和符号,但它不是将每个结果相加,而是将它们相乘。x=[1,2,3,4,5]result=1foriinrange(5):result*=x[i]Outputofprint(result)->120条件括号条件括号用于在一定条件下变换方程的方程.对于编码人员来说,常见的“if”语句就是这样。用这样的代码表示:i=3y=[-2,3,4,1]result=0ifiiny:result=sum(y)elifi>0:result=1else:result=0print(result)->6如图上面,每行括号中的正确符号指定了每条路径应该做什么。我还为每个条件添加了冗余的“包含”符号以增进理解。我们检查了i值是否在y列表中。确认后,返回数组的和。如果i值不在数组中,将根据该值返回0或1。阶乘用“!”表示,这是几乎所有计算器上的符号。这种表示法会更容易理解,但是代码会让你更深入地理解它的原理。5!会表示为:result=1foriinrange(1,5):result*=iOutputofprint(result)->120逐点运算和笛卡尔矩阵乘法下面看看经常用到的语言库(矩阵乘法)是怎么用的数据科学家完成操作。逐点运算很容易理解,简称为:请注意,这个运算首先要求每个矩阵必须有这样一个模型(即#row=column=),其代码如下如下:y=[[2,1],[4,3]]z=[[1,2],[3,4]]x=[[0,0],[0,0]]foriinrange(len(y)):forjinrange(len(y[0])):x[i][j]=y[i][j]*z[i][j]打印(x)->[[2,2],[12,12]]最后,让我们看一下机器学习中最常用的典型矩阵乘法。用复杂的术语来说,此操作是每个主要行与每个次要列的点积。具体操作是:假设[#row,#column]→矩阵ixj需要#column(i)==#row(j)→最终输出模型为[#row(i),#column(j)]的样子难于理解,图片可以帮助您直观地理解这些操作。该等式的代码如下(使用numpy点法):y=[[1,2],[3,4]]z=[[2],[1]]#xhasshape[2,1]x=[[0],[0]]foriinrange(len(y))forjinrange(len(z):x[i][j]=np.dot(y[i],z[:,j])print(x)->[[4],[10]]看完这几个简单的例子,是不是有一种拨开迷雾,重见光明的感觉呢!用简单的代码学习数学,你会收获很多。
