特征工程与交叉验证在机器学习中的应用

数据入口:学生考试表现影响因素数据集 - Heywhale.com

本数据集提供了关于影响学生考试成绩的多种因素的全面概述。数据集包含了有关学习习惯、出勤率、家长参与、资源获取等方面的信息。

数据说明

字段名说明
Hours_Studied每周学习的小时数
Attendance出勤率(上课出席的百分比)
Parental_Involvement家长参与程度(低,中,高)
Access_to_Resources教育资源的可用性(低,中,高)
Extracurricular_Activities课外活动参与情况(是,否)
Sleep_Hours每晚平均睡眠时间(小时)
Previous_Scores之前考试的分数
Motivation_Level学生的动机水平(低,中,高)
Internet_Access互联网接入情况(是,否)
Tutoring_Sessions每月参加辅导课的次数
Family_Income家庭收入水平(低,中,高)
Teacher_Quality教师质量(低,中,高)
School_Type学校类型(公立,私立)
Peer_Influence同伴对学业表现的影响(积极,中立,消极)
Physical_Activity每周平均体育活动时间(小时)
Learning_Disabilities学习障碍(是,否)
Parental_Education_Level父母的最高学历(高中,本科,研究生)
Distance_from_Home家到学校的距离(近,适中,远)
Gender学生性别(男,女)
Exam_Score期末考试成绩

在本文中将分析不同学习习惯、家长参与度、资源获取等对学生考试成绩的影响以及构建机器学习模型预测学生的考试成绩。

一:影响因素分析

import pandas as pdfile_path = 'StudentPerformanceFactors.csv'
df = pd.read_csv(file_path)df.info()

了解到该数据含有较少的空缺值,可以进行删除:

df = df[(df!= 0).all(axis=1)]

我们的目标是分析这些因素对Exam_Score(考试成绩)的影响。为了进行这个分析,我们可以采用以下步骤:

  1. 描述性统计分析:首先,我们可以查看这些变量的描述性统计信息,以了解其分布和基本特征。
  2. 相关性分析:接着,我们可以计算这些变量与考试成绩之间的相关性,以找出哪些因素与考试成绩最相关。
  3. 可视化分析:为了更直观地展示结果,我们可以创建一些图表来可视化这些关系。

让我们首先进行描述性统计分析。

descriptive_stats = df[['Hours_Studied', 'Attendance', 'Parental_Involvement', 'Access_to_Resources','Extracurricular_Activities', 'Sleep_Hours', 'Previous_Scores', 'Motivation_Level','Internet_Access', 'Tutoring_Sessions', 'Family_Income', 'Teacher_Quality','School_Type', 'Peer_Influence', 'Physical_Activity', 'Learning_Disabilities','Parental_Education_Level', 'Distance_from_Home', 'Gender', 'Exam_Score']].describe()descriptive_stats

以下是对相关字段的描述性统计分析结果:

  • Hours_Studied(学习时间)

    • 平均值:约20小时
    • 标准差:约6小时
    • 最小值:1小时
    • 最大值:44小时
  • Attendance(出勤率)

    • 平均值:约80%
    • 标准差:约12%
    • 最小值:60%
    • 最大值:100%
  • Sleep_Hours(睡眠时间)

    • 平均值:约7小时
    • 标准差:约1.5小时
    • 最小值:4小时
    • 最大值:10小时
  • Previous_Scores(历史成绩)

    • 平均值:约75分
    • 标准差:约14分
    • 最小值:50分
    • 最大值:100分
  • Tutoring_Sessions(辅导课程数量)

    • 平均值:约1.5次
    • 标准差:约1.2次
    • 最小值:0次
    • 最大值:8次
  • Physical_Activity(体育活动)

    • 平均值:约3次
    • 标准差:约1次
    • 最小值:0次
    • 最大值:6次
  • Exam_Score(考试成绩)

    • 平均值:约67分
    • 标准差:约4分
    • 最小值:55分
    • 最大值:101分

接下来,我们可以进行相关性分析,以查看这些变量与考试成绩之间的相关性。

correlation_matrix = df[['Hours_Studied', 'Attendance', 'Sleep_Hours', 'Previous_Scores', 'Tutoring_Sessions', 'Physical_Activity', 'Exam_Score']].corr()correlation_matrix['Exam_Score']

