Python机器学习:认识机器学习

news2025/1/18 17:07:09

🌕 机器学习是什么?

⭐️:机器学习是一门涉及数学、统计学、计算机科学等的学科。
⭐️:机器学习是从一个大量的已知数据中,学习如何对未知的新数据进行预测,并且可以随着学习内容的增加,提高对未来数据预测的准确性的一个过程。(着重强调过程,就相当于是从已知去预测未知)
⭐️:例如,在购物时,机器学习算法自动根据浏览历史,推荐用户感兴趣的商品。这点我相信大家在逛淘宝等等的时候都有所体会吧!

机器学习算法可以分为三大类:无监督学习有监督学习半监督学习

那么接下来就简单介绍以下这三类是个什么意思。

无监督学习:不需要提前知道数据集的类别标签,可分为聚类降维两个领域。
有监督学习:使用有标签的训练数据建立模型,用来预测新的未知标签的数据,可分为分类回归两个领域。
半监督学习:无监督学习和有监督学习的结合。


在这里我是用python来学习机器学习算法的,如果没有python基础的朋友可以去看看我之前的python学习笔记,里面讲解了一些python的基础知识。

🌕 三个机器学习中常用的第三方库

在开始之前,我们还要先了解熟悉一下三个机器学习中常用到的第三方库,分别是:NumpyPandasMatplotlib

🌗 Numpy库

Numpy库在矩阵运算等方面提供了很多高效的函数。

🌑 数组生成

  1. 用array()函数生成一个数组
import numpy as np
a = np.array([1,2,3,4])				# 用array()函数生成一个数组
print(a)
# [1 2 3 4]

b = np.array([[1,2,3],[4,5,6]])
print(b)
# [[1 2 3]
#  [4 5 6]]

print(a.shape)						# 用shape查看数组的形状,例如3×5的数组,形状就是(3,5)
# (4,)								# 这里因为a是一维数组,没有行和列的概念

print(b.shape)
# (2, 3)

print(a.ndim)						# 用ndim查看数组的维度
# 1									# 表示一维

print(b.ndim)
# 2									# 表示二维
  1. 生成特定形状的矩阵
import numpy as np
print(np.zeros((2,4)))		# 生成指定形状的全为0的数组
# [[0. 0. 0. 0.]
#  [0. 0. 0. 0.]]

print(np.ones((2,4)))		# 生成指定形状的全为1的数组
# [[1. 1. 1. 1.]
#  [1. 1. 1. 1.]]

print(np.eye(3,3))			# 生成指定形状的单位矩阵(对角线的元素为1)
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

🌑 数组中的索引

数组中的元素,可以利用切片索引来获取,其中索引可以是获取一个元素,也可以是获取多个元素的切片索引,以及根据布尔值获取元素的布尔索引

import numpy as np
a = np.arange(12).reshape(3,4)		# arange(12)返回一个0~11的序列,reshape(3,4)将这个序列组装成一个3行4列的数组
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(a[1,1])						# 获取数组中的某个元素
# 5

a[1,1] = 100						# 对数组中的某个元素重新赋值
print(a)
# [[  0   1   2   3]
#  [  4 100   6   7]
#  [  8   9  10  11]]

print(a[:,:])						# 切片操作,这里切片仍然是获取整个数组
# [[  0   1   2   3]
#  [  4 100   6   7]
#  [  8   9  10  11]]			

print(a[:,0])						# 获取数组中的第一列元素
# [0 4 8]

print(a[0,:])						# 获取数组中的第一行元素
# [0 1 2 3]

print(a[0:2,1:3])					# 获取数组中第一、第二行,第二、第三列的元素
# [[  1   2]
#  [100   6]]

index = a % 2 == 1					# 用布尔值进行索引
print(index)
# [[False  True False  True]
#  [False False False  True]
#  [False  True False  True]]
print(a[index])
# [ 1  3  7  9 11]

print(a[a % 2 == 1])				# 这行代码等于上面两行代码
# [ 1  3  7  9 11]

