深度学习:基于TensorFlow 和 Keras,使用神经网络回归模型预测 IPL 分数

在这里插入图片描述

前言

系列专栏:机器学习:高级应用与实践【项目实战100+】【2024】✨︎
在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学习模型、处理非结构化数据以及指导复杂的模型,如卷积神经网络、门控循环单元、大型语言模型和强化学习模型

自 2008 年 IPL 开始举办以来,它吸引了全球各地的观众。高度的不确定性和最后时刻的钉子户促使球迷观看比赛。在很短的时间内,IPL 已成为板球界收入最高的联赛。在板球比赛中,我们经常会看到比分线显示根据当前比赛形势球队获胜的概率。这种预测通常是在数据分析的帮助下完成的。以前,在机器学习还不发达的时候,预测通常是基于直觉或一些基本算法。

作为一名板球迷,板球统计数据的可视化令人着迷。我们浏览了各种博客,发现了一些可以用来提前预测 IPL 比赛得分的模式。

我们人类无法轻易从海量数据中找出模式,因此,机器学习和深度学习在此发挥了作用。它可以了解球员和球队之前对阵对方球队时的表现,并据此训练模型。仅使用机器学习算法的准确率不高,因此我们使用了深度学习,它的性能比我们之前的模型要好得多,并且考虑到了能够提供准确结果的属性。

目录

  • 1. 相关库和数据集
    • 1.1 相关库介绍
    • 1.2 加载数据集
  • 2. 数据预处理
    • 2.1 数据清理
    • 2.2 标签编码
    • 2.3 数据准备(拆分为训练集和测试集)
    • 2.4 特征缩放(归一化)
  • 3. 神经网络
    • 3.1 定义神经网络
    • 3.2 模型训练
    • 3.3 模型评估
  • 4. 创建互动小部件

1. 相关库和数据集

1.1 相关库介绍

Python 库使我们能够非常轻松地处理数据并使用一行代码执行典型和复杂的任务。

  • Numpy – 可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。
  • Pandas – 该库有助于以 2D 数组格式加载数据框,并具有多种功能,可一次性执行分析任务。
  • Matplotlib/Seaborn – 此库用于绘制可视化效果,用于展现数据之间的相互关系。
  • Sklearn – 包含多个库,这些库具有预实现的功能,用于执行从数据预处理到模型开发和评估的任务。
  • TensorFlow™ – 是一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现。
  • Keras – 是一个由Python编写的开源人工神经网络库,可以作为 Tensorflow 的高阶应用程序接口。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn import preprocessing
import keras 
import tensorflow as tf

1.2 加载数据集

在处理板球数据时,它包含 2008 年至 2017 年的数据。数据集可以从这里下载。该数据集包含场地、日期、击球和保龄球队、击球手和投球手的名称、检票口等特征。

我们使用 .read_csv() 方法将两个数据集导入到 pandas 的数据帧中,并显示每个数据集的前 5 行。

ipl = pd.read_csv('ipl.csv')
ipl.head()

数据集

2. 数据预处理

2.1 数据清理

删除不重要的功能

  1. 我们通过从原始 DataFrame 中删除几列来创建一个新的 DataFrame。
  2. 新的 DataFrame 包含我们将要训练预测模型的其余列。
#Dropping certain features 
df = ipl.drop(['date', 'runs', 'wickets', 'overs', 'runs_last_5', 'wickets_last_5','mid', 'striker', 'non-striker'], axis =1)
  1. 我们将数据框拆分为输入特征 (X) 和目标特征 (y),我们的目标特征是总分。
X = df.drop(['total'], axis =1)
y = df['total']
X.head()

数据前五行

2.2 标签编码

  • 我们在 X 中对分类特征进行了标签编码。
  • 我们为每个分类特征创建了单独的对象,并对其值进行了编码。标签编码器
  • 我们创建了映射,将编码标签转换回原始值,这对解释结果很有帮助。
#Label Encoding

from sklearn.preprocessing import LabelEncoder

# Create a LabelEncoder object for each categorical feature
venue_encoder = LabelEncoder()
batting_team_encoder = LabelEncoder()
bowling_team_encoder = LabelEncoder()
striker_encoder = LabelEncoder()
bowler_encoder = LabelEncoder()