以下是与考试成绩(Exam_Score)的相关性分析结果:

  • Hours_Studied(学习时间):0.445 - 表明学习时间与考试成绩有中等程度的正相关。
  • Attendance(出勤率):0.581 - 表明出勤率与考试成绩有较强的正相关。
  • Sleep_Hours(睡眠时间):-0.017 - 表明睡眠时间与考试成绩几乎不相关。
  • Previous_Scores(历史成绩):0.175 - 表明历史成绩与考试成绩有较弱的正相关。
  • Tutoring_Sessions(辅导课程数量):0.157 - 表明辅导课程数量与考试成绩有较弱的正相关。
  • Physical_Activity(体育活动):0.028 - 表明体育活动与考试成绩几乎不相关。

为了更直观地展示这些关系,我们可以创建一些图表来可视化这些关系。我们可以从最相关的变量开始,比如学习时间、出勤率和历史成绩。让我们为这些变量创建散点图。

import matplotlib.pyplot as plt
import seaborn as snsplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.figure(figsize=(15, 10))plt.subplot(2, 2, 1)
sns.scatterplot(x='Hours_Studied', y='Exam_Score', data=df)
plt.title('学习时间 vs 考试成绩')plt.subplot(2, 2, 2)
sns.scatterplot(x='Attendance', y='Exam_Score', data=df)
plt.title('出勤率 vs 考试成绩')plt.subplot(2, 2, 3)
sns.scatterplot(x='Previous_Scores', y='Exam_Score', data=df)
plt.title('历史成绩 vs 考试成绩')plt.tight_layout()plt.show()

从上面的散点图中,我们可以观察到以下关系:

  1. 学习时间 vs 考试成绩:可以看到,随着学习时间的增加,考试成绩也呈现出一定的上升趋势。这证实了之前的正相关分析。

  2. 出勤率 vs 考试成绩:出勤率与考试成绩之间也呈现出正相关关系。随着出勤率的提高,考试成绩也有所提高。

  3. 历史成绩 vs 考试成绩:历史成绩与考试成绩之间也有一定的正相关关系,尽管没有前两个因素那么明显。

二:学业表现预测

为了构建一个适合的机器学习模型来预测学生的考试成绩,我们可以遵循以下步骤:

1: 数据预处理

  • 缺失值处理:检查数据集中是否存在缺失值,并决定是填充缺失值、删除缺失值还是保留它们
  • 分类变量编码:将分类变量(如性别、学校类型等)转换为数值型,可以使用独热编码(One-Hot Encoding)或标签编码(Label Encoding)。
  • 特征选择:根据之前的描述性统计和相关性分析,选择对考试成绩影响最大的特征。
  • 数据标准化/归一化:将所有特征缩放到相同的范围,以避免某些特征对模型的影响过大。

2: 模型选择

  • 选择合适的机器学习算法。对于回归问题,常见的算法包括线性回归、决策树、随机森林、梯度提升机(如XGBoost)等。
  • 可以使用交叉验证来评估模型的性能。

3: 模型训练与评估

  • 将数据集分为训练集和测试集。
  • 使用训练集训练模型,并使用测试集评估模型的性能。
  • 使用适当的评估指标,如均方误差(MSE)、决定系数(R²)等。

4: 模型调优

  • 根据模型在测试集上的表现,调整模型的参数,以提高模型的预测能力。
  • 可以使用网格搜索(Grid Search)或随机搜索(Random Search)来寻找最优参数。

5: 模型部署

  • 一旦模型性能满意,可以将模型部署到实际应用中,用于预测新学生的考试成绩。

1:数据预处理

随机森林(Random Forest)和梯度提升树(Gradient Boosting Tree)在一定程度上可以从数值变量的标准化中受益,但通常不是严格必需的。

X = df.drop('Exam_Score', axis=1)
y = df['Exam_Score']categorical_cols = X.select_dtypes(include=['object', 'category']).columnsX_encoded = pd.get_dummies(X, columns=categorical_cols, drop_first=True)scaler = StandardScaler()X_numeric = X_encoded.select_dtypes(include=['int', 'float'])X_scaled = scaler.fit_transform(X_numeric)X_scaled_df = pd.DataFrame(X_scaled, columns=X_numeric.columns)X_scaled_df

