非线性SVM模型

news2024/11/27 6:15:00

通过5个条件判定一件事情是否会发生,5个条件对这件事情是否发生的影响力不同,计算每个条件对这件事情发生的影响力多大,写一个非线性SVM模型程序,最后打印5个条件分别的影响力。

示例一

在非线性支持向量机(SVM)模型中,特征的影响力不像在线性SVM中那样直接通过权重系数来反映。非线性SVM通常使用核函数来映射数据到更高维的空间,在这个空间中寻找线性决策边界。因此,原始特征空间中的权重不再具有直接的解释性。

然而,我们可以通过一些方法来估计特征的重要性,尽管这些方法可能不如线性SVM中的权重系数那么直观。例如,我们可以使用特征排序技术,如递归特征消除(Recursive Feature Elimination, RFE),来评估每个特征对模型性能的贡献。但是,这种方法并不直接提供单个特征的影响力,而是提供特征子集的相对重要性。

另一种方法是使用模型特定的特征重要性评分,但这通常适用于像树模型(如随机森林)这样的模型,而不是SVM。

由于非线性SVM不直接提供特征影响力,下面将提供一个使用scikit-learn中的SVC(支持向量分类)模型的示例,该模型默认使用径向基函数(RBF)核,这是一个常用的非线性核。然后,将使用一种启发式方法来近似估计特征的影响力,尽管这种方法并不完美。

import numpy as np  
from sklearn import svm  
from sklearn.datasets import make_classification  
from sklearn.model_selection import train_test_split  
  
# 设置随机数种子以确保结果可复现  
np.random.seed(42)  
  
# 假设有5个条件(特征)  
num_features = 5  
  
# 生成模拟数据  
X, y = make_classification(n_samples=1000, n_features=num_features, n_informative=num_features, n_redundant=0, random_state=42)  
  
# 划分数据集为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 创建非线性SVM分类器(使用RBF核)  
clf = svm.SVC(kernel='rbf', gamma='scale', random_state=42)  
  
# 训练模型  
clf.fit(X_train, y_train)  
  
# 启发式方法:使用每个特征的训练数据方差来近似其影响力  
# 注意:这不是一个准确的方法,只是一个启发式示例  
feature_variances = np.var(X_train, axis=0)  
normalized_feature_variances = feature_variances / np.sum(feature_variances)  
  
# 打印特征的影响力(使用方差作为启发式指标)  
print("Feature influences (using variance as a heuristic):")  
for feature_idx, variance in enumerate(normalized_feature_variances):  
    print(f"Condition {feature_idx + 1}: {variance}")  

# 注意:这只是一个启发式的例子,实际上并不反映SVM模型内部特征的真实影响力。  
# 在非线性SVM中,没有直接的方法来获取每个特征对决策边界的准确影响力。
在这个例子中,使用了一个启发式方法,即特征方差,来估计特征的重要性。请注意,这并不是一个准确的方法来衡量SVM中特征的影响力,因为它没有考虑到模型的实际决策边界。在非线性SVM中,特征的重要性与决策边界的关系通常是非常复杂的,并且不容易直接量化。

如果真的需要了解特征对模型决策的影响力,可能需要考虑使用其他类型的模型,如决策树或随机森林,这些模型提供了更直接的特征重要性度量。

示例二

非线性SVM(如使用径向基函数(RBF)核的SVM)并不直接提供特征影响力或权重的直观解释,因为决策边界是在一个可能无限维的特征空间中计算的,这个特征空间是通过核函数隐式定义的。因此,我们不能像线性SVM那样直接查看权重来确定特征的影响力。

然而,我们可以通过一些间接方法来估计特征的重要性,比如使用特征选择技术或模型敏感性分析。对于非线性SVM,一种常见的方法是使用基于模型性能的特征排序,例如递归特征消除(RFE)。

由于非线性SVM不提供直接的权重解释,这里会提供一个使用scikit-learn中的非线性SVM模型(如SVC)的示例,但请注意,这个示例不会直接给出每个条件的影响力。相反,会展示如何使用RFE来估计特征的重要性。

