当前位置: 首页 > news >正文

Python----深度学习(基于DNN的吃鸡预测)

 一、目标

        如何使用 PyTorch 实现一个简单的深度神经网络(DNN)模型,并用于回归任务。该模型通过训练数据集来预测玩家在游戏中的最终排名百分比。代码通过读取数据集、数据处理、模型训练和模型评估等步骤。

二、数据集介绍

        和平精英(Peace Elite)是一款受欢迎的多人在线生存射击游戏,通常被称为“绝地求生:刺激战场”。在这个游戏中,玩家被投放到一块广大的战斗区域,必须与其他玩家竞争以成为最后一个生存者。为了分析或研究《和平精英》的玩家表现,常常会收集有关比赛和玩家的数据。本数据集包含了400多万条关于玩家在游戏中的表现记录

数据集介绍

  1. 总体描述:

    • 该数据集记录了大量玩家在不同比赛中的表现,包含了玩家的杀敌、死亡、以及使用的物品等各种重要数据。

    • 数据集是以每一局(match)为单位进行收集,提供了丰富的统计信息,可以用于分析玩家的表现、策略以及游戏平衡性。

  2. 数据字段:

    • 玩家ID(Id): 唯一标识每位玩家的ID。

    • 队伍ID(groupId): 记录玩家所处的队伍,便于分析团队合作。

    • 匹配ID(matchId): 每场比赛的唯一标识符,便于追踪每场比赛的数据。

    • 伤害相关字段: 包括伤害(damageDealt)伤害过的敌人数(assists)击倒敌人数量(DBNOs)、**杀敌数量(kills)爆头杀敌数量(headshotKills)**等,反映玩家的战斗能力。

    • 治疗与回复: 如救援类物品使用数量(heals)救援队友次数(revives),显示玩家的生存和团队支持能力。

    • 移动与探索: 信息如步行距离(walkDistance)游泳距离(swimDistance)交通工具使用距离(rideDistance),帮助分析玩家在地图上的移动方式。

    • 比赛结果: 包括排名(killPlace)胜利排名百分比(winPlacePerc)外部排名(killPoints 和 winPoints),用于评价玩家的整体表现。

  3. 数据集的应用:

    • 表现分析: 通过分析玩家的各项数据,游戏开发者和研究人员可以识别出顶级玩家的特点和策略,从而优化游戏设计。

    • 平衡性测试: 通过对不同 Weapons 和技能的使用情况进行统计,开发者可以评估和平精英游戏内的平衡性。

    • 玩家行为研究: 研究玩家在不同比赛模式(如“solo”、“duo”、“squad”等)下的表现,了解玩家偏好和游戏模式的吸引力。

  4. 技术考虑:

    • 数据集的规模超过400万条记录,适合使用大数据处理技术(如Apache Spark)进行分析和挖掘。

    • 可能需要对数据进行清洗和预处理,以处理缺失值或异常值,从而提升分析的准确性。

字段名称描述
Id玩家ID
groupId队伍的 ID。 如果同一组玩家在不同的比赛中比赛,他们每次都会有不同的 GroupId。
matchId匹配的 ID(每一局一个 ID)。
assists伤害过多少敌人(最终该敌人被队友杀害)。
boosts使用过多少个提升性的物品 (boost items used)。
damageDealt造成的总伤害-自己所受的伤害。
DBNOs击倒多少敌人。
headshotKills通过爆头而杀死的敌人数量。
heals使用了多少救援类物品。
killPlace杀死敌人数量的排名。
killPoints基于杀戮的玩家外部排名。将其视为Elo排名,只有杀死才有意义。
kills杀死的敌人的数量。
killStreaks短时间内杀死敌人的最大数量。
longestKill玩家和玩家在死亡时被杀的最长距离。
matchDuration匹配用了多少秒。
matchType单排/双排/四排;标准模式是 “solo”,“duo”,“squad”,“solo-fpp”,“duo-fpp”和“squad-fpp”;其他模式来自事件或自定义匹配。
maxPlace在该局中已有数据的最差的队伍名词。
numGroups在该局比赛中有玩家数据的队伍数量。
rankPoints类似 Elo 的玩家排名。此排名不一致,并且在 API 的下一个版本中已弃用,因此请谨慎使用。值 -1 表示“无”。
revives玩家救援队友的次数。
rideDistance玩家使用交通工具行驶了多少米。
roadKills在交通工具上杀死了多少玩家。
swimDistance游泳了多少米。
teamKills该玩家杀死队友的次数。
vehicleDestroys毁坏了多少交通工具。
walkDistance步行运动了多少米。
weaponsAcquired捡了多少把枪。
winPoints基于赢的玩家外部排名。将其视为 Elo 排名,只有获胜才有意义。
winPlacePerc预测目标,以百分数计算,介于 0-1 之间,1 对应第一名,0 对应最后一名。

 三、设计思路

