勾股定理的原因是直接三角形两垂直边长(或称较短两边)的平方和,等于斜边长的平方。
在勾股定理中,较短的两边长的平方和等于第三边的平方:
影片名称 | 爱情、亲情 | 跨国拍摄 | 出现刀、枪 | 飞车追逐 | 动画 |
玩命关头 | 5 | 7 | 8 | 10 | 2 |
影片名称 | 爱情、亲情 | 跨国拍摄 | 出现刀、枪 | 飞车追逐 | 动画 |
复仇者联盟 | 2 | 8 | 8 | 5 | 7 |
决战中途岛 | 5 | 6 | 9 | 2 | 5 |
冰雪奇缘 | 8 | 2 | 0 | 0 | 10 |
双子杀手 | 5 | 8 | 8 | 8 | 3 |
列出4部影片与《玩命关头》的相似度,同时列出哪一部影片与《玩命关头》的相似度最高。
import math
film = [5, 7, 8, 10, 2] # 玩命关头特征值
film_titles = [ # 比较影片片名
'复仇者联盟',
'决战中途岛',
'冰雪奇缘',
'双子杀手',
]
film_features = [ # 比较影片特征值
[2, 8, 8, 5, 6],
[5, 6, 9, 2, 5],
[8, 2, 0, 0, 10],
[5, 8, 8, 8, 3],
]
dist = [] # 储存影片相似度值
for f in film_features:
distances = 0
for i in range(len(f)):
distances += (film[i] - f[i]) ** 2
dist.append(math.sqrt(distances))
min = min(dist) # 求最小值
min_index = dist.index(min) # 最小值的索引
print("与玩命关头最相似的电影 : ", film_titles[min_index])
print("相似度值 : ", dist[min_index])
for i in range(len(dist)):
print("影片 : %s, 相似度 : %6.2f" % (film_titles[i], dist[i]))
运行结果:
[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
与玩命关头最相似的电影 : 双子杀手
相似度值 : 2.449489742783178
影片 : 复仇者联盟, 相似度 : 7.14
影片 : 决战中途岛, 相似度 : 8.66
影片 : 冰雪奇缘, 相似度 : 16.19
影片 : 双子杀手, 相似度 : 2.45
[Done] exited with code=0 in 0.454 seconds
《双子杀手》与《玩命关头》最相似,《冰雪奇缘》与《玩命关头》差距最远。
联立不等式与机器学习
计算x和y的值
y=8-0.6x #研发限制
y=17.5-2.5x #包装限制
然后计算最大获得值
z=50x+50y #求目标函数的最大获得值
import matplotlib.pyplot as plt
from sympy import Symbol, solve
import numpy as np
x = Symbol('x') # 定义公式中使用的变量
y = Symbol('y') # 定义公式中使用的变量
eq1 = 8 - 0.6 * x - y # 方程式 1
eq2 = 17.5 - 2.5 * x - y # 方程式 2
ans = solve((eq1, eq2))
print('x = {}'.format(int(ans[x])))
print('y = {}'.format(int(ans[y])))
z = 50 * int(ans[x]) + 50 * int(ans[y])
print('最大获利 = {} 万'.format(z))
运行结果:
[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
x = 5
y = 5
最大获利 = 500 万
[Done] exited with code=0 in 4.107 seconds
参考下列内容,绘制等式线条。
x>=0 #商用软件生产数量
y>=0 #App软件生产数量
y<=8-0.6x #研发费用的限制
y<=17.5-2.5x #包装费用的限制
然后绘制下列通过点(5,5)的目标函数线条,同时标记点(5,5)。
y=-x+0.02z
因为最大获利是500万元,所以目标函数内容如下:
y=-x+10
import matplotlib.pyplot as plt
import numpy as np
plt.plot([0, 0], [20, 0]) # 绘函数直线公式 1
plt.plot([0, 0], [0, 20]) # 绘函数直线公式 2
line3_x = np.linspace(0, 20, 20)
line3_y = [(8 - 0.6 * y) for y in line3_x]
line4_x = np.linspace(0, 20, 20)
line4_y = [(17.5 - 2.5 * y) for y in line4_x]
lineobj_x = np.linspace(0, 20, 20)
lineobj_y = [10 - y for y in lineobj_x]
plt.axis([0, 20, 0, 20])
plt.plot(line3_x, line3_y) # 绘函数直线公式 3
plt.plot(line4_x, line4_y) # 绘函数直线公式 4
plt.plot(lineobj_x, lineobj_y) # 绘目标函数直线公式
plt.plot(5, 5, '-o') # 绘交叉点
plt.text(4.5, 5.5, '(5, 5)') # 输出(5, 5)
plt.xlabel("Research")
plt.ylabel("UI")
plt.grid() # 加网格线
plt.show()
运行结果