# Fit and transform the categorical features with label encoding
X['venue'] = venue_encoder.fit_transform(X['venue'])
X['bat_team'] = batting_team_encoder.fit_transform(X['bat_team'])
X['bowl_team'] = bowling_team_encoder.fit_transform(X['bowl_team'])
X['batsman'] = striker_encoder.fit_transform(X['batsman'])
X['bowler'] = bowler_encoder.fit_transform(X['bowler'])

2.3 数据准备(拆分为训练集和测试集)

我们将数据分为训练集和测试集。训练集包含数据集的 70%,其余 30% 为测试集。

  • X_train 包含输入特征的训练数据。
  • X_test 包含输入特征的测试数据。
  • y_train 包含目标变量的训练数据。
  • y_test 包含目标变量的测试数据。
# Train test Split 
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

2.4 特征缩放(归一化)

  • 我们对输入特征进行了最小-最大缩放,以确保所有特征都在同一比例上
  • 缩放是为了确保尺度一致,以提高模型性能。
  • 缩放使用缩放参数对训练数据和测试数据进行了转换。
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

# Fit the scaler on the training data and transform both training and testing data
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

3. 神经网络

3.1 定义神经网络

  • 我们使用 TensorFlow 和 Keras 定义了一个用于回归的神经网络。
  • 定义模型后,我们使用 Huber Loss 对模型进行了编译。
# Define the neural network model
model = keras.Sequential([
	keras.layers.Input( shape=(X_train_scaled.shape[1],)), # Input layer
	keras.layers.Dense(512, activation='relu'), # Hidden layer with 512 units and ReLU activation
	keras.layers.Dense(216, activation='relu'), # Hidden layer with 216 units and ReLU activation
	keras.layers.Dense(1, activation='linear') # Output layer with linear activation for regression
])

# Compile the model with Huber loss
huber_loss = tf.keras.losses.Huber(delta=1.0) # You can adjust the 'delta' parameter as needed
model.compile(optimizer='adam', loss=huber_loss) # Use Huber loss for regression

3.2 模型训练

# Train the model
model.fit(X_train_scaled, y_train, epochs=50, batch_size=64, validation_data=(X_test_scaled, y_test))
Epoch 1/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 56.2658 - val_loss: 22.3282
Epoch 2/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 22.4136 - val_loss: 22.7654
Epoch 3/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 22.2383 - val_loss: 21.9184
Epoch 4/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 22.1480 - val_loss: 22.1336
Epoch 5/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 22.2213 - val_loss: 21.8952
Epoch 6/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 22.1529 - val_loss: 21.8332
Epoch 7/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 22.0361 - val_loss: 21.9755
Epoch 8/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 22.1623 - val_loss: 23.2852
Epoch 9/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 22.1077 - val_loss: 21.8450
Epoch 10/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 22.0598 - val_loss: 21.7673
Epoch 11/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 22.1538 - val_loss: 21.8079
Epoch 12/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 22.0716 - val_loss: 21.8496
Epoch 13/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 22.0589 - val_loss: 21.7739
Epoch 14/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 22.2804 - val_loss: 21.9109
Epoch 15/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 22.1427 - val_loss: 21.7200
Epoch 16/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 22.3138 - val_loss: 21.7095
Epoch 17/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.9855 - val_loss: 21.6038
Epoch 18/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.9500 - val_loss: 21.9648
Epoch 19/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 21.8497 - val_loss: 21.4573
Epoch 20/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 21.7528 - val_loss: 21.6321
Epoch 21/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.6298 - val_loss: 21.3790
Epoch 22/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.6973 - val_loss: 21.4358
Epoch 23/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 21.7973 - val_loss: 22.0959
Epoch 24/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.6350 - val_loss: 21.4656
Epoch 25/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.5059 - val_loss: 21.4100
Epoch 26/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.4734 - val_loss: 21.2435
Epoch 27/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.4959 - val_loss: 21.1024
Epoch 28/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 21.4274 - val_loss: 21.0573
Epoch 29/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.3708 - val_loss: 21.0899
Epoch 30/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 21.3479 - val_loss: 21.3070
Epoch 31/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.3438 - val_loss: 20.9639
Epoch 32/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 21.1507 - val_loss: 20.8814
Epoch 33/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 21.0879 - val_loss: 20.9932
Epoch 34/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 20.9838 - val_loss: 20.7426
Epoch 35/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 21.0293 - val_loss: 20.6817
Epoch 36/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 20.8811 - val_loss: 20.5242
Epoch 37/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 20.6925 - val_loss: 20.5147
Epoch 38/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 3s 2ms/step - loss: 20.5798 - val_loss: 20.3213
Epoch 39/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 20.4411 - val_loss: 20.2086
Epoch 40/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 20.4475 - val_loss: 20.2530
Epoch 41/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 20.3650 - val_loss: 20.0541
Epoch 42/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 20.2180 - val_loss: 20.0937
Epoch 43/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 20.0702 - val_loss: 19.9618
Epoch 44/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 19.8153 - val_loss: 19.9452
Epoch 45/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 19.8323 - val_loss: 19.4963
Epoch 46/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 19.8802 - val_loss: 19.7684
Epoch 47/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 19.5058 - val_loss: 19.3091
Epoch 48/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 19.7167 - val_loss: 19.1579
Epoch 49/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 19.2688 - val_loss: 19.1043
Epoch 50/50
832/832 ━━━━━━━━━━━━━━━━━━━━ 2s 2ms/step - loss: 19.3352 - val_loss: 18.9863