3.1、准备工作

导入模块包

import os
import random
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import torch
from sklearn.preprocessing import StandardScaler
from torch import nn, optim
from torch.utils.data import TensorDataset, DataLoader

 设置随机种子保证结果的可重复性

def setup_seed(seed):# 设置 Numpy 随机数种子,确保Numpy生成的随机数序列一致np.random.seed(seed)# 设置Python内置随机数种子,保证Python内置的随机函数生成的随机数一致random.seed(seed)# 设置Python哈希种子,避免不同运行环境下哈希结果不同,影响随机数生成os.environ['PYTHONHASHSEED'] = str(seed)# 设置PyTorch 随机种子,使PyTorch生成的随机数序列可以重复torch.manual_seed(seed)# 检查是否有可用的CUDA设备(GPU)if torch.cuda.is_available():# 设置 CUDA 随机种子,保证在GPU上的随即操作可重复torch.cuda.manual_seed(seed)# 为所有 GPU 设置随机种子torch.cuda.manual_seed_all(seed)# 关闭 cudnn 自动寻找最优算法加速的功能,保证结果可重复torch.backends.cudnn.benchmark = False# 设置 cudnn 为确定性算法,确保每次运行结果一致torch.backends.cudnn.deterministic = True

检测是否使用cuda

if torch.cuda.is_available():device = 'cuda'print('CUDA is useful!!')
else:device = 'cpu'print('CUDA is not useful!!')

设置 pandas 显示选项

# 最多显示1000列
pd.set_option('display.max_columns', 1000)
# 显示宽度为1000
pd.set_option('display.width', 1000)
# 每列最多显示1000个字符
pd.set_option('display.max_colwidth', 1000)

3.2、数据操作 

读取数据

train_data = pd.read_csv("train_V2.csv")

 查看缺失情况,并删除

train_data = train_data.dropna(subset=['winPlacePerc'])  # 删除目标列缺失的行

对 'matchId' 字段进行分组求和,以计算每次比赛的人数,选取每局人数为100的数据

# 按比赛 ID 分组并统计每组的记录数量
count = train_data.groupby('matchId')['matchId'].transform('count')# 将统计结果添加到原数据集中
train_data['playersJoined'] = count  # 添加表示每场比赛参与人数的新列# 选取 train_data["playersJoined"] 等于 100 的数据,即选择比赛人数为100的作为训练数据
selected_data = train_data[train_data["playersJoined"] == 100]

 划分特征和目标

X = selected_data.drop(['Id', 'groupId', 'matchId','winPlacePerc'], axis=1)  # 特征集
y = selected_data['winPlacePerc']  # 目标集# 对 'matchType' 列进行独热编码处理
X = pd.get_dummies(X, columns=['matchType'])

划分训练集和测试集 

X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75, random_state=42)

3.3、标准化

scaler = StandardScaler()  # 实例化标准化器
X_train_scaled = scaler.fit_transform(X_train)  # 拟合并转换训练集
X_test_scaled = scaler.transform(X_test)  # 仅对测试集进行转换

3.4、将数据转换为PyTorch的张量 

X_train_tensor = torch.tensor(X_train_scaled, dtype=torch.float32)  # 转换训练特征
y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32).view(-1, 1)  # 转换训练目标
X_test_tensor = torch.tensor(X_test_scaled, dtype=torch.float32)  # 转换测试特征
y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32).view(-1, 1)  # 转换测试目标

3.5、使用DataLoader去加载数据集 

train_dataset = TensorDataset(X_train_tensor, y_train_tensor)  # 创建张量数据集
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)  # 创建数据加载器

3.6、定义模型 

class DNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(DNN, self).__init__()  # 调用父类构造函数self.fc1 = nn.Linear(input_size, hidden_size)  # 输入层到隐藏层self.fc2 = nn.Linear(hidden_size, hidden_size)  # 隐藏层到隐藏层self.fc3 = nn.Linear(hidden_size, output_size)  # 隐藏层到输出层self.relu = nn.ReLU()  # ReLU 激活函数def forward(self, x):# 定义前向传播x = self.relu(self.fc1(x))  # 第一个线性层与 ReLU 激活x = self.relu(self.fc2(x))  # 第二个线性层与 ReLU 激活x = self.fc3(x)  # 输出层return x# 实例化模型
input_size = X_train_tensor.shape[1]  # 输入特征的维数
hidden_size = 128  # 隐藏层的节点数
output_size = 1  # 输出层的节点数
model = DNN(input_size, hidden_size, output_size).to(device)  # 创建模型并移动到设备