np.where可以找到符合条件的元素的位置或按条件作变化后的数组,它有两种形式:

# 1. np.where(condition) 	# 返回满足condition条件的元素的坐标,将这些元素的行坐标放在一起,列坐标放在一起,然后按下标一一对应,就类似于字典的键值对
print(np.where(a % 2 == 1))
# (array([0, 0, 1, 2, 2], dtype=int64), array([1, 3, 3, 1, 3], dtype=int64))
# 比如,满足a % 2 == 1 的元素为[0,1]、[0,3]、[1,3]、[2,1]、[2,3]

# 2. np.where(condition,x,y) # 满足condition条件,就输出x,否则输出y
print(np.where(a % 2 == 1,a,a * 2))
# [[  0   1   4   3]
#  [  8 200  12   7]
#  [ 16   9  20  11]]

数组的转置

import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(a.T)
# [[ 0  4  8]
#  [ 1  5  9]
#  [ 2  6 10]
#  [ 3  7 11]]

🌑 数组中的一些运算函数

  1. 数组的均值
import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(a.mean())
# 5.5

print(a.mean(axis=0))			# 每列的均值
# [4. 5. 6. 7.]

print(a.mean(axis=1))			# 每行的均值
# [1.5 5.5 9.5]
  1. 数组的和
import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(a.sum())				# 数组的和
# 66

print(a.sum(axis=0))		# 每列的和
# [12 15 18 21]

print(a.sum(axis=1))		# 每行的和
# [ 6 22 38]
  1. 数组的累加和
import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(a.cumsum())			# 数组的累加和
# [ 0  1  3  6 10 15 21 28 36 45 55 66]

print(a.cumsum(axis=0))		# 每列的累加和
# [[ 0  1  2  3]
#  [ 4  6  8 10]
#  [12 15 18 21]]

print(a.cumsum(axis=1))		# 每行的累加和
# [[ 0  1  3  6]
#  [ 4  9 15 22]
#  [ 8 17 27 38]]
  1. 数组的标准差(standard deviation)和方差(variance)
import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(a.std())			# 数组的标准差
# 3.452052529534663

print(a.var())  		# 数组的方差
# 11.916666666666666

🌗 Pandas库

pandas库在数据分析中是非常重要和常用的库。在数据预处理、缺失值填补、时间序列和可视化等方面都有应用。

🌑 序列和数据表

序列是一维标签数组,能够容纳任何类型的数据。它类似于字典,字典中的键就相当于序列中的索引,字典中的值就相当于是数据,键和值一一对应,索引和数据也一一对应。

import pandas as pd
a = pd.Series(index=["a","b","c"],data=[1,2,3])

print(a)
# a    1
# b    2
# c    3
# dtype: int64

a = pd.Series(index=["a","b","c"],data=[1,2,3],name="var1")	# 其中name是序列的名称,是可选参数

print(a)
# a    1
# b    2
# c    3
# Name: var1, dtype: int64

可以通过切片索引获取序列中的对应值,也可以对获得的数值重新赋值。

import pandas as pd

a = pd.Series(index=["a","b","c"],data=[1,2,3],name="var1")

print(a[["a","c"]])
# a    1
# c    3
# Name: var1, dtype: int64

a[["a","c"]] = 100,200
print(a)
# a    100
# b      2
# c    200
# Name: var1, dtype: int64

前面说了序列跟字典非常像,那么也可以用字典来生成序列

import pandas as pd
# 用字典生成序列
a = pd.Series({"A":100,"B":200,"C":300,"D":200})
print(a)
# A    100
# B    200
# C    300
# D    200
# dtype: int64

print(a.value_counts())		# 计算序列中每个取值出现的次数
# 200    2
# 100    1
# 300    1
# dtype: int64

数据表是一种二维数据结构,数据按行和列的表格方式排列。数据表跟二维数组也非常的像,它们之间不同的地方在于数据表的每行有一个标号,每列也对应着一个名称。它的格式为:

