【机器学习】经典数据集鸢尾花的分类识别
【机器学习】经典数据集鸢尾花的分类识别
- 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类的修…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