3.7、定义损失函数和优化器

criterion = nn.MSELoss()  # 均方误差损失
optimizer = optim.Adam(model.parameters(), lr=0.01)  # Adam 优化器

3.8、训练模型

num_epochs = 10  # 训练轮数for epoch in range(num_epochs):model.train()  # 设置模型为训练模式total_loss = 0  # 初始化总损失for inputs, labels in train_loader:optimizer.zero_grad()  # 清空梯度inputs = inputs.to(device)  # 将输入移动到设备labels = labels.to(device)  # 将标签移动到设备# 前向传播outputs = model(inputs)  # 预测输出loss = criterion(outputs, labels)  # 计算损失# 反向传播和优化loss.backward()  # 反向传播计算梯度optimizer.step()  # 更新模型参数total_loss += loss.item()  # 累加损失avg_loss = total_loss / len(train_loader)  # 计算平均损失print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {avg_loss:.4f}')  # 输出每轮损失

3.9、模型评估

model.eval()  # 设置模型为评估模式
with torch.no_grad():  # 关闭梯度计算predictions = model(X_test_tensor.to(device))  # 预测测试集test_loss = criterion(predictions, y_test_tensor.to(device))  # 计算测试损失

3.10、 可视化

plt.figure(1)
plt.scatter(y_test_numpy, predictions, color='blue')  # 绘制实际值与预测值的散点图
plt.plot([min(y_test_numpy), max(y_test_numpy)], [min(y_test_numpy), max(y_test_numpy)], linestyle='--', color='red',linewidth=2)  # 绘制理想情况下的对角线
plt.xlabel('Actual Values')  # X 轴标签
plt.ylabel('Predicted Values')  # Y 轴标签
plt.title('Regression Results')  # 图表标题# 绘制实际值和预测值的曲线
plt.figure(2)
plt.plot(y_test_numpy[-100:], label='Actual Values', marker='o')  # 绘制实际值
plt.plot(predictions[-100:], label='Predicted Values', marker='x')  # 绘制预测值
plt.xlabel('Sample Index (Sorted)')  # X 轴标签
plt.ylabel('Values')  # Y 轴标签
plt.title('Actual vs Predicted Values in Linear Regression')  # 图表标题
plt.legend()  # 显示图例
plt.show()  # 显示图表

3.11、完整代码