训练完成后,我们会在训练过程中将训练和验证损失值存储到神经网络中。

model_losses = pd.DataFrame(model.history.history)
model_losses.plot()

损失值

3.3 模型评估

  • 我们使用训练好的神经网络对测试数据进行预测。
  • 变量预测包含基于模型学习模式的测试集预测总运行分数。
# Make predictions
predictions = model.predict(X_test_scaled)

from sklearn.metrics import mean_absolute_error,mean_squared_error
mean_absolute_error(y_test,predictions)
713/713 ━━━━━━━━━━━━━━━━━━━━ 1s 687us/step
19.47724912576941

4. 创建互动小部件

  • 我们使用ipywidgets创建了一个交互式小部件,根据用户输入的场地、击球队、保龄球队、前锋和投球手来预测得分。
  • 我们创建了下拉小部件来选择场地、击球队、保龄球队、前锋和投球手的值。
  • 我们添加了一个“预测分数”按钮小部件。无论何时单击该按钮,都会调用predict_score函数,然后执行以下步骤:①将用户选择的值解码为其原始分类值。②对这些值进行编码和缩放,以匹配模型训练中使用的格式。③使用训练好的模型根据用户的输入进行预测。④显示预测分数。
import ipywidgets as widgets
from IPython.display import display, clear_output

import warnings
warnings.filterwarnings("ignore")

venue = widgets.Dropdown(options=df['venue'].unique().tolist(),description='Select Venue:')
batting_team = widgets.Dropdown(options =df['bat_team'].unique().tolist(), description='Select Batting Team:')
bowling_team = widgets.Dropdown(options=df['bowl_team'].unique().tolist(), description='Select Batting Team:')
striker = widgets.Dropdown(options=df['batsman'].unique().tolist(), description='Select Striker:')
bowler = widgets.Dropdown(options=df['bowler'].unique().tolist(), description='Select Bowler:')

predict_button = widgets.Button(description="Predict Score")

def predict_score(b):
	with output:
		clear_output() # Clear the previous output
		

		# Decode the encoded values back to their original values
		decoded_venue = venue_encoder.transform([venue.value])
		decoded_batting_team = batting_team_encoder.transform([batting_team.value])
		decoded_bowling_team = bowling_team_encoder.transform([bowling_team.value])
		decoded_striker = striker_encoder.transform([striker.value])
		decoded_bowler = bowler_encoder.transform([bowler.value])


		input = np.array([decoded_venue, decoded_batting_team, decoded_bowling_team,decoded_striker, decoded_bowler])
		input = input.reshape(1,5)
		input = scaler.transform(input)
		#print(input)
		predicted_score = model.predict(input)
		predicted_score = int(predicted_score[0,0])

		print(predicted_score)

基于小部件的界面允许您交互式地预测特定比赛场景的得分。现在,我们已经设置了按钮,当单击时触发predict_score函数,并显示场地、击球队、保龄球队、击球手和投球手的小部件。

predict_button.on_click(predict_score)
output = widgets.Output()
display(venue, batting_team, bowling_team, striker, bowler, predict_button, output)