import numpy as np  
from sklearn.svm import SVC  
from sklearn.model_selection import train_test_split  
from sklearn.datasets import make_classification  
from sklearn.feature_selection import RFE  
  
# 生成一个具有5个特征的分类问题  
X, y = make_classification(n_samples=1000, n_features=5, n_informative=5, n_redundant=0, random_state=42)  
  
# 划分数据集为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 创建非线性SVM分类器(使用RBF核)  
svm_clf = SVC(kernel='rbf', random_state=42)  
  
# 使用RFE进行特征选择  
rfe = RFE(estimator=svm_clf, n_features_to_select=5, step=1)  
rfe.fit(X_train, y_train)  
  
# 打印特征的重要性排名(通过RFE)  
print("Feature Ranking: %s" % rfe.ranking_)  

# 请注意,RFE提供的排名不一定能直接转换为具体的“影响力”数值。  
# 排名为1的特征是被认为最重要的,而排名为2、3等的特征则重要性递减。  
# 在这个例子中,因为我们选择了所有5个特征,所以理想的排名应该是所有特征都为1。  
  
# 如果真的需要估计每个特征对模型预测的具体影响,可能需要考虑其他方法,  
# 比如使用基于模型的置换特征重要性(Permutation Feature Importance),  
# 或者训练多个只包含一个特征的模型来查看每个特征单独预测时的性能。
在这个例子中,RFE被用来对特征进行排序,但它不会给出具体的权重或影响力数值。如果需要更具体的数值,可能需要采取其他方法,如上面提到的置换特征重要性或单变量分析。

请注意,非线性SVM的特征影响力分析通常比线性SVM更复杂,因为决策边界不是原始特征空间的简单超平面。

示例三

在非线性支持向量机(SVM)模型中,特征的影响力并不像在线性SVM中那样直接通过权重系数来解释。非线性SVM通常使用核函数来映射数据到更高维的空间,并在那个空间中找到一个线性决策边界。因此,原始的输入特征并不会直接与决策边界的权重相对应。

然而,我们可以通过一些方法来估计特征的重要性,尽管这些方法可能不如线性SVM中的权重解释那么直接。一种方法是使用基于模型的特征重要性评分,但这通常需要对模型进行特定的修改或使用额外的工具。另一种方法是分析训练后的模型支持向量,看看哪些特征在支持向量中有较大的变化或贡献。

由于标准的非线性SVM并不直接提供特征重要性,我们将采用一种启发式的方法,通过训练多个仅基于单一特征的SVM模型,并比较它们的性能来间接评估每个特征的影响力。这种方法并不完美,但它可以给我们一些关于特征相对重要性的线索。

请注意,下面的代码示例并不是真正的非线性SVM特征重要性分析的标准方法,而是一种启发式的近似方法。

import numpy as np  
from sklearn import svm  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import accuracy_score  
  
# 假设有5个特征条件  
num_features = 5  
  
# 生成一些模拟数据  
np.random.seed(0)  
X = np.random.randn(1000, num_features)  
y = np.random.randint(2, size=1000)  # 随机生成二分类标签  
  
# 为了示例,我们让其中一个特征对目标有较强的影响  
X[:, 0] += 3 * y  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 存储每个特征单独训练SVM时的准确率  
feature_importances = []  
  
# 遍历每个特征,单独用它来训练一个SVM模型  
for i in range(num_features):  
    # 使用当前特征训练SVM  
    clf = svm.SVC(kernel='rbf', gamma='scale')  # 使用RBF核,即非线性SVM  
    clf.fit(X_train[:, i:i+1], y_train)  # 只用当前特征进行训练  
      
    # 在测试集上评估模型  
    y_pred = clf.predict(X_test[:, i:i+1])  
    accuracy = accuracy_score(y_test, y_pred)  
      
    # 存储准确率作为特征重要性的度量  
    feature_importances.append(accuracy)  
  
# 打印每个特征的影响力(以准确率为度量)  
for i, importance in enumerate(feature_importances):  
    print(f"Condition {i + 1} influence: {importance}")

