写在前面:大家好K。首先为你点进这篇有趣的文章点赞👍!文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论。这篇文章参考此文,经意译和修改错误代码编写成。更多内容请点进👉我的博客K。👈阅览。
如果你喜欢机器学习和数据科学方面的研究,或者做着相关的工作,总有一天,你一定会想看看你平时经常使用的数学的世界,而不是止步于只会调用Python库。
然后你就会去看很多很多文献,看看那些功能到底是如何运作的。你看的越多、学得越多,你就越有可能想到新的点子💡,然后成为行业大佬,迎娶白富美、走上人生巅峰!想想都很激动。但是当你打开你的第一份文献,纳尼???这是神马?!
如果你在大学学过数学,或者研究过机器学习,你还是能够隐隐约约马马虎虎辨认出来这都是啥,慢慢看还能写成代码。但是对于很多人来说,这是WHAT???话说古时候象形文字都还挺形象挺直观的,这这这也太复杂了吧!
事实上,你想检验你是否真的看懂了这些方程,你可以试试用代码把这方程写出来。最最最厉害的,你还可以用通俗不晦涩的语言把这些玩意儿表达出来。在这篇文章中,分享了一些代码来描述数学符号的例子!往下看吧!
求和、求积符号
求和符号是数学中最有用、最常用的符号之一。它是迭代的符号,尽管它被涉及得复杂,实现却相当简单,而且非常有用。
# Python代码
x = [1, 2, 3, 4, 5, 6]
result = 0
for i in range(6):
result += x[i]
print(result)
# 输出为21
像看到的代码那样,求和符号用for循环表示,顶部的数字的范围是for
循环的次数,下面的数字是循环变量。每次循环都把数加到result
中,最后再输出结果。
与求和符号类似的,还有求积符号。
都用了同样的for
循环,只是求和符号是把数加到结果中,而求积符号是把数乘到结果中。看看代码:
# Python代码
x = [1, 2, 3, 4, 5, 1]
result = 1
for i in range(6):
result *= x[i]
print(result)
# 输出为120
阶乘
阶乘的符号是!
,它的运用同样十分广泛。那么更应该看看它的实现代码是怎样的。
例如5!
的值是通过1×2×3×4×5
求得,它的代码这样写:
# Python代码
result = 1
for i in range(1,6):
result *= i
print(result)
# 输出为120
分段函数
分段函数可以根据后面的条件,知道哪个变量该使用哪个表达式。对于程序员来说,if
条件分支语句,可以很方便的实现这个功能:
# Python代码
i = 3
y = [-2, 3, 4, 1]
result = 0
if i in y:
result = sum(y)
elif i > 0:
result = 1
else:
result = 0
print(result)
# 输出为6
如上所示,括号中每一行的正确表示法指示了每条路径应该执行的内容。我将额外的“包含”符号添加到每个条件中,以增加更多的洞察力。如前所述,我们检查了i值是否在y列表中。认识到这一点后,我们返回了数组的和。如果i值不在数组中,我们将根据该值返回0或1。
每一行的表达式,都有唯一的条件来约束,符合条件才能执行对应的表达式。看看第三条语句,条件是y包含i
,所以在用代码实现时,我们用in
来检查i
是否在y数组
中。如果i
不在y数组
中,则i in y
这条语句的值是false
,否则是true
。
看到这里,哦?简单?继续看下面!
矩阵的点乘和叉乘
最后介绍一下数据科学家最常用最喜欢——矩阵的乘法。最容易理解的形式是点乘运算。每行每列对应的元素相乘:
注意两个矩阵的行数相同、列数相同。
代码这样写:
# Python代码
y = [[2,1],[4,3]]
z = [[1,2],[3,4]]
x = [[0,0],[0,0]]
for i in range(len(y)):
for j in range(len(y[0])):
x[i][j] = y[i][j] * z[i][j]
print(x)
# 输出为[[2, 2], [12, 12]]
最后看看典型的矩阵乘法过程----叉乘,在机器学习中最常用。第一个矩阵的每行的各元素,乘上第二个矩阵的每列的各元素,再把各个积相加,作为结果矩阵相应位置的元素。说起来很难懂,建议去看看动图,就一目了然了。
代码如下,使用numpy点方法:
# Python代码
y = [[1, 2], [3, 4]]
z = [[2], [1]]
x = [[0], [0]]
for i in range(len(y[0])):
sum = 0
for j in range(len(z)):
x[i][0] += y[i][j] * z[j][0]
print(x)
# 输出为[[4], [10]]
这只是几个例子。当然,为了提高效率,可以组合使用这些方法,并且通常有一个现成的库。但是对这些代码的理解可以让程序员更深刻得了解数学公式。
转载:https://blog.csdn.net/qq_33973359/article/details/105626585