pd.DataFrame(index,data,columns)

其中,index用于指定数据表的索引,data就是索引对应的数据,可以用字典、数组等内容,columns用于指定数据表的列名。

用字典生成数据表时,字典的键将会作为数据表格的列名,值将会作为对应列的内容

import pandas as pd
data = {"name":["Amy","Bob","Cindy","Tom"],"age":[20,19,21,18],"sex":["F","M","F","M"]}
a = pd.DataFrame(data = data)

print(a)
#     name  age sex
# 0    Amy   20   F
# 1    Bob   19   M
# 2  Cindy   21   F
# 3    Tom   18   M

# 添加新的列
a["height"] = [165,178,169,175]

print(a)
#     name  age sex  height
# 0    Amy   20   F     165
# 1    Bob   19   M     178
# 2  Cindy   21   F     169
# 3    Tom   18   M     175

# 获取数据表的列名 
print(a.columns)
# Index(['name', 'age', 'sex', 'height'], dtype='object')

# 通过列名获取数据表中的数据
print(a[["name","sex"]])
#     name sex
# 0    Amy   F
# 1    Bob   M
# 2  Cindy   F
# 3    Tom   M

针对数据表格可以使用loc()函数获取指定的数据。它有两个参数,第一个是索引(行),第二个就是列,用来选择指定位置的数据。

print(a)
#     name  age sex  height
# 0    Amy   20   F     165
# 1    Bob   19   M     178
# 2  Cindy   21   F     169
# 3    Tom   18   M     175

print(a.loc[2])				# 输出第二行的数据
# name      Cindy
# age          21
# sex           F
# height      169
# Name: 2, dtype: object

print(a.loc[0:2])			# 输出第0行到第2行的数据
#     name  age sex  height
# 0    Amy   20   F     165
# 1    Bob   19   M     178
# 2  Cindy   21   F     169

print(a.loc[0:2,["name","sex"]])	# 输出第0到第2行的name和sex列,注意,关于列的参数不能像行那样切片
#     name sex
# 0    Amy   F
# 1    Bob   M
# 2  Cindy   F

print(a.loc[a.sex == "F",["name","sex"]])	# 输出name和sex列,且sex为F的数据
#     name sex
# 0    Amy   F
# 2  Cindy   F

iloc()函数是基于位置的索引来获取对应的内容,也就是说用这个函数对于列的参数就可以切片了。

print(a)
#     name  age sex  height
# 0    Amy   20   F     165
# 1    Bob   19   M     178
# 2  Cindy   21   F     169
# 3    Tom   18   M     175

print(a.iloc[0:2])			# 获取第0到第1行的数据,注意,这个切片是左闭右开“[)”
#   name  age sex  height
# 0  Amy   20   F     165
# 1  Bob   19   M     178

print(a.iloc[0:2,0:2])		# 获取第0到1行,第0到1列的数据
#   name  age
# 0  Amy   20
# 1  Bob   19

a.iloc[0:1,0:2] = ["Alan",25]	# 将第0行第0列的数据改为“Alan”,将第0行第1列的数据改为25

print(a)
#     name  age sex  height
# 0   Alan   25   F     165
# 1    Bob   19   M     178
# 2  Cindy   21   F     169
# 3    Tom   18   M     175

🌑 数据聚合与分组运算

apply()函数可以将指定的函数作用于数据的行或列,并将其应用于数据计算。

data = {"a":[23,40,39,11],"b":[1.3,0.9,1.5,1.1],"c":[103,122,119,108],"d":[89,91.2,88.9,90.5]}
a = pd.DataFrame(data = data)

print(a)
#     a    b    c     d
# 0  23  1.3  103  89.0
# 1  40  0.9  122  91.2
# 2  39  1.5  119  88.9
# 3  11  1.1  108  90.5

## 计算每列的均值
print(a.iloc[:,:].apply(func=np.mean,axis=0))	# func是将要应用于某行或某列的函数,axis=0表示将要对每列进行操作
# a     28.25
# b      1.20
# c    113.00
# d     89.90
# dtype: float64