在这个示例中,我们生成了一些模拟数据,并人为地让第一个特征对目标变量有较强的影响。然后,我们单独用每个特征训练了一个非线性SVM模型,并使用测试集上的准确率作为该特征影响力的估计。

请注意,这种方法有很大的局限性,因为它假设每个特征可以独立地预测目标变量,而实际上特征之间可能存在相互作用。此外,准确率可能不是一个好的性能度量,特别是在数据不平衡或分类问题很难的情况下。这个方法只是为了展示如何启发式地评估特征重要性,并不推荐在实际应用中使用。

在实际应用中,如果想要评估非线性SVM中特征的重要性,可能需要考虑使用基于模型的特征选择方法,如递归特征消除(RFE),或者基于模型输出的敏感性分析等方法。这些方法可以提供更准确的特征重要性估计,但通常需要更多的计算资源和更复杂的分析步骤。

示例四

非线性SVM模型,如径向基函数(RBF)核SVM,并不直接提供特征的线性权重,因为它们在特征空间中是非线性的。因此,我们不能像线性SVM那样直接解释特征的权重作为影响力。不过,我们可以通过一些间接的方法来估计特征的重要性,例如使用基于模型的置换特征重要性(Permutation Feature Importance)或SHAP值(SHapley Additive exPlanations)。

在这里,将提供一个使用scikit-learn的RBF核SVM的示例,并使用置换特征重要性来计算每个条件对预测的影响力。置换特征重要性是通过随机打乱某个特征的值并观察模型性能的变化来计算的,如果性能显著下降,则该特征被认为是重要的。

import numpy as np  
from sklearn import svm  
from sklearn.inspection import permutation_importance  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import accuracy_score  
from sklearn.datasets import make_classification  
  
# 设置随机数种子以确保结果可复现  
np.random.seed(42)  
  
# 假设有5个条件(特征)  
num_features = 5  
  
# 生成模拟数据  
X, y = make_classification(n_samples=1000, n_features=num_features, n_informative=num_features, n_redundant=0, random_state=42)  
  
# 划分数据集为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 创建非线性SVM分类器(使用RBF核)  
clf = svm.SVC(kernel='rbf', gamma='scale', random_state=42)  
  
# 训练模型  
clf.fit(X_train, y_train)  
  
# 计算置换特征重要性  
result = permutation_importance(clf, X_test, y_test, n_repeats=10, random_state=42, n_jobs=2)  
  
# 打印特征的影响力(置换特征重要性)  
print("Feature influences (permutation importance):")  
for feature_idx, importance in enumerate(result.importances_mean):  
    print(f"Condition {feature_idx + 1}: {importance}")

请注意,permutation_importance函数会对每个特征进行多次置换(在这个例子中是10次),并计算每次置换后模型性能的下降程度。importances_mean属性提供了每个特征重要性的平均值。

这段代码将训练一个非线性SVM模型,并使用置换特征重要性来估计每个条件对预测结果的影响力。结果将按照条件(特征)的索引打印出来。由于这是一个非线性模型,所得到的影响力不应该是线性权重的直接解释,而应该被理解为该特征在模型预测中的重要性度量。

示例五

在非线性支持向量机(SVM)模型中,特征的“影响力”不像在线性SVM中那样直接通过系数来解释。非线性SVM(如使用径向基函数RBF核的SVM)在高维特征空间中构建决策边界,这使得直接解释单个特征的影响力变得复杂。

尽管如此,我们仍然可以训练一个非线性SVM模型,并尝试通过一些方法来理解特征的重要性。一种常见的方法是使用特征排列重要性(permutation importance),它衡量了当我们随机打乱某个特征的值时,模型性能降低的程度。性能降低越多,说明该特征越重要。

然而,这种方法并不直接给出特征的权重,而是给出了一种特征重要性的相对度量。并且,它需要额外地拟合多次模型,这可能会很耗时。

如果坚持要查看非线性SVM模型中特征的影响力,并愿意接受这种相对度量方式,可以给出一个基于scikit-learn的特征排列重要性的示例代码。但是,请注意,这并不是直接查看模型权重的方法,也不是在所有情况下都能提供清晰解释的方法。

