我的人工智能数学基础

0.函数求值

import sympy
x=sympy.symbols('x')
y=x**2+x*3+5
print(y.subs({x:1}))
import sympy
x,y=sympy.symbols('x y')
z=x**2+y**x
print(z.subs({x:1,y:2}))

1.求极限

import sympy

#定义x的自变量
x=sympy.Symbol('x')   # 此时的x是一个对象
#关于x的函数
y=sympy.sin(x)/x
#求极限,第一个参数为函数,第二个参数为自变量,第三个参数为自变量所要趋近的值
print(sympy.limit(y,x,0))

2.求一阶导数

import sympy

#定义x的自变量
x=sympy.Symbol('x')
#关于x的函数
y=sympy.sin(x**2)
#关于y求x的一阶导数
print(sympy.diff(y,x,1))

求偏导数

import sympy

#定义x,y的多自变量
x,y=sympy.symbols('x y')
#关于x的函数
z=x**2+y**2
#z关于x的一阶导数
dx=sympy.diff(z,x,1)
#z关于y的一阶导数
dy=sympy.diff(z,y,1)
print(dx,dy)

3.求定积分

import sympy
x=sympy.Symbol('x')
y=x*x*x
# 求y在0到1的定积分
print(sympy.integrate(y,(x,0,1)))

4.求不定积分

import sympy
x=sympy.Symbol('x')
y=x*x*x
# 求y的不定积分
print(sympy.integrate(y,x))

5.行列式求值

from sympy import Matrix
# 定义矩阵
d=Matrix([[1,0,7],
          [1,2,4],
          [1,1,2]])
# 计算行列式
print(d.det())

6.使用sympy完成梯度下降

from sympy import symbols, diff
# 定义符号变量
x = symbols('x')
# 定义函数
f = x**2 - 4*x + 4
# 初始值,学习率和迭代次数
x_val = 10
alpha = 0.1
iterations = 50
# 梯度下降算法
for i in range(iterations):
    df_dx = diff(f, x).subs(x, x_val)  # 计算梯度
    x_val = x_val - alpha * df_dx      # 更新x的值
    print(f"第 {i+1} 次迭代:x = {x_val}")

print(f"函数的最小值出现在 x = {x_val}")

7.矩阵SVD分解

import numpy as np
from scipy.linalg import svd

A = np.array([[1, 0, 0, 0,2],
              [0, 0, 3, 0, 0],
              [0, 0, 0, 0, 0],
              [0, 4, 0, 0, 0]
                ])
U, s, VT = svd(A)

print(s)

8.利用词袋模型计算语句相似度

词袋模型:没有顺序,只看你有多少个(像口袋一样)

str_1 = 'I like book, I like book!'

str_2 = 'I like book, too!'

str_3 = 'I like food'

book, I,  food , like,  too

2     2    0       2      0

1     1    0       1      1

0     1    1       1      0 

import numpy as np
# 词袋模型
vec1 = np.array([2, 2, 0, 2, 0])
vec2 = np.array([1,1,0,1,1])
vec3 = np.array([0,1,1,1,0])
# 计算相似度
# 两个向量的点成/两个向量的模乘
(vec1 @ vec2)/(np.linalg.norm(vec1)*np.linalg.norm(vec2))
(vec1 @ vec3)/(np.linalg.norm(vec1)*np.linalg.norm(vec3))
(vec2 @ vec3)/(np.linalg.norm(vec2)*np.linalg.norm(vec3))
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 定义文本
str_1 = 'I like book, I like book!'
str_2 = 'I like book, too!'
str_3 = 'I like food'

# 创建词袋模型
vectorizer = CountVectorizer()
corpus = [str_1, str_2, str_3]
X = vectorizer.fit_transform(corpus)

# 计算相似度
cosine_similarities = cosine_similarity(X)

cosine_similarities
"""
array([[1.        , 0.81649658, 0.5       ],
       [0.81649658, 1.        , 0.40824829],
       [0.5       , 0.40824829, 1.        ]])
"""

9.利用sympy解方程

# 解一元方程
import sympy
x = sympy.symbols('x')
gfg_exp = x + sympy.exp(x) + sympy.sin(x) - 10
print("Before Integration : {}".format(gfg_exp))
intr = sympy.nsolve(gfg_exp, x, 1)
print("After Integration : {}".format(intr))
# 解二元方程
import sympy
x=sympy.Symbol('x')
y=sympy.Symbol('y')
f1=x+y-3
f2=x-y+5
intr=sympy.solve([f1,f2],[x,y])
print(intr)
# {x: -1, y: 4}

10.numpy的矩阵运算

#python计算矩阵的秩、行列式、迹,特征值和特征向量、
import numpy as np
a = np.array([[1,1,1],
             [1,1,10],
             [1,1,15]])
np.linalg.matrix_rank(a)#返回矩阵的秩
np.linalg.det(a) #返回矩阵的行列式
a.diagonal() #返回矩阵的对角线元素,也可以通过offset参数在主角线的上下偏移,获取偏移后的对角线元素。a.diagonal(offset=1)返回array([1.10])
a.trace()#返回迹
eigenvalues ,eigenvectors= np.linalg.eig(a) #eigenvalues 为特征值。eigenvectors为特征向量
eigenvalues
"""
该代码原文链接:https://blog.csdn.net/weixin_43336305/article/details/103658406
"""

11.对图片的操作

import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

image = Image.open(r"1.jpg")
# 旋转图片
rotated_image = image.rotate(45)  # 旋转45度
# 翻转图片
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)  # 水平翻转
# 转换为黑白图像
gray_image = image.convert('1')  # '1'表示黑白模式
# 显示图像
plt.figure(figsize=(10, 10))
plt.imshow(gray_image)
plt.title("Origional Image")
plt.axis("off")
plt.show()
from PIL import Image
import cv2
import numpy as np
import matplotlib.pyplot as plt


img = Image.open(r"1.jpg")
img = np.array(img)

# 定义浮雕效果的核
kernel = np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]])

# 应用核到图像上
img_embossed = cv2.filter2D(img, -1, kernel)

# 使用Canny方法进行边缘检测
edges = cv2.Canny(img, 50, 150)

plt.figure(figsize=(10, 10))
plt.imshow(edges)
plt.title("Origional Image")
plt.axis("off")
plt.show()

12.pca降维

"""
4维数据降成2维数据
"""

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# PCA降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# X_pca是一个二维矩阵

# 绘制降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值