## 计算每列的最大值和最小值
print(a.iloc[:,:].apply(func=(np.min,np.max),axis=0))
#        a    b    c     d
# amin  11  0.9  103  88.9
# amax  40  1.5  122  91.2

## 计算每列的样本数量
print(a.iloc[:,:].apply(func=np.size,axis=0))
# a    4
# b    4
# c    4
# d    4
# dtype: int64

## 根据行进行计算
print(a.iloc[:,:].apply(func=(np.min,np.max,np.mean,np.std,np.var),axis=1))
#    amin   amax    mean        std          var
# 0   1.3  103.0  54.075  49.545493  2454.755833
# 1   0.9  122.0  63.525  53.729407  2886.849167
# 2   1.5  119.0  62.100  52.159435  2720.606667
# 3   1.1  108.0  52.650  54.431517  2962.790000

groupby()函数可进行分组统计。

print(a)
#     a    b    c     d
# 0  23  1.3  103  89.0
# 1  40  0.9  122  91.2
# 2  39  1.5  119  88.9
# 3  11  1.1  108  90.5

print(a.groupby(by="a").mean())
#       b      c     d
# a                   
# 11  1.1  108.0  90.5
# 23  1.3  103.0  89.0
# 39  1.5  119.0  88.9
# 40  0.9  122.0  91.2

print(a.groupby(by="c").mean())
#         a    b     d
# c                   
# 103  23.0  1.3  89.0
# 108  11.0  1.1  90.5
# 119  39.0  1.5  88.9
# 122  40.0  0.9  91.2

🌗 Matplotlib库

Matplotlib是python的一个绘图库,pyplot是其中的一个模块,它提供了类似MATLAB的绘图接口,能够绘制2D、3D等图像。

下面就来小试牛刀生成一个y=sin(x)的图像:

🌑二维可视化图像

import matplotlib.pyplot as plt
import numpy as np

X = np.linspace(1,15)			# linspace用于生成一个1~15的等差数列,默认生成50个样本量
Y = np.sin(X)					# 根据X的点绘制出Y的点
plt.figure(figsize=(10,6))		# 定义一个图像窗口(宽10,长6)
plt.plot(X,Y,"r-")				# 绘制X和Y的图像,红色、直线
plt.xlabel("X轴")				# X坐标轴的名称
plt.ylabel("Y轴")				# Y坐标轴的名称
plt.title("y=sin(x)")			# 图像的名称
plt.grid()						# 图像中添加网格
plt.show()						# 显示图像

显示如下:
在这里插入图片描述
可以看到,X和Y轴的名称中那个“轴”并没有显示出来,这是因为Matplotlib库默认不支持中文文本在图像中的显示。为了解决这个问题,我们可以添加以下代码:

import matplotlib
matplotlib.rcParams['axes.unicode_minus']=False

import seaborn as sns			 
sns.set(font="Kaiti",style="ticks",font_scale=1.4)

其中,seaborn是数据可视化库,使用其set()方法可以设置可视化图像时的基础部分,参数font指定图中文本使用的字体,style设置坐标系的样式,font_scale设置字体的显示比例等。

添加了这段代码后的显示如下:
在这里插入图片描述
这样就可以正常显示中文啦!

🌑三维可视化图像

import numpy as np
import matplotlib.pyplot as plt

import matplotlib
matplotlib.rcParams['axes.unicode_minus']=False

import seaborn as sns
sns.set(font="Kaiti",style="ticks",font_scale=1.4)