ipywidgets
我们预测了在印度旁遮普邦球场举行的 CSK 与 King XI Punjab 之间比赛的比分。预测的比赛比分为 183。

通过利用 ML 和 DL 的力量,我们根据历史数据成功预测了板球得分。对于 IPL 爱好者、球队和分析师来说,该模型预测板球比分的能力是一笔宝贵的财富。它可以让人们深入了解比赛的动态,帮助预测不同因素对最终比分的影响。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能远超GPT-4!谷歌发布Med-Gemini医疗模型;李飞飞首次创业瞄准空间智能;疫苗巨头联合OpenAl助力AI医疗...

AI for Science 企业动态速览—— * 谷歌 Med-Gemini 医疗 AI 模型性能远超 GPT-4 * 斯坦福李飞飞首次创业瞄准「空间智能」 * 疫苗巨头 Moderna 与 OpenAl 达成合作 * 美国能源部推动 AI 在清洁能源领域的应用 * 美年健康荣获「2024福布斯中国人工智能创新场景应用企业TOP10」…

Linux基础服务NFS入门篇

文章目录 Linux基础服务NFS入门篇0.前言1.NFS1.1NFS简介1.2NFS配置 Linux基础服务NFS入门篇 0.前言 本文根据大佬们的资料整理了NFS的基础知识, 加深对linux运维基础服务工具的理解,以便个人查询复习使用。 1.NFS 资料来自B站阿铭linux的印象笔记&#…

C语言 | Leetcode C语言题解之第79题单词搜索

