【机器学习】经典数据集鸢尾花的分类识别
【机器学习】经典数据集鸢尾花的分类识别
- 1、数据集介绍
- 1.1 数据集详情
- 2、实验内容
- 2.1 准备数据集
- 2.2 创建颜色映射对象
- 2.3 绘制特征散点图
- 2.4 数据的归一化
- 2.5 数据的标准化
- 3、实验截图
- 提取萼片长度与萼片宽度分类
- 提取萼片长度与花瓣长度分类
- 提取萼片长度与花瓣宽度分类
- 提取萼片宽度与花瓣长度分类
- 提取萼片宽度与花瓣宽度分类
- 提取花瓣长度与花瓣宽度分类
1、数据集介绍
鸢尾花(Iris)是单子叶百合目花卉,是一种比较常见的花,而且鸢尾花的品种较多。鸢尾花数据集(Iris dataset)是非常著名的机器学习数据集之一,常被用来进行分类和模式识别任务的训练和评估。
鸢尾花数据集最初由Edgar Anderson 测量得到,而后在著名的统计学家和生物学家R.A Fisher于1936年发表的文章中被使用,用其作为线性判别分析(Linear Discriminant Analysis)的一个例子,证明分类的统计方法,从此而被众人所知,尤其是在机器学习这个领域。
1.1 数据集详情
该数据集包含了三个品种的鸢尾花(Setosa、Versicolor、Virginica)每个品种各有50个样本,共计150个样本。对于每个样本,测量了4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),以及其所属的品种标签。
数据集包括4个属性,分别为花萼的长、花萼的宽、花瓣的长和花瓣的宽。对花瓣我们可能比较熟悉,花萼是什么呢?花萼是花冠外面的绿色被叶,在花尚未开放时,保护着花蕾。四个属性的单位都是cm,属于数值变量,四个属性均不存在缺失值的情况,字段如下表所示:
字段名称 | 含义 |
---|---|
sepal length | 萼片长度 |
sepal width | 萼片宽度 |
petal length | 花瓣长度 |
petal width | 花瓣宽度 |
Species | 品种类别:分别是:Setosa、Versicolour、Virginica |
2、实验内容
目标要求:通过选取鸢尾花的四种特征中的任意两种特征,对鸢尾花数据集进行种类的分类识别,并对识别后的结果进行统一化与标准化。
2.1 准备数据集
注:在实验前需要注意可视化的中文以及负号显示,使用以下代码:
plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
plt.rcParams['axes.unicode_minus'] = False # 显示负号
首先使用 load_iris() 函数加载鸢尾花数据集,并将特征矩阵存储在 X 中,分类值存储在 y 中。
数据集里面的特征依次为花萼长、宽和花瓣长、宽; 而类别标签为0,1,2分别表示山鸢尾(setosa),变色鸢尾(versicolor)和维吉尼亚鸢尾(virginica)
然后,通过索引操作从 X 中提取了前5条数据,即 X[0:5],以及第二个品种对应的前5条数据: X[50:55]。使用 np.concatenate 函数将这两组数据合并为一个新的特征矩阵 X1。接下来,同样的操作也应用于目标值 y,提取了相应的标签并存储在 y1 中。
2.2 创建颜色映射对象
使用了 matplotlib.colors.ListedColormap 函数创建了一个颜色映射对象 cm_dark。这个函数接受一个包含颜色名称或颜色代码的列表作为参数。在这里,我传入了一个包含红色、绿色和蓝色的列表 [‘r’, ‘g’, ‘b’]。
可以将 cm_dark 应用于绘图中的相关元素,以改变它们的颜色显示效果。例如,可以在绘制散点图时使用 cmap=cm_dark 参数将数据点的颜色设置为红、绿、蓝三种颜色之一。
2.3 绘制特征散点图
使用 plt.scatter 函数绘制了两个特征(萼片长度和萼片宽度)的散点图,并根据目标值 y1 的类别将数据点着色。
plt.scatter 函数的第一个参数是要绘制的数据点的 x 坐标,即萼片长度(X1[:, 0]);第二个参数是 y 坐标,即萼片宽度(X1[:, 1])。
通过设置 c=np.squeeze(y1),您将目标值 y1 的类别用作颜色映射的输入。它会根据类别的不同,将数据点着上不同的颜色。edgecolor=‘k’ 设置边缘颜色为黑色。s=50 设置散点的大小为 50。最后,使用 plt.show() 显示绘制的散点图。
在绘制散点图中使用:
plt.grid(color='black', linestyle='--')//添加网格线,颜色为黑色,线型为虚线。
plt.xlabel('sepal length(萼片长度)')
plt.ylabel('sepal width(萼片宽度)')//分别设置 x 轴和 y 轴的标签。
plt.title("通过提取萼片长度与宽度的分类")//设置图表的标题。
handles, labels = scatter.legend_elements()//获取散点图中的每个类别对应的标记和标签
//定义图例中的标签内容
legend_labels = ['山鸢尾花(Iris-setosa)','变色鸢尾花(Iris-versicolor)']
//创建图例,并将标记和标签添加进去。
plt.legend(handles, legend_labels, loc='best')
下图为一个可视化的示例:
import numpy as np
from matplotlib import pyplot as plt
import matplotlib as mpl
from sklearn.svm import SVCfrom sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
plt.rcParams['axes.unicode_minus'] = False # 显示负号data = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
print(X1)y1 = np.concatenate([y[0:5], y[50:55]])
print(y1)cm_dark = mpl.colors.ListedColormap(['r', 'g', 'b'])#通过提取列表的第一个特征与第二个特征,即萼片长度与萼片宽度
scatter=plt.scatter(X1[:,0],X1[:,1], c=np.squeeze(y1), edgecolor='k', s=50)plt.grid(color='black', linestyle='--')
plt.xlabel('sepal length(萼片长度)')
plt.ylabel('sepal width(萼片宽度)')
plt.title("通过提取萼片长度与宽度的分类")
# 创建图例
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
plt.legend(handles, legend_labels, loc='best')
plt.show()
2.4 数据的归一化
归一化(Normalization) 是将数值型数据缩放到一个固定的范围,通常是[0, 1]。归一化可以通过以下公式实现:
X_norm = (X - X_min) / (X_max - X_min)
其中,X表示原始数据,X_norm表示归一化后的数据,X_min和X_max分别表示原始数据的最小值和最大值。
归一化使得不同特征的数据具有相同的尺度范围,避免了某些特征对模型训练产生过大的影响。常见的归一化方法有最大最小值归一化和Z-score归一化。
2.5 数据的标准化
标准化(Standardization) 是将数值型数据转换为均值为0、标准差为1的分布。标准化可以通过以下公式实现:
X_std = (X - X_mean) / X_stddev
其中,X表示原始数据,X_std表示标准化后的数据,X_mean和X_stddev分别表示原始数据的均值和标准差。
标准化使得数据分布更符合标准正态分布,对异常值和离群点的影响较小。通常情况下,标准化是数据预处理的常用选择。
3、实验截图
本节放置实验截图,共六张,为四种特征任选两种特征进行数据的可视化以及统一和标准化。
提取萼片长度与萼片宽度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,0], X1[:,1], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal length(萼片长度)')
ax1.set_ylabel('sepal width(萼片宽度)')
ax1.set_title("通过提取萼片长度与宽度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,0],X1[:,1], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal length(萼片长度)')
ax2.set_ylabel('sepal width(萼片宽度)')
ax2.set_title("通过提取萼片长度与宽度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()
提取萼片长度与花瓣长度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,0], X1[:,2], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal length(萼片长度)')
ax1.set_ylabel('petal length(花瓣长度)')
ax1.set_title("通过提取萼片长度与花瓣长度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,0],X1[:,2], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal length(萼片长度)')
ax2.set_ylabel('petal length(花瓣长度)')
ax2.set_title("通过提取萼片长度与花瓣长度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()
提取萼片长度与花瓣宽度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,0], X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal length(萼片长度)')
ax1.set_ylabel('petal width (花瓣宽度)')
ax1.set_title("通过提取萼片长度与花瓣宽度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,0],X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal length(萼片长度)')
ax2.set_ylabel('petal width (花瓣宽度)')
ax2.set_title("通过提取萼片长度与花瓣宽度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()
提取萼片宽度与花瓣长度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,1], X1[:,2], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal width(萼片宽度)')
ax1.set_ylabel('petal length(花瓣长度)')
ax1.set_title("通过提取萼片宽度与花瓣长度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,1],X1[:,2], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal width(萼片宽度)')
ax2.set_ylabel('petal length(花瓣长度)')
ax2.set_title("通过提取萼片宽度与花瓣长度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()
提取萼片宽度与花瓣宽度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,1], X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal width(萼片宽度)')
ax1.set_ylabel('petal width(花瓣宽度)')
ax1.set_title("通过提取萼片宽度与花瓣宽度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,1],X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal width(萼片宽度)')
ax2.set_ylabel('petal width(花瓣宽度)')
ax2.set_title("通过提取萼片宽度与花瓣宽度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()
提取花瓣长度与花瓣宽度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,2], X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('petal length(花瓣长度)')
ax1.set_ylabel('petal width (花瓣宽度)')
ax1.set_title("通过提取花瓣长度与花瓣宽度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,2],X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('petal length(花瓣长度)')
ax2.set_ylabel('petal width (花瓣宽度)')
ax2.set_title("通过提取花瓣长度与花瓣宽度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()
相关文章:

【机器学习】经典数据集鸢尾花的分类识别
【机器学习】经典数据集鸢尾花的分类识别 1、数据集介绍1.1 数据集详情 2、实验内容2.1 准备数据集2.2 创建颜色映射对象2.3 绘制特征散点图2.4 数据的归一化2.5 数据的标准化 3、实验截图提取萼片长度与萼片宽度分类提取萼片长度与花瓣长度分类提取萼片长度与花瓣宽度分类提取…...

Oracle从入门到放弃
Oracle从入门到放弃 左连接和右连接Where子查询单行子查询多行子查询 from子句的子查询select子句的子查询oracle分页序列序列的应用 索引PL/SQL变量声明与赋值select into 赋值变量属性类型 异常循环游标存储函数存储过程不带传出参数的存储过程带传出参数的存储过程 左连接和…...

学习笔记 - 知识图谱的符号表示方法
学习笔记 - 知识图谱的符号表示方法 说明: 首次发表日期:2024-09-13个人阅读学习并摘录成笔记 知识表示的相关名词定义 以下内容摘录自 Knowledge Graphs Applied 2.3小节,然后AI翻译人工润色。 实体(Entities)—表…...

探索RESTful风格的网络请求:构建高效、可维护的API接口【后端 20】
探索RESTful风格的网络请求:构建高效、可维护的API接口 在当今的软件开发领域,RESTful(Representational State Transfer)风格的网络请求已经成为构建Web服务和API接口的标配。RESTful风格以其简洁、无状态、可缓存以及分层系统等…...

【深度智能】:迈向高级时代的人工智能全景指南
前几天偶然发现了一个超棒的人工智能学习网站,内容通俗易懂,讲解风趣幽默,简直让人欲罢不能。忍不住分享给大家,人工智能立刻跳转,开启你的AI学习之旅吧! 第一阶段:基础知识 1. 计算机科…...

unity3d入门教程七
unity3d入门教程七 17.1物理系统17.2静态刚体17.3刚体的碰撞17.4刚体的反弹18.1运动学刚体18.2碰撞检测18.3碰撞事件回调18.4目标的识别18.5碰撞的规避 17.1物理系统 在物理系统中的物体具有质量和速度的是刚体 不用写代码就会自由落体运动了 17.2静态刚体 给 ‘地面’ 添…...

python植物大战僵尸项目源码【免费】
植物大战僵尸是一款经典的塔防游戏,玩家通过种植各种植物来抵御僵尸的进攻。 源码下载地址: 植物大战僵尸项目源码 提取码: 8muq...

目前人工智能时代,程序员如何保持核心竞争力?
随着AIGC(如chatgpt、midjourney、claude等)大语言模型接二连三的涌现,AI辅助编程工具日益普及,程序员的工作方式正在发生深刻变革。有人担心AI可能取代部分编程工作,也有人认为AI是提高效率的得力助手。面对这一趋势,…...
golang学习笔记20——golang微服务负载均衡的问题与解决方案
推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...

基于微信小程序的健身房管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的健…...

【裸机装机系列】6.kali(ubuntu)-图形界面优化-让linux更适合你的使用习惯
接下来就是图形化界面操作的部分了。会用少量截图来说明,图太多会影响阅读体验,直接文字来描述过程吧。 1> 入口 任务栏左上角——> 开始菜单——> settings——> settings manager 大部分配置都会在这里面设置。 2> 设置里面分的4大…...

新的突破,如何让AI与人类对话变得“顺滑”:Moshi背后的黑科技
你有没有想过,当我们跟智能音箱、客服机器人或者语音助手对话时,它们是怎么“听懂”我们说的话,又是怎么迅速给出回应的?就好像你对着Siri、Alexa说一句:“给我订个披萨”,它立刻明白你想要干嘛,然后帮你下单。背后的技术其实比我们想象的要复杂得多,但现在,有了Moshi…...

torch.embedding 报错 IndexError: index out of range in self
文章目录 1. 报错2. 原因3. 解决方法 1. 报错 torch.embedding 报错: IndexError: index out of range in self2. 原因 首先看下正常情况: import torch import torch.nn.functional as Finputs torch.tensor([[1, 2, 4, 5], [4, 3, 2, 9]]) embedd…...

rocky9虚拟机配置双网卡的详细过程
编辑虚拟机配置->添加->选择网络适配器->确认->打开虚拟机 1.ip add查看第二个网卡的名称,我这里是ens36 2.cd到网卡的配置文件目录 cd /etc/NetworkManager/system-connections/ ls3.复制一份网卡的配置文件并改名为ens36.nmconnection(根据自己的第…...

索引的介绍
目录 1.索引的介绍 1.1 什么是索引 1.2 为什么要使用索引 2.索引应该选择哪种数据结构 3.MYSQL中的页 3.1为什么要使用页 3.2页文件头和页文件尾 3.3 页主体 3.3页目录 3.4数据页头 4.B在MYSQL索引中的应用 4.1计算三层树高的B树可以存放多少条记录 5.索引分类 5.1 主…...

Web后端服务平台解析漏洞与修复、文件包含漏洞详解
免责申明 本文仅是用于学习检测自己搭建的Web后端服务平台解析漏洞、文件包含漏洞的相关原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《中华人民共和国网络安全法》及其所在国…...
树莓派介绍与可安装的操作系统
引言 自 2012 年问世以来,树莓派(Raspberry Pi) 已成为全球最受欢迎的微型单板计算机之一。最初,树莓派的目标是为学校和发展中国家的学生提供一个廉价的计算平台,以促进计算机科学教育。然而,凭借其低成本…...

Qt常用控件——QTextEdit
文章目录 QTextEdit核心属性和信号同步显示示例信号示例 QTextEdit核心属性和信号 QTextEdit表示多行输入框,是一个富文本和markdown编辑器,并且能在内存超出编辑框范围时自动提供滚动条。 QPlainTexEdit是纯文本,QTextEdit不仅表示纯文本&a…...

docker-compose 部署 flink [支持pyflink]
下载 flink 镜像 [rootlocalhost ~]# docker pull flink Using default tag: latest latest: Pulling from library/flink 762bedf4b1b7: Pull complete 95f9bd9906fa: Pull complete a880dee0d8e9: Pull complete 8c5deab9cbd6: Pull complete 56c142282fae: Pull comple…...
C++中string类的模拟实现
目录 1.string类的结构 2.默认成员函数 2.1.默认构造函数 2.2拷贝构造函数 2.3赋值运算符重载 2.4析构函数 3.迭代器(Iterators) 4.string类的空间操作(Capacity) 4.1size() 4.2capacity() 4.3clear() 4.4reserve() 5.元素访问(Element access) 6.string类的修…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...