x = np.linspace(-4,4,num=50)		# x的范围为-4~4上均匀分布的50个点
y = np.linspace(-4,4,num=50)		# y的范围为-4~4上均匀分布的50个点
X,Y = np.meshgrid(x,y)				# 根据输入的坐标向量生成对应的坐标矩阵
Z = np.sin(np.sqrt(X**2+Y**2))
fig = plt.figure(figsize=(10,6))	# 设置图像的大小
ax1 = fig.add_subplot(111,projection="3d")	# 在图像中增加一个坐标轴,也就是初始化一个3D坐标系ax1
ax1.plot_surface(X,Y,Z,rstride=1,cstride=2,alpha=0.5,cmap=plt.cm.coolwarm)	# 绘制曲面图
cset = ax1.contour(X,Y,Z,zdir="z",offset=1,cmap=plt.cm.CMRmap)	# 绘制Z轴方向的等高线,投影位置在Z=1的平面
ax1.set_xlabel("X")		# X轴的名称
ax1.set_xlim(-4,4)		# 设置X轴的绘图范围
ax1.set_ylabel("Y")		# Y轴的名称
ax1.set_ylim(-4,4)		# 设置Y轴的绘图范围
ax1.set_zlabel("Z")		# Z轴的名称
ax1.set_zlim(-1,1)		# 设置Z轴的绘图范围
ax1.set_title("曲面图和等高曲线")
plt.show()

显示如下:
在这里插入图片描述

🌑可视化图片

import numpy as np
import matplotlib.pyplot as plt		
# skimage库的全称是scikit-image
from skimage.io import imread           # 从skimage库中引入读取图片的函数
from skimage.color import rgb2gray		# 从skimage库中引入将RGB图片转化为灰度图像的函数

im = imread("02.jpg")					# 读取图片
imgray = rgb2gray(im)					

plt.figure(figsize=(10,6))				
plt.subplot(1,2,1)						# RGB图像
plt.imshow(im)							
plt.axis("off")							# 不显示坐标轴
plt.title("RGB Image")

plt.subplot(1,2,2)						# 灰度图像
plt.imshow(imgray,cmap=plt.cm.gray)
plt.axis("off")							# 不显示坐标轴
plt.title("Gray Image")
plt.show()

注:subplot()函数是将多个图画到一个平面上,例如subplot(m,n,p)表示的是将这些图画拍成m行n列,p表示从左到右、从上到下的第一个位置,那么subplot(1,2,1)表示的就是对这两块图中的第一块进行绘制。subplot(1,2,2)表示的就是对这两块图中的第二块进行绘制。

显示如下:
在这里插入图片描述

🌕 机器学习模型初探索

假设房子的价格只跟面积有关,下表给出了一些房子的面积和价格之间的数据,请计算出40 m 2 m^2 m2的房屋价格。

面积( m 2 m^2 m2)56327816024089916943
价格(万元)906512527231214715910978

对于这样一个问题,我们不知道房子的价格与面积满足怎样的一个数学关系,我们可以先将面积看作x,将价格看作y,并将这些数据利用散点图进行可视化。

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression

import matplotlib
matplotlib.rcParams['axes.unicode_minus']=False

import seaborn as sns			 
sns.set(font="Kaiti",style="ticks",font_scale=1.4)

x = np.array([56,32,78,160,240,89,91,69,43])
y = np.array([90,65,125,272,312,147,159,109,78])

X = x.reshape(-1,1)				
Y = y.reshape(-1,1)
plt.figure(figsize=(10,6))
plt.scatter(X,Y,s=50)
plt.title("原始数据的图")
plt.show()
  1. np.arange(n).reshape(a,b)
    依次生成n个自然数,并且以a行b列的数组形式表示,X=x.reshape(-1,1)是将x这个数组进行重组,-1表示自动计算行数,1表示列数,行数=(a*b)/1。
print(x)
# [ 56  32  78 160 240  89  91  69  43]
print(X)
# [[ 56]
#  [ 32]
#  [ 78]
#  [160]
#  [240]
#  [ 89]
#  [ 91]
#  [ 69]
#  [ 43]]
  1. plt.scatter(X,Y,s)
    X,Y表示的是形状为(n,)的数组,也就是每个点对应的横纵坐标。s表示图中每个点的大小。

显示如下:
在这里插入图片描述

然后就是训练模型和预测。