import os
import random
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import torch
from sklearn.preprocessing import StandardScaler
from torch import nn, optim
from torch.utils.data import TensorDataset, DataLoader
from sklearn.model_selection import train_test_split# 设置随机种子以保证结果的可重复性
def setup_seed(seed):np.random.seed(seed)  # 设置 Numpy 随机种子random.seed(seed)  # 设置 Python 内置随机种子os.environ['PYTHONHASHSEED'] = str(seed)  # 设置 Python 哈希种子torch.manual_seed(seed)  # 设置 PyTorch 随机种子if torch.cuda.is_available():torch.cuda.manual_seed(seed)  # 设置 GPU 随机种子torch.cuda.manual_seed_all(seed)  # 确保所有 GPU 使用相同随机种子torch.backends.cudnn.benchmark = False  # 关闭 cudnn 加速torch.backends.cudnn.deterministic = True  # 设置 cudnn 为确定性算法# 设置随机种子
setup_seed(0)# 检查是否有可用的 GPU,如果有则使用 GPU,否则使用 CPU
if torch.cuda.is_available():device = torch.device("cuda")  # 使用 GPUprint("CUDA is available. Using GPU.")
else:device = torch.device("cpu")  # 使用 CPUprint("CUDA is not available. Using CPU.")# 读取训练数据集
train_data = pd.read_csv("train_V2.csv")# 检查并删除缺失值
train_data = train_data.dropna(subset=['winPlacePerc'])  # 删除目标列缺失的行# 对 'matchId' 字段进行分组求和,以计算每次比赛的人数
# 按比赛 ID 分组并统计每组的记录数量
count = train_data.groupby('matchId')['matchId'].transform('count')# 将统计结果添加到原数据集中
train_data['playersJoined'] = count  # 添加表示每场比赛参与人数的新列# 选取 train_data["playersJoined"] 等于 100 的数据,即选择比赛人数为100的作为训练数据
selected_data = train_data[train_data["playersJoined"] == 100]# 将数据集划分为特征集(X)和目标集(y)
X = selected_data.drop(['Id', 'groupId', 'matchId','winPlacePerc'], axis=1)  # 特征集
y = selected_data['winPlacePerc']  # 目标集# 对 'matchType' 列进行独热编码处理
X = pd.get_dummies(X, columns=['matchType'])# 将数据集按比例划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75, random_state=42)# 使用标准化进行特征缩放
scaler = StandardScaler()  # 实例化标准化器
X_train_scaled = scaler.fit_transform(X_train)  # 拟合并转换训练集
X_test_scaled = scaler.transform(X_test)  # 仅对测试集进行转换# 将数据转换为 PyTorch 张量
X_train_tensor = torch.tensor(X_train_scaled, dtype=torch.float32)  # 转换训练特征
y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32).view(-1, 1)  # 转换训练目标
X_test_tensor = torch.tensor(X_test_scaled, dtype=torch.float32)  # 转换测试特征
y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32).view(-1, 1)  # 转换测试目标# 创建数据加载器
train_dataset = TensorDataset(X_train_tensor, y_train_tensor)  # 创建张量数据集
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)  # 创建数据加载器# 定义一个简单的深度神经网络模型
class DNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(DNN, self).__init__()  # 调用父类构造函数self.fc1 = nn.Linear(input_size, hidden_size)  # 输入层到隐藏层self.fc2 = nn.Linear(hidden_size, hidden_size)  # 隐藏层到隐藏层self.fc3 = nn.Linear(hidden_size, output_size)  # 隐藏层到输出层self.relu = nn.ReLU()  # ReLU 激活函数def forward(self, x):# 定义前向传播x = self.relu(self.fc1(x))  # 第一个线性层与 ReLU 激活x = self.relu(self.fc2(x))  # 第二个线性层与 ReLU 激活x = self.fc3(x)  # 输出层return x# 实例化模型
input_size = X_train_tensor.shape[1]  # 输入特征的维数
hidden_size = 128  # 隐藏层的节点数
output_size = 1  # 输出层的节点数
model = DNN(input_size, hidden_size, output_size).to(device)  # 创建模型并移动到设备# 定义损失函数和优化器
criterion = nn.MSELoss()  # 均方误差损失
optimizer = optim.Adam(model.parameters(), lr=0.01)  # Adam 优化器# 训练模型
num_epochs = 10  # 训练轮数for epoch in range(num_epochs):model.train()  # 设置模型为训练模式total_loss = 0  # 初始化总损失for inputs, labels in train_loader:optimizer.zero_grad()  # 清空梯度inputs = inputs.to(device)  # 将输入移动到设备labels = labels.to(device)  # 将标签移动到设备# 前向传播outputs = model(inputs)  # 预测输出loss = criterion(outputs, labels)  # 计算损失# 反向传播和优化loss.backward()  # 反向传播计算梯度optimizer.step()  # 更新模型参数total_loss += loss.item()  # 累加损失avg_loss = total_loss / len(train_loader)  # 计算平均损失print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {avg_loss:.4f}')  # 输出每轮损失# 评估模型
model.eval()  # 设置模型为评估模式
with torch.no_grad():  # 关闭梯度计算predictions = model(X_test_tensor.to(device))  # 预测测试集test_loss = criterion(predictions, y_test_tensor.to(device))  # 计算测试损失# 将预测值和目标值转换为 NumPy 数组
predictions = predictions.cpu().numpy()  # 移动到 CPU 并转换为 NumPy 数组
y_test_numpy = y_test_tensor.cpu().numpy()  # 将实际目标值转换为 NumPy 数组# 绘制结果
plt.figure(1)
plt.scatter(y_test_numpy, predictions, color='blue')  # 绘制实际值与预测值的散点图
plt.plot([min(y_test_numpy), max(y_test_numpy)], [min(y_test_numpy), max(y_test_numpy)], linestyle='--', color='red',linewidth=2)  # 绘制理想情况下的对角线
plt.xlabel('Actual Values')  # X 轴标签
plt.ylabel('Predicted Values')  # Y 轴标签
plt.title('Regression Results')  # 图表标题# 绘制实际值和预测值的曲线
plt.figure(2)
plt.plot(y_test_numpy[-100:], label='Actual Values', marker='o')  # 绘制实际值
plt.plot(predictions[-100:], label='Predicted Values', marker='x')  # 绘制预测值
plt.xlabel('Sample Index (Sorted)')  # X 轴标签
plt.ylabel('Values')  # Y 轴标签
plt.title('Actual vs Predicted Values in Linear Regression')  # 图表标题
plt.legend()  # 显示图例
plt.show()  # 显示图表

相关文章:

Python----深度学习(基于DNN的吃鸡预测)

一、目标 如何使用 PyTorch 实现一个简单的深度神经网络(DNN)模型,并用于回归任务。该模型通过训练数据集来预测玩家在游戏中的最终排名百分比。代码通过读取数据集、数据处理、模型训练和模型评估等步骤。 二、数据集介绍 和平精英&#xf…...

DeepSeek系列(10):与其他AI工具协同