题目: 题解: int directions[4][2] {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};bool check(char** board, int boardSize, int boardColSize, int** visited, int i, int j, char* s, int sSize, int k) {if (board[i][j] ! s[k]) {return false;} else if (…

怎么样练口才_如何练口才和反应能力?

怎么样练口才_如何练口才和反应能力? 要练习口才和反应能力,以下是一些建议的方法: 一、口才练习 朗读: 每天坚持朗读一些文章,可以是报纸、杂志、书籍或网络上的文章。这有助于练习口齿清晰,积累知识量和…

ABC352编程笔记

ABC352 编程笔记 题意&#xff1a;输入&#xff0c;四个数 a , b , c , d a,b,c,d a,b,c,d&#xff0c;若 d d d 在 c , d c,d c,d 之间&#xff0c;则输出 Yes&#xff0c;否则输出 No。 正解&#xff1a;直接判断。 #include <bits/stdc.h> //#define int long lo…

2024年去除视频水印的5种方法

如果你从事电影剪辑或者视频编辑工作&#xff0c;你经常需要从优酷、抖音、TikTok下载各种视频片段……。 通常这些视频带有水印和字幕。一些免费软件如CapCut、canva、Filmora也会给你制作的视频打上水印&#xff0c;这些水印嵌入在视频内部。 2024年去除视频水印的5种方法 …

Centos 7.9如何使用源码编译安装curl最新版本

文章目录 1、前言2、curl源代码下载3、openssl安装4、编译curl4.1、配置编译环境4.2、编译输出二进制curl程序4.3、安装编译后的curl4.4、编译完成检查4.5、验证安装 1、前言 centos 7.9&#xff0c;由于系统未2017年发行&#xff0c;且以稳定性为主&#xff0c;部分工具版本较…

Unity-NGUI爆错以后-导致不能多次点击,UI假卡死问题解决方法

太久没用&#xff0c;忘了&#xff0c;NGUI好像易出错&#xff0c;就再次点击不了 导致打开了UI关闭不了&#xff0c;每次都要重启就比较烦&#xff08;说的就是那种美术团队&#xff0c;一个 UI 打开几十层&#xff09; 就好比【左上角&#xff0c;箭头】点第二次是退出不了了…

docker安装Debian:11 freeswitch1.10.5

文章目录 一、生成一个镜像二、切换一个镜像源为阿里源三、安装一些相关依赖和freeswitch3.1第一步&#xff1a;安装freeswitch-mod和下载所需的依赖项3.2 设置密钥3.3 安装freeswitch所需的依赖项3.4 报错3.4.1 报错13.4.2 报错23.4.3 报错3 四、运行4.1 通话三十秒自动挂断 一…

verilog中输入序列不连续的序列检测

编写一个序列检测模块&#xff0c;输入信号端口为data&#xff0c;表示数据有效的指示信号端口为data_valid。当data_valid信号为高时&#xff0c;表示此刻的输入信号data有效&#xff0c;参与序列检测&#xff1b;当data_valid为低时&#xff0c;data无效&#xff0c;抛弃该时…

爬虫-无限debug场景 解决方式

解决无限debug 场景1 1. 鼠标右键 选择 continue to here&#xff08;此处不停留&#xff09;2. 鼠标右键 选择 edite breakpoint 设置 10 保证条件不成立 这行永远不执行3.方法置空 1. 方法调用加断点2. 控制台 setInterval function name() {}4. 替换文件 5. hoo…

ICode国际青少年编程竞赛- Python-2级训练场-range函数

ICode国际青少年编程竞赛- Python-2级训练场-range函数 1、 for i in range(4):Dev.turnLeft()Dev.step(i 1)2、 for i in range(4):Spaceship.step(i 1)Spaceship.turnRight()3、 for i in range(4):Spaceship.step(i 1)Dev.step(2)Dev.step(-2)4、 for i in range(1, 5)…

Dreamweaver 2021 for Mac 激活版:网页设计工具

在追求卓越的网页设计道路上&#xff0c;Dreamweaver 2021 for Mac无疑是您的梦幻之选。这款专为Mac用户打造的网页设计工具&#xff0c;集强大的功能与出色的用户体验于一身。 Dreamweaver 2021支持多种网页标准和技术&#xff0c;让您能够轻松创建符合现代网页设计的作品。其…

Androidstudio报错

现象&#xff1a; org.gradle.api.plugins.UnknownPluginException: Plugin [id: ‘com.android.application‘ 解决 方案&#xff0c;看是不是工具处于离线环境&#xff0c;是的话打开联网就好

一站式HMI软件开发套件eStation,让开发更简单高效

4月份举办的北京国际车展上全球首发车117辆&#xff0c;新能源车型278个&#xff0c;越来越多的车厂通过差异化和改善UI/UE体验&#xff0c;来获取更多用户的青睐。为快速响应差异化竞争需求&#xff0c;智能座舱HMI市场遇到以下挑战&#xff1a; 如何兼容不同项目开发人员编程…

软件设计师笔记(一)-基础要点

本文内容来自笔者学习zst 留下的笔记&#xff0c;虽然有点乱&#xff0c;但是哥已经排版过一次&#xff0c;将就着看吧&#xff0c;查缺补漏&#xff0c;希望大家都能通过&#xff0c;记得加上免费的关注&#xff01;谢谢&#xff01;csdn贴图真的很废人&#xff01; 目录 一、…

PLC设备通过智能网关采用HTTP协议JSON文件对接MES等系统平台

智能网关IGT-DSER集成了多种PLC的原厂协议&#xff0c;方便实现各种PLC、智能仪表通过HTTP协议与MES等各种系统平台通讯对接。PLC内不用编写程序&#xff0c;设备不用停机&#xff0c;通过网关的参数配置软件(下载地址)配置JSON文件的字段与PLC寄存器地址等参数即可。 智能网关…

vue+lodop实现web端打印标签功能

背景&#xff1a;项目要求在web端连接标签打印机&#xff0c;打印收件人信息 lodop打印插件地址&#xff1a;Lodop和C-Lodop官网主站 在项目中使用 1、去官网下载lodop包下载中心 - Lodop和C-Lodop官网主站 windows系统直接下载windows32版的就可以 2、解压安装 点击CLodop…

Spark云计算平台Databricks使用,上传文件

Databricks&#xff0c;是属于 Spark 的商业化公司&#xff0c;由美国加州大学伯克利 AMP 实验室的 Spark 大数据处理系统多位创始人联合创立。Databricks 致力于提供基于 Spark 的云服务&#xff0c;可用于数据集成&#xff0c;数据管道等任务。 创建workspace&#xff1a;Spa…

AI新视界:探索Baidu Comate的前沿科技

前言 Baidu Comate&#xff08;智能代码助手&#xff09;是基于文心大模型&#xff0c;结合百度积累多年的编程现场大数据和外部优秀开源数据&#xff0c;打造的新一代编码辅助工具。拥有代码智能、场景丰富、创造价值、广泛应用等多重产品优势&#xff0c;可实现“帮你想、帮…