model = LinearRegression()
model.fit(X,Y)
x1 = np.array([40,]).reshape(-1,1)	# x1为我们去预测的条件
x1_pre = model.predict(np.array(x1))	# 预测面积为40平方米时的房价
print(x1_pre)
# 79.59645966

最后我们再将预测的点也打在图上

plt.figure(figsize = (10,6))
plt.scatter(X,Y)				# 先打出原始数据的点

b = model.intercept_			# 训练好的模型的截距
a = model.coef_					# 训练好的模型的斜率
y = a * X + b					# 原始数据按照训练好的模型画出的直线
plt.plot(X,y)					

y1 = a * x1 + b					# 预测的点(房子面积为40平方米时的房价)
plt.scatter(x1,y1,color='r')	# 将预测的点以红色绘制在散点图上
plt.show()

显示如下:
在这里插入图片描述
⭐️总结:上面针对房屋价格预测的一元线性回归模型,经过了以下5个步骤:

  1. 数据预处理:将数据处理为适合模型使用的数据格式
  2. 建立模型:利用model=LinearRegression()建立线性回归模型
  3. 训练模型:model.fit(x,y)
  4. 模型预测:model.predict([[a]])
  5. 评价模型:利用可视化方式直观地评价模型的预测效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让你彻彻底底理解“并发”以及“并行”

1. 前言 我们做后端的人,一般会遇到别人给你说高并发,那我们知道什么叫并发吗??? 什么叫并行吗??? 今天这篇文章的目的其实就是为了讲明白什么叫并发,并行。好了废话不多…

二维数组八个方向的判断--牛客刷题1023-病菌感染