由于数据集包含分类特征,我们需要对这些特征进行编码,使其能够被机器学习模型所使用。通常,我们可以使用独热编码(One-Hot Encoding)或标签编码(Label Encoding)来处理分类特征。在这个例子中,我们将使用独热编码来处理所有的分类特征。且对数值特征进行标准化。

在对数值特征进行标准化以及对分类特征进行了独热编码之后,生成了一个新的特征矩阵 X_encoded。现在我们可以继续进行特征工程和模型选择。

由于数据集的特征较多,我们可能需要进行特征选择来提高模型的性能。一种常见的方法是使用基于树模型的特征重要性来选择最重要的特征。在这里,我们可以使用随机森林作为基模型来进行特征选择。让我们使用随机森林模型来确定特征的重要性,并选择最重要的特征。

from sklearn.ensemble import RandomForestRegressor
from sklearn.feature_selection import SelectFromModelrf = RandomForestRegressor(n_estimators=100, random_state=42)rf.fit(X_encoded, y)selector = SelectFromModel(rf, threshold='median')X_selected = selector.transform(X_encoded)selected_features = X_encoded.columns[selector.get_support()]selected_features.tolist()

我们已经使用随机森林模型选择了以下最重要的特征:

  • Hours_Studied
  • Attendance
  • Sleep_Hours
  • Previous_Scores
  • Tutoring_Sessions
  • Physical_Activity
  • Parental_Involvement_Low
  • Parental_Involvement_Medium
  • Access_to_Resources_Low
  • Family_Income_Low
  • Peer_Influence_Positive
  • Parental_Education_Level_High School
  • Parental_Education_Level_Postgraduate

现在我们可以使用这些特征来训练我们的集成学习模型。在这里,我们将使用随机森林和梯度提升树(Gradient Boosting Tree)两种集成学习方法,并比较它们的性能。

2:随机森林与梯度提升树

首先,我们将数据集分为训练集和测试集,然后分别在训练集上训练两个模型,并在测试集上评估它们的性能。

from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.ensemble import GradientBoostingRegressor
import numpy as npX_train, X_test, y_train, y_test = train_test_split(X_selected, y, test_size=0.2, random_state=42)rf = RandomForestRegressor(n_estimators=100, random_state=42)
gbt = GradientBoostingRegressor(n_estimators=100, random_state=42)rf.fit(X_train, y_train)
gbt.fit(X_train, y_train)rf_pred = rf.predict(X_test)
gbt_pred = gbt.predict(X_test)rf_mse = mean_squared_error(y_test, rf_pred)
gbt_mse = mean_squared_error(y_test, gbt_pred)rf_mse, gbt_mse

我们已经训练了随机森林和梯度提升树模型,并在测试集上评估了它们的性能。以下是两个模型的均方误差(MSE):

  • 随机森林(Random Forest)的MSE: 6.51
  • 梯度提升树(Gradient Boosting Tree)的MSE: 5.11

从结果来看,梯度提升树模型的性能略优于随机森林模型。这意味着梯度提升树模型可能更好地捕捉了数据中的模式和关系。

3:交叉验证

from sklearn.model_selection import cross_val_scorerf_scores = cross_val_score(rf, X_selected, y, scoring='neg_mean_squared_error', cv=5)
gbt_scores = cross_val_score(gbt, X_selected, y, scoring='neg_mean_squared_error', cv=5)rf_mse_cv = -rf_scores.mean()
gbt_mse_cv = -gbt_scores.mean()rf_mse_cv, gbt_mse_cv

分别求出随机森林与梯度提升树的交叉验证cv值分别约为6.41和5.52。

这段代码使用了Python的scikit-learn库来进行机器学习模型的交叉验证评分:

from sklearn.model_selection import cross_val_score

这里导入了cross_val_score函数,它用于执行交叉验证并计算模型的性能指标。

随机森林模型的交叉验证:

rf_scores = cross_val_score(rf, X_selected, y, scoring='neg_mean_squared_error', cv=5)
  • rf 是一个随机森林回归模型,它已经被实例化并准备好用于评分。
  • X_selected 是特征矩阵,包含了用于训练模型的数据。
  • y 是目标变量,即我们试图预测的值。
  • scoring='neg_mean_squared_error' 表示评分标准是负的均方误差(MSE)。在scikit-learn中,某些评分标准会被最大化,因此实际的MSE值被取反,以便使用最大化策略。
  • cv=5 表示交叉验证的折数,这里使用了5折交叉验证。

梯度提升树模型的交叉验证:

gbt_scores = cross_val_score(gbt, X_selected, y, scoring='neg_mean_squared_error', cv=5)
  • gbt 是一个梯度提升树(Gradient Boosting Tree)回归模型,它也已经被实例化。
  • 其他参数与随机森林模型的交叉验证相同。

计算交叉验证的平均MSE

rf_mse_cv = -rf_scores.mean()
gbt_mse_cv = -gbt_scores.mean()
  • 由于cross_val_score返回的是负的MSE值,所以在计算平均值时,需要再次取反以得到正的MSE值。
  • rf_scores.mean() 和 gbt_scores.mean() 分别计算了随机森林和梯度提升树模型在5折交叉验证中的平均MSE。
rf_mse_cv, gbt_mse_cv

最后,这段代码将输出随机森林和梯度提升树模型在交叉验证中的平均MSE值。这两个值可以用来比较两个模型的性能。

总结来说,这段代码的主要目的是通过5折交叉验证来评估随机森林和梯度提升树模型的性能,并比较它们在给定数据集上的均方误差。这种方法可以帮助我们了解模型在未知数据上的泛化能力。

在交叉验证中,cv值(交叉验证折数)的大小可以说明以下几个方面:

一、对模型评估的准确性和稳定性

较大的 cv 值(如 10 或更多)

优势:能更细致地评估模型在不同数据子集上的性能,使得模型评估结果更加准确和可靠。因为有更多不同的数据划分组合,模型会接触到更多不同的数据情况,从而更好地反映其在总体数据上的泛化能力。对于数据量较大的情况,较大的 cv 值可以充分利用数据,减少评估结果的方差,提供更稳定的性能估计。

劣势:计算成本较高。随着 cv 值的增加,需要进行更多次的模型训练和评估,这会显著增加计算时间和资源消耗。

较小的 cv 值(如 3 或 5)

优势:计算速度快,适用于数据量较小或者计算资源有限的情况。在一些快速迭代的场景中,可以更快地得到模型性能的初步评估,以便进行参数调整和模型改进。

劣势:评估结果可能不够准确和稳定。由于数据划分的组合较少,模型可能没有充分接触到不同的数据情况,导致评估结果的方差较大,不能很好地反映模型的真实泛化能力。

二、对数据的利用程度

较大的 cv 值:能够更充分地利用数据进行评估,因为每次划分时不同的数据子集被用作训练和验证,使得模型在不同的数据组合上进行学习和评估,从而更好地挖掘数据中的信息。然而,对于非常大的 cv 值,可能会导致每个折叠中的数据量过少,尤其是在数据总量有限的情况下,这可能会使模型在某些折叠上的训练不充分,影响评估的准确性。

较小的 cv 值:每个折叠中的数据量相对较多,模型在每个折叠上的训练相对更充分。但是,数据的利用程度相对较低,可能没有充分探索数据的多样性,导致评估结果可能不够全面。

三、适用场景

较大的 cv 值:适用于数据量较大、模型复杂度较高或者对评估准确性要求较高的情况。例如,在进行复杂的机器学习模型训练时,为了获得更可靠的性能评估,可以选择较大的 cv 值。当数据具有较高的多样性和复杂性时,较大的 cv 值可以更好地捕捉模型在不同数据情况下的表现。

较小的 cv 值:适用于数据量较小、计算资源有限或者需要快速得到模型评估结果的情况。例如,在进行初步的模型探索或快速迭代的实验中,较小的 cv 值可以节省计算时间,同时提供一个相对快速的性能评估。

4:集成学习

在机器学习中,集成学习是一种强大的技术,它通过结合多个模型来提高预测性能。对于随机森林和梯度提升树这两种模型,我们可以采用几种不同的集成策略:

模型融合(Model Blending)

  • 这是一种简单的集成方法,它涉及训练多个模型并将它们的预测结果以加权平均或投票的方式进行合并。
  • 例如,我们可以给随机森林和梯度提升树分配不同的权重,然后根据这些权重对它们的预测结果进行加权平均。

堆叠(Stacking)

  • 堆叠是一种分层模型集成技术,它首先使用多个不同的模型进行预测,然后使用另一个模型(通常是一个逻辑回归模型)来学习如何最好地结合这些预测。
  • 在堆叠中,每个模型的输出被用作第二层模型的输入。

混合(Ensemble by Weighting)

  • 这是一种为每个模型分配权重的方法,权重可以通过优化算法来确定,以最小化整个集成模型的预测误差。

超级学习器(Super Learner)

  • 超级学习器是一种特定的堆叠方法,它使用所有基本模型的预测以及真实标签来训练一个元模型,这个元模型用于生成最终的预测。
  • 超级学习器通常使用交叉验证来训练基本模型,并使用另一种交叉验证来训练元模型。

接下来,我们将选择堆叠(Stacking)作为集成策略。堆叠是一种分层模型集成技术,它首先使用多个不同的模型进行预测,然后使用另一个模型来学习如何最好地结合这些预测。

from sklearn.ensemble import StackingRegressor
from sklearn.linear_model import LinearRegressionstacking_regressor = StackingRegressor(estimators=[('rf', rf),('gbt', gbt)
], final_estimator=LinearRegression())stacking_regressor.fit(X_train, y_train)stacking_pred = stacking_regressor.predict(X_test)stacking_mse = mean_squared_error(y_test, stacking_pred)stacking_mse

得出均方误差(MSE)约为6.39。可以看出不一定集成学习比某单个模型的效果更好,但一般情况下集成学习比单个模型的预测效果较好。

想要探索多元化的数据分析视角,可以关注之前发布的内容。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

30个GPT提示词天花板,一小时从大纲到终稿

PROMPT 1 中文:构建研究背景与意义,阐述研究问题的紧迫性和重要性。 English: Establish the research background and significance, elucidating the urgency and importance of the research question. 中文:设计研究目的与目标&#xff…

深入解析:HTTP 和 HTTPS 的区别

网络安全问题正变得日益重要,而 HTTP 与 HTTPS 对用户数据的保护十分关键。本文将深入探讨这两种协议的特点、工作原理,以及保证数据安全的 HTTPS 为何变得至关重要。 认识 HTTP 与 HTTPS HTTP 的工作原理 HTTP,全称超文本传输协议&#xf…

go 安装依赖超时

一、配置代理 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.io,direct go get github.com/unidoc/unioffice

对象关系映射ORM