import numpy as np  
from sklearn import svm  
from sklearn.inspection import permutation_importance  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import accuracy_score  
from sklearn.datasets import make_classification  
  
# 创建一个模拟数据集,其中有5个特征  
X, y = make_classification(n_samples=1000, n_features=5, n_informative=5, n_redundant=0, random_state=42)  
  
# 划分数据集为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 创建非线性SVM分类器(使用RBF核)  
clf = svm.SVC(kernel='rbf', random_state=42)  
  
# 训练模型  
clf.fit(X_train, y_train)  
  
# 评估模型在测试集上的性能  
y_pred = clf.predict(X_test)  
baseline_accuracy = accuracy_score(y_test, y_pred)  
  
# 对于每个特征,计算特征排列重要性  
result = {}  
for i in range(X.shape[1]):  
    X_permuted = X_test.copy()  
    np.random.shuffle(X_permuted[:, i])  
    acc_permuted = accuracy_score(y_test, clf.predict(X_permuted))  
    result[f'Condition {i + 1}'] = baseline_accuracy - acc_permuted  
  
# 打印特征的影响力(排列重要性)  
print("Feature influences (permutation importance):")  
sorted_result = sorted(result.items(), key=lambda x: x[1], reverse=True)  
for feature_name, importance in sorted_result:  
    print(f"{feature_name}: {importance}")

在这个例子中,我们首先训练了一个使用RBF核的非线性SVM模型。然后,我们计算了模型在测试集上的基线准确率。接下来,对于每个特征,我们打乱了测试集中该特征的值,并重新评估了模型的准确率。特征的重要性是通过比较基线准确率和打乱特征值后的准确率来计算的。最后,我们按照重要性从大到小的顺序打印了每个特征的影响力。

请注意,这种方法给出的是特征重要性的相对度量,而不是绝对的权重值。此外,这种方法可能会受到随机性的影响,因此可能需要多次重复实验来获得更稳定的结果。

示例六

在机器学习中,核函数通常用于支持向量机(SVM)和其他核方法中,以在高维空间中隐式地计算特征之间的相似性。然而,核函数本身并不直接提供特征的影响力或权重。在使用核函数的SVM中,特征的权重不是直接可解释的,因为模型在特征空间中学习了一个非线性决策边界。

尽管如此,我们可以尝试通过一些间接的方法来估计特征的重要性。一种可能的方法是使用基于模型性能的特征重要性评估技术,例如排列特征重要性(permutation feature importance)或基于模型的特征选择方法。但是,这些方法通常不会给出像线性模型那样的直接权重。

由于核函数SVM不直接提供特征权重,下面将展示如何使用线性SVM的系数作为特征影响力的近似,即使这不是一个完全准确的方法,因为线性SVM和核函数SVM在决策边界的性质上是不同的。但是,如果坚持要使用核函数,并且想要估计特征的影响力,我们可以考虑使用一种基于模型性能变化的方法,如排列特征重要性。

请注意,下面的代码示例实际上是一个线性SVM的例子,因为核函数SVM不提供直接的权重解释。如果想要一个核函数SVM的示例,并且接受通过排列特征重要性来估计影响力,那么请参考之前的回答中关于排列特征重要性的部分,并将其应用于一个使用核函数(如RBF)的SVM模型。

如果想要一个使用核函数但尝试解释特征影响力的简化示例(尽管这不是标准的做法),可以考虑使用线性核的SVM,并假设特征在某种程度上是线性相关的。这样的假设在现实世界中可能不成立,但它会提供一个权重的概念,尽管这些权重不应该被解释为在真正的非线性核SVM中一样。

这里是一个使用线性核的SVM示例,我们将错误地将其权重解释为特征影响力:

import numpy as np  
from sklearn.svm import SVC  
from sklearn.datasets import make_classification  
from sklearn.model_selection import train_test_split  
  
# 创建一个模拟数据集,其中有5个特征  
X, y = make_classification(n_samples=1000, n_features=5, n_informative=5, n_redundant=0, random_state=42)  
  