铁子和顺溜上生物课的时候不小心将几滴超级病菌滴到了培养皿上,这可急坏了他们。 培养皿可以被看成一个n*n的方格,最初病菌滴在了这n*n的格子中的某些格子,病菌的传染方式是这样的,如果一个方格与两个或多个被感染的方格相邻(两个…

2023,数字政务潮水已至

城市是时代发展最鲜活的物理存在,政务是城市的“中枢系统”,将数字技术广泛应用于政府管理服务,既能提高政府公共服务的履约效能,亦顺应经济社会数字化转型的大趋势。 作者|子雨 出品|产业家 从集聚资源求增长,到…

Linux的文件系统和软硬链接

目录 文件系统 磁盘的物理结构: 磁盘的存储结构 磁盘的逻辑抽象结构 管理文件 那么文件如何与属于自己的内容关联起来? 创建一个文件,OS做了什么? 删除一个文件,OS做了什么? 软硬链接 硬链接 软连…

Python学习笔记——字典

字典是一种映射类型 ,它是一个无序的集合。内部元素是键值对形式出现,即一个关键字(key)与一个值(value)的组合(“键-值”对)。字典是一种可变容器模型,且可存…

视频在线点播功能如何实现?

1. 视频点播需求分析1.1 需求描述视频点播需求如下:1、学生可以在windows浏览器上在线观看视频。2、播放器具有快进、快退、暂停等基本功能。1.2 视频点播解决方案1.2.1 流媒体详细参考:https://baike.baidu.com/item/%E6%B5%81%E5%AA%92%E4%BD%93/98740…

2023年网络安全比赛--网络安全应急响应中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.找出被黑客修改的系统别名,并将倒数第二个别名作为Flag值提交; 2.找出系统中被植入的后门用户删除掉,并将后门用户的账号作为Flag值提交(多个用户名之间以英文逗号分割,如:admi…

【项目】小帽教育(一)

小帽教育 第一章 项目开发环境搭建 一、项目背景 1.在线教育市场环境 在线教育行业是一个有着极强的广度和深度的行业,从校内到校外;从早幼教到职业培训;从教育工具到全信息化平台等等。 2020年的新冠疫情外生冲击,让在线教育…

Android 深入系统完全讲解(14)

2 如何定位编译问题 编译不出来,编译不生效,都是可以用比对的方式去处理。之前遇见只改资源单编译不生效,跟正常的一比较发现是系统编译机制是判断代码的时间戳,而不管资源目录,于是处理的方式就是单编配置强制&#…

过年了,我采集采集m3u8格式做做动态壁纸不过分吧

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 首先澄清一下,我用Python收集这些视频,绝不是想做别的什么, 真的只是用来做动态壁纸,大家不要误会!我不是那样的人~ 这样的不过份吧 😻 环境 Python…

二叉树的深度 | 分治 +回溯 + 迭代

二叉树的最大深度 leetcode https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 回溯基本思路 二叉树的最大深度就是 : 从根节点到叶子节点的最大的深度 定义一个全局变量 int res 0 , 以及局部变量 depth 表示当前层的深度当我们访问到根节点的时候(前序位置), 就…

亿信华辰出席2022DAMA中国数据管理峰会,共话数据治理

2023年1月7日-8日,万众瞩目的2022DAMA中国数据管理峰会在上海成功举办,国内外知名行业领袖、业内优秀企业代表出席了会议。会上,围绕 “数据基础制度和数字化转型”主题,前沿观点高能碰撞、专家学者共话未来。亿信华辰首席运营官毛…

CTP开发(1)CTP开发的概述

CTP是上海期货交易所开发的一套程序化交易的API。这篇文章呢,是进行扫盲和引路的,让你在开发时可以少走弯路。1、如果你要进行CTP开发,那么先是在模拟环境下调试,这就需要去上期的仿真模拟网站simnow下载相应的API包。地址如下&am…

[数字信号处理]时域中的离散时间信号和系统

离散时间信号最基本的形式是定义在等间隔的时间离散值上,且在这些离散时间上的信号振幅值是连续的。离散时间系统则是输入为离散时间信号输出也是离散时间信号的系统。对于线性时不变(LTI)系统来说,我们可以发现LTI系统与该系统的…

【4】Kubesphere_多租户

目录 创建企业空间角色 邀请新成员 部门管理 准备工作 创建部门 分配用户至部门 从部门中移除用户 删除和编辑部门 进入访问控制 可以配置企业空间、用户和用户角色 企业空间角色页面列出了以下四个可用的内置角色。创建企业空间时,KubeSphere 会自动创建内…

对称加密面临的那些挑战

密码对于多数人,是既熟悉又陌生的存在,注册账户、登录账号、网购,网络上的开展大多数行为都需要基于输入密码这一前提,从这方面谈,我们熟悉且熟知密码。然而这些由简单的字母、数字、符号等构成的简单口令,…

Spring Data默认值的错误

Spring Data有很多配置的默认值,但不一定都适合你。如一个依赖Cassandra 的项目,有时写入数据后,并不能立马读到。这种错误并没有什么报错,一切都是正常的,就是读不到数据。 1 源码解析 直接使用 Spring Data Cassan…

化繁为简,数字化推动企业数据库升级焕新 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 洪逸群 爱分析高级分析师 张良筠 爱分析分析师 外部专家(按姓氏拼音排序) 李远志 柏睿数据 副总裁 谢寅 镜舟科技 资深解决方案架构师 许哲 中信建投证券 数据组VP 姚延栋 YMatrix 创始人&CEO 张晨…

实体店店铺管理软件应该怎么挑?有这几个功能的错不了!

现在开实体店的都是勇士,不仅要和同行竞争,还要和电商、直播竞争,没有点秘密武器根本不能生存。秘密武器之一,就是在做生意路上摸爬滚打多年的实体店老板们都在用的——实体店店铺管理软件!它会帮助你从手工记账迈入智…

【敲敲云】零代码平台快速入门指南 — 下篇

敲敲云快速入门指南—上篇,我们已经介绍了工作表、视图的使用,现在我们再来看一下自动化工作流和仪表盘的使用 6、创建自动化工作流 工作流是由触发器和若干自动化任务节点组成。为触发器设置一个触发条件,当数据的变更符合触发条件时&#…