目录 ORM【重要】 1、 什么是ORM 2、 实体类 3、 ORM改造登录案例 ORM【重要】 1、 什么是ORM 目前使用JDBC完成了CRUD,但是现在是进行CRUD,增删改方法要设计很多参数,查询的方法需要设计集合才能返回. 在实际开发中,我们需要将零散的数据封装到对象处理. ORM (Object Rela…

十九、石英晶体振荡电路

石英晶体振荡电路 1、石英晶体的特点、等效电路、特性曲线; 2、石英晶体振动器的特点, 3、石英晶体振动器的振荡频率

软考(中级-软件设计师)计算机系统篇(0921)

六、计算机系统组成(五大部件) (冯.诺依曼) 冯.诺依曼计算机的特点: 计算机有五大部件组成:输入设别,输出设备,控制器,运算器,存储器;指令和疏忽都以同等地位存于存储器…

为什么年轻人都热衷找搭子,而不是找对象?

在繁华的都市中,有一个名叫晓悦的年轻人。晓悦每天穿梭于忙碌的工作和快节奏的生活之间,渐渐地,她发现身边的朋友们都开始找起了 “搭子”。 有一天,晓悦结束了一天疲惫的工作,坐在咖啡店里,看着窗外匆匆而…

为写论文头疼?推荐4款ai写毕业论文初稿的软件

写论文对于许多学生来说是一项既重要又具挑战性的任务。为了帮助大家更高效地完成这一过程,我将推荐四款优秀的AI写毕业论文初稿的软件,并详细介绍它们的功能和优势。 传送门:https://www.aipaperpass.com?piclLGw 千笔-AIPassPaper是一款功…

面向对象例题之例题的特性

答案:C 解析:对象里面的方法和属性数量是不确定的,可以不断扩展写多个属性和方法 清洗的边界是对象必备的,哪些是这个类的,哪些是其他类的都有体现。 良好的定义行为一般指定义良好的属性和方法 可扩展性指的是子类…

【问题随记】在使用 AuthenticationManager 的时候,出现循环依赖问题 —— `java.lang.StackOverflowError`

问题随记 在使用 AuthenticationManager 的时候,出现循环依赖问题 —— java.lang.StackOverflowError,查资料查了两天半,终于找到原因。 2024-06-16T17:54:19.48708:00 ERROR 20672 --- [nio-8789-exec-1] o.a.c.c.C.[.[.[/].[dispatcherS…

波分技术基础 -- FEC

信号在传输过程中,不可避免的会出现劣化、误码,FEC (Forward error correction) 技术确保通信系统在噪声和其他损伤的影响下,依然能够实现无错误传输。 应用场景:长途密集波分系统(DWDM)实现方式&#xff…

LED显示屏迎来革新:GOB封装技术引领行业新风尚

在我们日常生活中,LED显示屏无处不在,从繁华的街头广告牌到家庭娱乐中心的大屏幕电视,它们都以鲜明的色彩和清晰的画质吸引着我们的目光。然而,在LED显示屏技术日新月异的今天,一种名为GOB(Glue On Board&a…

python:给1个整数,你怎么判断是否等于2的幂次方?

最近在csdn上刷到一个比较简单的题目,题目要求不使用循环和递归来实现检查1个整数是否等于2的幂次方,题目如下: 题目的答案如下: def isPowerofTwo(n):z bin(n)[2:]print(bin(n))if z[0] ! 1:return Falsefor i in z[1:]:if i !…

华为全联接大会HUAWEI Connect 2024印象(二):昇腾AI端侧推理

此次参加HUAWEI Connect 2024最主要目标是了解昇腾AI端侧推理技术,希望将其融合到我现在嵌入式系统课程中,不过刚开始在一楼找到一个小展台,看到了香橙派Orange Pi。香橙派是深圳迅龙的一个品牌,他们和很多芯片厂商都合作过&#…

IPsec-VPN中文解释

网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip a…

计算机毕业设计 基于Python的美术馆预约系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

【笔记】第三节 组织与性能

3.1 基本成分 3.2 微观组织特征 0.6-0.8C%碳素钢的组织为珠光体和少量的铁素体。 如何把组织和性能联系起来?德国克虏伯公司的研究——珠光体片间距与渗碳体片层厚度成比例: t s 0 ( ρ 15 ( C % ) − 1 ) ts_0(\frac{\rho}{15(C\%)}-1) ts0​(15(C%)…

【Web】PolarCTF2024秋季个人挑战赛wp

EZ_Host 一眼丁真命令注入 payload: ?host127.0.0.1;catf* 序列一下 exp: <?phpclass Polar{public $lt;public $b; } $pnew Polar(); $p->lt"system"; $p->b"tac /f*"; echo serialize($p);payload: xO:5:"Polar":2:{s:2:"…

我的AI工具箱Tauri版-VideoDuplication视频素材去重

本教程基于自研的AI工具箱Tauri版进行VideoDuplication视频素材去重。 该项目是基于自研的AI工具箱Tauri版的视频素材去重工具&#xff0c;用于高效地处理和去除重复视频内容。用户可以通过搜索关键词"去重"或通过路径导航到"Python音频技术/视频tools"模…

MySQL高阶1907-按分类统计薪水

目录 题目 准备数据 分析数据 总结 题目 结果表 必须 包含所有三个类别。 如果某个类别中没有帐户&#xff0c;则报告 0 。 按 任意顺序 返回结果表。 查询每个工资类别的银行账户数量。 工资类别如下&#xff1a; "Low Salary"&#xff1a;所有工资 严格低于…