【机器学习】经典数据集鸢尾花的分类识别
【机器学习】经典数据集鸢尾花的分类识别
- 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类的修…...

C++函数在库中的地址
本文讲述C如何直接调用动态库dll或者so中的函数。 首先我们准备一个被调用库,这个库里面有两个函数,分别是C98 与 C11 下的,名称是run2和run1。 被调用库 相关介绍请看之前的文章《函数指针与库之间的通信讲解》。 //dll_ex_im.h #ifndef…...

图像生成大模型imagen
要生成图像,可以使用深度学习模型,比如 OpenAI 的 DALLE、Google 的 Imagen 等。由于这些模型通常需要较大的计算资源和训练数据,下面是一些如何使用这些模型的基本步骤和方法。 使用预训练图像生成模型 选择模型: 常用的模型包括…...

Redis集群知识及实战
1. 为什么使用集群 在哨兵模式中,仍然只有一个Master节点。当并发写请求较大时,哨兵模式并不能缓解写压力。我们知道只有主节点才具有写能力,那如果在一个集群中,能够配置多个主节点,是不是就可以缓解写压力了呢&…...

数据报表轻松管理,强大“后台”不可少
在数据驱动的时代,制作一份高效、精准的数据报表成为企业管理和决策的重要手段。但要做好数据报表,不仅需要一款功能强大的报表工具,还必须有一个强有力的“后台”管理系统来支撑。那么,为什么报表工具需要一个管理后台࿱…...

简易CPU设计入门:本CPU项目的指令格式
在这一节里面,主要是理论知识,基本上不讲代码。不过,本项目的代码包,大家还是需要下载的。 本项目的代码包的下载方法,参考下面的链接所指示的文章。 下载本项目代码 本节,其实是要讲本项目CPU的指令集。…...
Datawhile 组队学习Tiny-universe Task01
Task01:LLama3模型讲解 仓库链接:GitHub - datawhalechina/tiny-universe: 《大模型白盒子构建指南》:一个全手搓的Tiny-Universe 参考博客:LLaMA的解读与其微调(含LLaMA 2):Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子…...

MCU与SOC的区别
自动驾驶中 MCU 与 SoC 的区别 在自动驾驶系统中,**MCU(微控制单元,Microcontroller Unit)和SoC(系统级芯片,System on Chip)**都是关键的电子元件,但它们在性能、功能和应用领域等…...

51单片机-DS18B20(温度传感器)AT24C02(存储芯片) IIC通信-实验2-温度实时监测(可设置阈值)
作者:王开心 座右铭:刻苦专研,百折不挠,千磨万击还坚韧,任尔东西南北风!干就完了!(可交流技术) 主要利用DS18B20芯片去采集温度,通过采集的温度能够自动保存…...

Vue2接入高德地图API实现搜索定位和点击获取经纬度及地址功能
目录 一、申请密钥 二、安装element-ui 三、安装高德地图依赖 四、完整代码 五、运行截图 一、申请密钥 登录高德开放平台,点击我的应用,先添加新应用,然后再添加Key。 如图所示填写对应的信息,系统就会自动生成。 二、安装…...

msvcp140.dll丢失如何解决?msvcp140.dll丢失的多种解决方法
在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行,给用户带来很大的困扰。那么,当我们遇到msvcp140.dll丢失的情况时,应该如何解决呢&a…...