# 划分数据集为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 创建SVM分类器,使用线性核  
clf = SVC(kernel='linear', C=1.0, random_state=42)  
  
# 训练模型  
clf.fit(X_train, y_train)  
  
# 获取特征的系数,这里假设它们代表了影响力(尽管在非线性核下这种解释不成立)  
coef = clf.coef_[0]  
  
# 打印特征的影响力(系数)  
print("Feature influences (coefficients):")  
for idx, coef_value in enumerate(coef):  
    print(f"Condition {idx + 1}: {coef_value}")

这段代码中的权重解释仅在线性核函数下有效,并且即使在这种情况下,它们也应该谨慎解释。在非线性核函数下,权重没有直接的对应物,因此通常不会尝试以这种方式解释它们。如果真的需要在非线性核SVM中估计特征影响力,应该考虑使用排列特征重要性或其他模型无关的特征选择技术。

No module named 'sklearn'

为了解决这个问题,需要安装scikit-learn

python -m pip install -U scikit-learn

pip install -U scikit-learn 命令将检查当前安装的 scikit-learn 版本,并升级到最新版本(如果有一个新版本可用)。如果 scikit-learn 还没有安装,这个命令将安装最新版本的 scikit-learn

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

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

相关文章

OpenCV 4.9基本绘图

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV使用通用内部函数对代码进行矢量化 下一篇:OpenCV系列文章目录(持续更新中......) ​目标 在本教程中,您将学习如何&am…

【云呐】固定资产盘点报告表怎么填

报告表以表述清晰为主,避免繁琐,重要数据及问题使用表格形式展示。通过签字对报告负责认同度。内容应全面反映本次盘点,提供参考依据。一、标题 包含单位名称、报告期间等基本信息二、前言 概括本次盘点的目的和任务签署三、盘点范围与时间 明确盘点的固定资产项目和时…

代码签名证书OV跟EV的区别

代码签名证书中的OV和EV分别代表“Organization Validation”(组织验证)和“Extended Validation”(增强验证)。这两种类型的代码签名证书均用于对软件或应用程序进行数字签名,确保用户下载的代码来自于经过验证的真实…

git源码泄露