DeepSeek与绘图AI配合使用 在当今多元化的AI生态中,将不同专长的AI工具协同使用,能够实现远超单一工具的综合效果。DeepSeek作为强大的语言模型,与专业绘图AI的配合尤为默契,可以在创意构思与视觉呈现之间建立无缝桥梁。 创意-视觉协作流程 从文本到图像的完整路径 创意…...

Spark-Streaming核心编程:有状态转化操作与DStream输出

在Spark-Streaming的学习旅程中,有状态转化操作和DStream输出是两个关键知识点,今天就来深入聊聊它们。 先说说有状态转化操作,这里面 UpdateStateByKey 和 WindowOperations 很重要。 UpdateStateByKey 主要用于跨批次维护状态,就…...

Ldap高效数据同步- MirrorMode双主复制模式配置详解(上)

#作者:朱雷 文章目录 一、Syncrepl 复制和MirrorMode复制1.1. 什么是复制模式1.2. 什么是 syncrepl同步复制1.3. 什么是 MirrorMode 复制(双主模式)1.4. 双数据中心配置镜像模式架构 二、Ldap环境部署三、配置Mirror复制类型3.1. 配置节点1配…...

【刷题Day28】Python/JAVA - 02(浅)

Python 什么是 Python 的闭包? 闭包(Closure)是Python中的一种独特的函数机制。简而言之,闭包是指在一个内部函数中,引用了外部函数的变量,而这个外部函数已经执行完毕并返回了内部函数,然而内…...

纯净IP的优势:稳定性与安全性的结合

在跨境电商、数据采集、社交运营等对网络质量要求高的场景中,选择一个可靠的IP资源,是保护账号安全、提升业务效率的关键。纯净IP凭借其独特的稳定性与安全性,成为越来越多用户的选择。本文将带你深入了解纯净IP的价值,以及如何应…...

探索DeepWiki:GitHub源码阅读的变革性工具

DeepWiki 是什么 DeepWiki 是由 Cognition Labs 精心打造的一款创新工具,堪称 GitHub Repo 源代码的 “智慧解读器”,能将其转化为可对话式文档 ,为开发者提供实时交流、即时更新文档的功能。它基于 Devin 技术,为每一个 GitHub …...

基于WebRTC技术,EasyRTC音视频实时通话助力全网会议的智能化转型

一、方案背景 随着数字化转型,企业、教育、政府等对全网会议需求激增。传统视频会议部署复杂、成本高、兼容性差,无法满足远程协作的多样化需求。EasyRTC实时通信功能强大,能为全网会议提供高效、稳定、易用的解决方案,支持多终端…...

设计模式全解析:23种经典设计模式及其应用