Git 源码泄露 开发人员会使用 git 进行版本控制,对站点自动部署。但如果配置不当,可能会将 .git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码。 确定是否存在泄漏 (1&…

开发必备8套工具都有哪些你知道嘛?

经过多年的使用,收集。我发现大部分的人员都在使用上面的某一种工具来开发。 认识了解上面开发环境工具,有利于你更快的写出高效的代码。没有看错上面是全部的8套 我把他们捆绑在一起。目的就是为了更好的让大家。学习。不管你是java的。.net语言的。p…

目标检测、识别和语义分割的标注工具安装

计算机视觉 图像分类(目标检测):一张图像中是否含某种物体物体定位(目标检测与目标识别):确定目标位置和所属类别。语义分割(目标分割和目标分类):对图像进行像素级分类…

酷开科技不断深耕智能电视领域,用酷开系统带给消费者更多可能性

在这个网络快速发展的时代,电视行业也发生了巨大变革。与以往单纯的“看”电视不同,人们不再满足于现有的状态,消费者对电视娱乐的追求更加丰富,这也就带给智能电视产业无限的发展可能。酷开科技瞄准这一产业趋势,不断…

Android adb ime 调试输入法

目录 前言列出所有输入法仅列出输入法 id列出所有输入法的所有信息 启用/禁用 输入法启用输入法禁用输入法 切换输入法还原输入法 前言 安装多个输入法后&#xff0c;可以在设置里进行切换。 既然是开发&#xff0c;能用命令就就命令~ ime 帮助说明&#xff1a; ime <c…

Linux|centos7|postgresql数据库主从复制之异步还是同步的问题

前言&#xff1a; postgresql数据库是一个比较先进的中型关系型数据库&#xff0c;原本以为repmgr和基于repmgr的主从复制是挺简单的一个事情&#xff0c;但现实很快就给我教育了&#xff0c;原来postgresql和MySQL一样的&#xff0c;也是有异步或者同步的复制区别的 Postgre…

mysql语句学习

SQL Select语句完整的执行顺序&#xff1a; 1、from子句组装来自不同数据源的数据&#xff1b; &#xff08;先join在on&#xff09; 2、where子句基于指定的条件对记录行进行筛选&#xff1b; 3、group by子句将数据划分为多个分组&#xff1b; 4、使用聚集函数进行计算&a…

5.vector容器的使用

文章目录 vector容器1.构造函数代码工程运行结果 2.赋值代码工程运行结果 3.容量和大小代码工程运行结果 4.插入和删除代码工程运行结果 5.数据存取工程代码运行结果 6.互换容器代码工程运行结果 7.预留空间代码工程运行结果 vector容器 1.构造函数 /*1.默认构造-无参构造*/ …

基于Java的商城网站系统设计与实现:Spring Boot后端与Vue.js前端

本文介绍了如何利用Java的Spring Boot框架和Vue.js技术构建一个商城网站系统。通过采用B/S结构&#xff0c;后端使用Spring Boot进行开发&#xff0c;前端采用Vue.js进行开发&#xff0c;实现了系统的设计与实现。 随着电子商务的兴起&#xff0c;商城网站成为了现代人购物的主…

网络安全 | 什么是DDoS攻击?

关注WX&#xff1a;CodingTechWork DDoS-介绍 DoS&#xff1a;Denial of Service&#xff0c;拒绝服务。DDoS是通过大规模的网络流量使得正常流量不能访问受害者目标&#xff0c;是一种压垮性的网络攻击&#xff0c;而不是一种入侵手段。NTP网络时间协议&#xff0c;设备需要…

【图像分割】nnUnetV1与V2的Linux部署与应用命令

以前觉得麻烦&#xff0c;一直没用过nnunet&#xff0c;虽然知道它很火&#xff0c;最近一个契机&#xff0c;部署使用了一下nnunet&#xff0c;记录一下其部署和使用的方法与命令。 1、部署 首先&#xff0c;我有一个环境&#xff0c;这个环境可以是以前就有的&#xff0c;也可…

左值与右值,以及c++11的相关特性。

目录 左值 右值 左值引用总结&#xff1a; 右值引用总结&#xff1a; 右值引用使用场景和意义&#xff1a; 1、左值引用的使用场景&#xff1a; 编译器优化1&#xff1a; 2、移动构造与移动赋值&#xff1a; 3、右值引用的使用场景&#xff1a; 编译器优化2&#xff1a…

Qt_Note20_QML_自定义Grid控件与OpacityMask的使用

import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 import QtGraphicalEffects 1.14Window {visible: truewidth: 640height: 480title: qsTr("Hello World")// 自定义Grid控件与OpacityMask的使用Grid {id: gridwidth: 15height: 200co…

SQL语句学习+牛客基础39SQL

什么是SQL&#xff1f; SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统&#xff08;RDBMS&#xff09;。 SQL 的范围包括数据插入、查询、更新和删除&#xff0c;数据库模式创建和修改&#xff0c;以及数据访问控制。 SQL语法 数据库表 一个…

Autosar-从0到1构建Autosar最小系统(免费)-1

1建立Ecu最小系统 1.1Ecu最小系统组成 Ecu最小系统至少需要&#xff1a;SWC、Com、ComM、EcuM、BswM、Os、RTE等。 Autosar各模块的配置以arxml文件形式保存&#xff0c;因此生成以上模块需要以下各个arxml文件。 模块 所需的arxml文件 准备好以上arxml文件后&#xff0c;就可…

python核心篇之桌面程序

推荐使用: wxPython 一. 安装wxPython 二. 第一个wxPython程序 展示 代码 # coding: utf-8import wx# 创建应用程序对象 app wx.App() # 创建窗口对象 frame wx.Frame(None, title"Hello World", size(300, 200), pos(100, 100)) # 显示窗口 frame.Show() # 进入主…

【Spring实战项目】SpringBoot3整合WebSocket+拦截器实现登录验证!从原理到实战

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &a…