创建型模式 1. 单例模式(Singleton Pattern) 核心思想:确保一个类只有一个实例,并提供一个全局访问点。适用场景:需要共享资源的场景,如配置管理、日志记录等。 public class Singleton {// 静态变量保存…...

Web开发-JavaEE应用依赖项Log4j日志Shiro验证FastJson数据XStream格式

知识点: 1、安全开发-JavaEE-第三方依赖开发安全 2、安全开发-JavaEE-数据转换&FastJson&XStream 3、安全开发-JavaEE-Shiro身份验证&Log4j日志处理 一、演示案例-WEB开发-JavaEE-第三方依赖&FastJson&XStream FastJson 一个阿里巴巴开发的J…...

小集合 VS 大集合:MySQL 去重计数性能优化

小集合 VS 大集合:MySQL 去重计数性能优化 前言一、场景与问题 🔎二、通俗执行流程对比三、MySQL 执行计划解析 📊四、性能瓶颈深度剖析 🔍五、终极优化方案 🏆六、总结 前言 📈 测试结果: 在…...

什么是模块化区块链?Polkadot 架构解析

原文:https://polkadot.com/blog/understanding-modular-blockchains/ 作者:Joey Prebys 编译:OneBlock 区块链的构建方式有很多种,而不同的架构选择会直接影响性能、可扩展性和开发者体验。随着行业的发展,单体区块…...

C++翻转数相乘 2024年信息素养大赛复赛 C++小学/初中组 算法创意实践挑战赛 真题详细解析

目录 C++翻转数相乘 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、 推荐资料 1、C++资料 2、Scratch资料 3、Python资料 C++翻转数相乘 2024年信息素养大赛 C++复赛真题 一、题目要求 1、编程实现 假设一个…...

Go 语言中的 `select` 语句详解

select 是 Go 语言中处理通道(Channel)操作的一个强大控制结构&#xff0c;它允许 goroutine 同时等待多个通道操作。下面我将全面详细地解释 select 语句的各个方面。 基本语法 select 语句的基本语法如下&#xff1a; select { case <-ch1:// 如果从 ch1 成功接收数据&…...

Nacos简介—4.Nacos架构和原理二

大纲 1.Nacos的定位和优势 2.Nacos的整体架构 3.Nacos的配置模型 4.Nacos内核设计之一致性协议 5.Nacos内核设计之自研Distro协议 6.Nacos内核设计之通信通道 7.Nacos内核设计之寻址机制 8.服务注册发现模块的注册中心的设计原理 9.服务注册发现模块的注册中心的服务数…...

Web服务器技术选型指南:主流方案、核心对比与策略选择

Web服务器技术选型指南&#xff1a;主流方案、核心对比与策略选择 一、主流Web服务器概览 在当今互联网架构中&#xff0c;Web服务器承担着处理HTTP请求、管理资源分配和保障服务稳定性的核心职责。根据应用场景和技术特性的不同&#xff0c;主流的Web服务器可分为以下五类&a…...

Git和Gitlab的部署和操作

一。GIT的基本操作 1.GIT的操作和查看内容 [rootmaster ~]# yum install git -y [rootmaster ~]# git config --list&#xff1a;查看所有配置 2.GIT仓库初始化 [rootmaster ~]# mkdir /gittest&#xff1a;创建目录 [rootmaster ~]# cd /gittest/&#xff1a;进入目录 [rootm…...

【Git】初始Git及入门命令行

目录 为什么学习 Git 这么重要&#xff1f; 1. 安装 Git 2. 配置 Git 3. 创建本地 Git 仓库 1. git初始化远程仓库&#xff1a; git init 2. 就是要新增两个必须要配置的选项&#xff1a; name 和 email 3. 查看当前本地仓库的配置情况&#xff1a; git config -l 4. 删…...

自然语言to SQL的评估

一、怎么进行一个自然语言to SQL评估&#xff1f; 1.DB——准备可用的数据表 2.准备问题集&#xff0c;自然语言|正确的预期SQL 3.大模型执行完成的SQL 4.Table.json——一个存储表格数据或者数据库表结构信息的 JSON 文件。当前是存储的表结构信息的&#xff0c;存储数据库…...

详解React Fiber架构中,reconcile阶段的具体工作流程

在 React Fiber 架构里&#xff0c;协调&#xff08;Reconcile&#xff09;阶段处于虚拟 DOM&#xff08;VDOM&#xff09;与实际 DOM 渲染之间&#xff0c;主要承担着把 VDOM 转化为 Fiber 节点树、开展 Diff 比较并标记节点变化的任务。下面详细阐述协调阶段的具体工作流程&a…...

迅雷精简绿色融合版【高速下载版】12.1.9.2870【11.2.2.1716】【20250426】

迅雷Thunder 11官方版会提示敏感需升级不能使用&#xff0c;本人制作的迅雷 12.1.9.2870【11.2.2.1716】精简绿色融合版是在11.2.2.1716版本的基础上制作的&#xff0c;实际版本号显示为12.1.9.2870&#xff0c;不是真正意义的迅雷12.1.9.2870精简绿色版&#xff0c;本实质上还…...

决策树相关案例

全流程 以下是一个更复杂、全流程的决策树和随机森林示例&#xff0c;不仅包括模型训练和预测&#xff0c;还涵盖了数据预处理、超参数调优以及模型评估的可视化。我们依旧使用鸢尾花数据集&#xff0c;并额外引入 GridSearchCV 进行超参数调优&#xff0c;使用 matplotlib 进…...

AI音频核爆!Kimi开源“六边形战士”Kimi-Audio,ChatGPT语音版?

音频处理领域的天花板被撕开了。 刚刚&#xff0c;kimi 发布全新通用音频基础模型 Kimi-Audio&#xff0c;这款由月之暗面&#xff08;Moonshot AI&#xff09;推出的开源模型&#xff0c;在 24 小时内收获 3.2 万星标&#xff0c;不仅以 1.28% 词错率刷新语音识别纪录&#xf…...

vscode vue 的插件点击组件不能跳转到文件问题解决

ctrl shift p 打开命令行&#xff0c;搜索 更改语言模式 选择第二项 选择 vue 现在可以了...

二叉树的前序、中序和后序遍历:详解与实现

1. 前序遍历&#xff08;Pre-order Traversal&#xff09; 1.1 定义 前序遍历的顺序是&#xff1a;先访问根节点&#xff0c;然后递归地遍历左子树&#xff0c;最后递归地遍历右子树。 1.2 访问顺序 对于任意节点&#xff1a; 访问根节点。 递归遍历左子树。 递归遍历右子…...

5、Rag基础:RAG 专题

RAG 简介 什么是检索增强生成? 检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强…...

FISCO BCOS 智能合约开发详解

一、FISCO BCOS 智能合约开发概览 FISCO BCOS 是一个国产开源联盟链平台&#xff0c;支持两种类型的智能合约&#xff1a;​FISCO BCOS Documentation Solidity 合约&#xff1a;​与以太坊兼容&#xff0c;使用 Solidity 语言编写&#xff0c;适用于灵活的业务逻辑开发。 预…...

Linux操作系统从入门到实战(四)Linux基础指令(下)

Linux操作系统从入门到实战&#xff08;四&#xff09;Linux基础指令&#xff08;下&#xff09; 前言一、date 指令二、cal 指令三、find 指令四、which 指令五、whereis 指令六、alias 指令七、grep 指令八、zip/unzip 指令九、tar 指令&#xff08;重要&#xff09;十、bc 指…...

使用 LLM助手进行 Python 数据可视化

在数据科学中&#xff0c;数据可视化是一项至关重要的任务&#xff0c;旨在揭示数据背后的模式和洞察&#xff0c;并向观众传达这些信息。然而&#xff0c;在编程语言&#xff08;如 Python&#xff09;中创建有洞察力的图表有时可能会耗时且复杂。本文介绍了一种借助 AI 助手&…...

docker安装jenkins自动化测试

#搭建gitlab docker pull gitlab/gitlab-ce docker run -d\--hostname localhost \-p 443:443 -p 80:80 -p 2222:22 \--name gitlab \-v /myproject/gitlab/config:/etc/gitlab \-v /myproject/gitlab/logs:/var/log/gitlab \-v /myproject/gitlab/data:/var/opt/gitlab \gitla…...

Python3:面向对象编程

这里写目录标题 &#x1f9e9; 面向对象编程&#xff1a;让代码化身为积木世界一、核心概念&#xff1a;类与对象二、四大基石&#xff1a;面向对象的核心特性1️⃣ 封装(Encapsulation)&#xff1a;包装复杂性&#xff0c;提供简单接口2️⃣ 继承(Inheritance)&#xff1a;站在…...

数据可视化 —— 饼图

一、饼图的所有常用使用场景 饼图是一种直观展示数据占比关系的图表&#xff0c;适用于以下常见场景&#xff1a; 1. 市场与商业分析 市场份额&#xff1a;展示不同品牌/产品在市场中的占有率。 收入构成&#xff1a;分析公司各业务线或产品的收入占比。 客户分布&#xff1…...

OpenLayers WebGL与3D渲染 (进阶一)

1. WebGL概述 WebGL是一种JavaScript API&#xff0c;它基于OpenGL ES 2.0/3.0标准&#xff0c;允许在不使用插件的情况下在兼容的Web浏览器中呈现高性能的交互式3D和2D图形。在地理信息系统(GIS)领域&#xff0c;WebGL为地图渲染和空间数据可视化提供了强大的性能支持。 1.1…...

ARP协议(地址解析协议)

ARP协议是用来把IP地址转换成MAC地址的。 因为在局域网里&#xff0c;真正通信靠的是MAC地址&#xff0c;但我们平时只知道目标的IP地址&#xff0c;所以需要一个办法把IP地址变成MAC地址 —— 这个过程就是靠ARP完成的。 举个超简单的例子&#xff1a; 你电脑要发数据给192.1…...

深度学习常见框架:TensorFlow 与 PyTorch 简介与对比

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、为什么需要深度学习框架&#xff1f; 2、框架的发展背…...

iOS 类与对象底层原理

iOS 类与对象底层原理 文章目录 iOS 类与对象底层原理探索对象本质objc_setProperty 源码cls与类的关联原理联合体isa的类型isa_t 原理探索initIsa方法通过setClass方法中的shiftcls来验证绑定的一个流程通过 isa & ISA_MSAK通过object_getClass通过位运算 类&类的结构…...

Babel、core-js、Loader之间的关系和作用全解析

在现代前端开发中&#xff0c;Babel、polyfill&#xff08;如 core-js&#xff09;和 Loader 是非常常见又容易混淆的几个概念。为了彻底搞明白它们的作用、关系和使用方法&#xff0c;下面一篇文章详细梳理。 一、Babel的作用 Babel 是一个 JavaScript 的编译器&#xff0c;主…...

总线位宽不变,有效数据位宽变化的缓存方案

总线位宽不变&#xff0c;有效数据位宽变化的缓存方案 譬如总线位宽为64bit&#xff0c;但是有时候只有高32bit有效&#xff0c;有时只有低32bit有效&#xff0c;有时64bit都有效。总线上收到的数据要先缓存到FIFO中&#xff0c;那么这个FIFO的宽度和深度如何设置呢&#xff1…...

若依脱敏功能升级:接口返回想脱就脱,想不脱就不脱(实现灵活可控制的数据脱敏)

若依原生框架中的脱敏功能不够灵活&#xff08;默认超级管理员不脱敏&#xff0c;其他则脱敏&#xff09;。 有时候&#xff0c;我们有些接口想要脱敏&#xff0c;但是有些接口又不想脱敏。&#xff08;例如列表查询的时候脱敏。修改的时候&#xff0c;不想数据脱敏&#xff0…...

【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?

问题描述 在Azure Redis服务中&#xff0c;如何实现只允许Azure App Service访问呢&#xff1f; 问题解答 Azure Redis 开启 防火墙的功能&#xff0c;并在防火墙中添加上App Service的出口IP地址即可。两步即可实现此目的&#xff01; 1&#xff09;查询 App Service 的出口IP…...

如何解决无训练数据问题:一种更为智能化的解决方案

手动标注数据真的很费时间,而且买数据集又贵得要命,还不一定能完全符合你的需求。但这里有个令人兴奋的好消息,为啥不用 AI 来解决这个问题呢? 别再依赖传统方法了,你可以用像 LLM(大型语言模型)和图像生成器这样的 AI 工具,为你的特定目标创建合成训练数据。如今有那…...

AI 应用同质化:一场看不见的资源 “吞噬战”

大家好&#xff0c;我是涛涛&#xff0c;今天聊聊令人担心的事情。 一、同质化的“繁荣”背后 当ChatGPT在2022年掀起全球AI热潮时&#xff0c;中国互联网行业迅速进入“All in AI”模式。根据艾瑞咨询数据&#xff0c;2023年国内AI应用市场新增注册企业超2.3万家&#xff0c…...

Java + Spring Boot + MyBatis获取以及持久化sql语句的方法

在Java的Spring Boot项目中结合MyBatis获取实际执行的SQL语句&#xff0c;可以通过以下几种方法实现&#xff1a; 方法一&#xff1a;配置MyBatis日志级别 通过调整日志级别&#xff0c;MyBatis会输出执行的SQL语句及参数&#xff0c;适用于快速调试。 修改application.prope…...

「浏览器即OS」:WebVM技术栈如何用Wasm字节码重构冯·诺依曼体系?

一、冯诺依曼架构的维度坍塌 1. 传统计算模型的能量耗散 浏览器执行效率瓶颈分析&#xff1a; 操作x86指令周期Wasm指令周期能效比提升矩阵乘法3894.2x内存访问1234x系统调用120012100x 二、WebVM的量子纠缠架构 1. 浏览器内核的重构 // 基于WASI的系统调用处理 #[no_mangl…...

Vue3项目目录结构规范建议

以下是一个推荐的 Vue 3 项目目录结构规范&#xff0c;适用于中大型项目并遵循最佳实践&#xff1a; 基础目录结构 bash src/ ├─ assets/ # 静态资源 │ ├─ images/ # 图片文件 │ ├─ fonts/ # 字体文件 │ └─ styles/ …...

【计算机视觉】CV实战项目- Four-Flower:基于TensorFlow的花朵分类实战指南

深度解析Four-Flower&#xff1a;基于TensorFlow的花朵分类实战指南 项目概述与技术背景技术栈组成 完整实战流程环境配置1. 基础环境安装2. 项目环境搭建3. 环境验证 数据准备模型架构解析训练过程优化1. 训练配置2. 关键参数建议3. 训练监控 常见问题与解决方案1. 内存不足错…...

4.27 JavaScript核心语法+事件监听

JavaScript负责网页的行为&#xff08;交互行为&#xff09; JS基本语法&#xff1a; 引用方式 变量&常量&数据类型&#xff1a; alert()标签输出弹出框&#xff0c;如以上代码会输出true。 函数&#xff1a; 自定义对象: 属性方法行为 JS中的全局变量是window。 js…...

于键值(KV)的表

基于键值&#xff08;KV&#xff09;的表 将行编码为键值&#xff08;KVs&#xff09; 索引查询&#xff1a;点查询和范围查询 在关系型数据库中&#xff0c;数据被建模为由行和列组成的二维表。用户通过SQL表达他们的意图&#xff0c;而数据库则神奇地提供结果。不那么神奇的…...

Matlab算例运行

1. 使用终端命令运行算例&#xff1a; 2. 如果点击Run 按钮就是会一直报错&#xff0c;所以直接改成终端运行算例...

package.json script 中的 prepare 脚本的作用是什么

在 package.json 的 scripts 中&#xff0c;prepare 脚本是一个特殊的生命周期脚本&#xff0c;主要作用和执行时机如下&#xff1a; prepare 脚本的作用和执行时机 执行时机&#xff1a; 在执行 npm publish 命令之前运行。在执行不带参数的 npm install 命令时运行&#xff…...