机器学习:scikit-learn库的主要组件

scikit-learnsklearn)是一个用于机器学习的Python库,它提供了广泛的算法和工具,用于数据预处理、模型构建、模型评估、模型选择等。scikit-learn的设计遵循一致的API原则,使得使用不同的模型和算法变得简单且直观。以下是scikit-learn的主要组件及其功能:

1. 数据预处理(sklearn.preprocessing

提供了一系列的工具和方法,用于对原始数据进行清洗和转换,以便它们更适合于机器学习模型的训练。包括特征缩放(如标准化、归一化)、编码分类特征(如独热编码)、生成多项式特征等。

from sklearn.preprocessing import StandardScaler, MinMaxScaler, OneHotEncoder, PolynomialFeatures
import numpy as np# 假设我们有以下数据集
X = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
y = np.array(['cat', 'dog', 'dog'])# 特征缩放
## 标准化
scaler_standard = StandardScaler()
X_scaled_standard = scaler_standard.fit_transform(X)
print("Standardized features:\n", X_scaled_standard)## 归一化
scaler_minmax = MinMaxScaler()
X_scaled_minmax = scaler_minmax.fit_transform(X)
print("Min-Max normalized features:\n", X_scaled_minmax)# 编码分类特征
## 独热编码
encoder = OneHotEncoder(sparse=False)
y_encoded = encoder.fit_transform(y.reshape(-1, 1))
print("One-hot encoded labels:\n", y_encoded)# 生成多项式特征
## 生成二次多项式特征
poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_features.fit_transform(X)
print("Polynomial features:\n", X_poly)

2. 特征选择(sklearn.feature_selection

用于从数据中选择最有用的特征,可以提高模型的效率和性能。特征选择方法包括单变量统计测试、递归特征消除等。

from sklearn.feature_selection import SelectKBest, f_classif, RFE
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target# 方法1: 使用单变量统计测试选择特征
select_k_best = SelectKBest(score_func=f_classif, k=2)
X_selected_k_best = select_k_best.fit_transform(X, y)
print("Features selected by SelectKBest:\n", X_selected_k_best[0:5])# 方法2: 使用递归特征消除选择特征
rfe = RFE(estimator=RandomForestClassifier(), n_features_to_select=2, step=1)
X_selected_rfe = rfe.fit_transform(X, y)
print("Features selected by RFE:\n", X_selected_rfe[0:5])

在这个示例中,我们展示了使用sklearn.feature_selection模块的两种特征选择方法:SelectKBestRecursive Feature Elimination (RFE),使用的是著名的Iris数据集。

方法1: 使用单变量统计测试选择特征 (SelectKBest)

  • SelectKBest:此方法根据单变量统计测试选择特征。这里使用的是f_classif,它适用于分类任务,并选择最重要的k个特征(这里k=2)。
  • 输出展示了通过SelectKBest选出的前五个样本的两个最重要特征。

方法2: 使用递归特征消除选择特征 (RFE)

  • RFE:递归特征消除(Recursive Feature Elimination)通过递归减少特征集的大小来选择特征。它使用一个基模型(这里使用RandomForestClassifier)来估计特征的重要性,并递归地移除最不重要的特征。
  • n_features_to_select=2指定了最终选择的特征数,step=1表示每次迭代中移除的特征数。
  • 输出展示了通过RFE选出的前五个样本的两个最重要特征。

解释

这两种方法从不同角度解决了特征选择的问题:

  • **SelectKBest**直接根据单变量统计测试的得分来选择特征,适用于快速筛选重要特征。
  • **RFE**则通过递归地构建模型并且移除最不重要的特征来选择特征,这需要更多的计算,但通常能够得到更优化的特征子集,尤其是在特征与目标之间的关系更复杂时。

特征选择对于提高模型的性能、减少模型训练时间以及防止数据维度过高导致的过拟合非常关键。通过减少特征数量,模型训练变得更加高效,同时模型的可解释性也会提高。

3. 特征提取(sklearn.feature_extraction

特别用于从文本和图像数据中提取特征。例如,从文本数据中提取词袋模型特征,或者从图像数据中提取可以用于机器学习模型的特征。

from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.feature_extraction import DictVectorizer# 文本数据示例
text_data = ["Life is like a box of chocolates","You never know what you're gonna get","Life is not all about waiting for the storm to pass"]# 从文本数据中提取特征
## 使用词袋模型(CountVectorizer)
count_vectorizer = CountVectorizer()
X_count = count_vectorizer.fit_transform(text_data)
print("Features extracted with CountVectorizer:\n", X_count.toarray())## 使用TF-IDF编码(TfidfVectorizer)
tfidf_vectorizer = TfidfVectorizer()
X_tfidf = tfidf_vectorizer.fit_transform(text_data)
print("Features extracted with TfidfVectorizer:\n", X_tfidf.toarray())# 字典数据示例
dict_data = [{'age': 35, 'city': 'Tokyo'}, {'age': 25, 'city': 'New York'}, {'age': 45, 'city': 'London'}]# 从字典数据中提取特征
dict_vectorizer = DictVectorizer(sparse=False)
X_dict = dict_vectorizer.fit_transform(dict_data)
print("Features extracted from dict data:\n", X_dict)
print("Feature names:", dict_vectorizer.get_feature_names_out())

 在这个示例中,我们展示了如何使用sklearn.feature_extraction模块从文本和字典数据中提取特征。

文本数据特征提取

  1. 使用词袋模型(CountVectorizer

    • CountVectorizer将文本数据转换为特征矩阵,其中每个条目是单词出现的次数。这种表示忽略了单词出现的顺序,但在许多情况下仍然非常有效。
    • 输出展示了从三段文本中提取的特征。每行代表一个文档,每列代表一个单词的计数。
  2. 使用TF-IDF编码(TfidfVectorizer

    • TfidfVectorizer将文本数据转换为TF-IDF特征矩阵。TF-IDF(Term Frequency-Inverse Document Frequency)考虑了词频(TF)和逆文档频率(IDF),有助于减少常见词的影响,强调重要单词。
    • 输出展示了使用TF-IDF方法提取的特征矩阵,其中权重较高的值表示对应的词对文档更重要。

字典数据特征提取

  • DictVectorizer
    • DictVectorizer用于将字典列表转换为特征矩阵。这对于处理离散数据特别有用,例如在处理分类数据时。
    • 示例中的字典数据包含年龄和城市信息。DictVectorizer转换后的特征矩阵包括数值特征(如年龄)和通过独热编码转换的分类特征(城市)。
    • 输出的特征矩阵显示了转换后的数据,其中“age”保持不变,而“city”被转换为三个二进制特征,分别表示三个不同的城市。

通过上述方法,我们可以从文本和字典数据中有效地提取特征,使其适用于机器学习模型的训练。这些特征提取技术是处理非数值数据、文本数据或分类数据时的关键步骤

4. 模型构建

scikit-learn提供了广泛的算法库,用于分类、回归、聚类和异常检测等任务。

  • 分类和回归(sklearn.linear_modelsklearn.svmsklearn.ensemble等):提供了逻辑回归、线性回归、支持向量机、决策树、随机森林等算法。
  • 聚类(sklearn.cluster:提供了K-means、DBSCAN、层次聚类等算法。
  • 降维(sklearn.decomposition:提供了PCA、NMF、LDA等算法,用于降低数据维度和特征提取。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target# 数据预处理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 分类:逻辑回归、支持向量机(SVM)、随机森林
## 逻辑回归
log_reg = LogisticRegression()
log_reg.fit(X_scaled, y)## 支持向量机(SVM)
svm_clf = SVC()
svm_clf.fit(X_scaled, y)## 随机森林
rf_clf = RandomForestClassifier()
rf_clf.fit(X_scaled, y)# 聚类:K-means
kmeans = KMeans(n_clusters=3)
kmeans.fit(X_scaled)
clusters = kmeans.labels_# 降维:PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)# 输出部分结果
print("逻辑回归预测:", log_reg.predict(X_scaled[:5]))
print("SVM预测:", svm_clf.predict(X_scaled[:5]))
print("随机森林预测:", rf_clf.predict(X_scaled[:5]))
print("K-means聚类结果:", clusters[:5])
print("PCA降维结果前5个样本:\n", X_pca[:5])

在这个示例中,我们演示了如何使用scikit-learn库进行分类、聚类和降维任务,以及如何对数据进行预处理。

分类

我们使用逻辑回归(LogisticRegression)、支持向量机(SVC)和随机森林(RandomForestClassifier)作为分类器来预测Iris数据集的类别。这些模型被训练来识别数据集中的不同Iris花的类型。

聚类

使用K-means聚类算法(KMeans)对数据进行聚类,指定了3个聚类中心(因为Iris数据集有3类)。KMeans尝试将数据分为3个聚类,以发现数据中的潜在分组。

降维

通过主成分分析(PCA)对特征进行降维,将数据从4维降到2维。降维是一种有效的数据预处理技术,它可以减少数据的复杂性,同时尽量保留原始数据的信息。

结果解释

  • 对于分类任务,我们输出了每种模型对前5个样本的预测结果。这些预测展示了模型如何根据花的特征识别其类别。
  • 在聚类任务中,clusters数组展示了K-means算法将每个样本分配到的聚类。
  • 降维后的结果显示了前5个样本在新的二维特征空间中的位置,这有助于我们通过可视化来理解数据的结构。

通过这些步骤,我们可以看到scikit-learn提供了丰富的工具和算法来支持从简单到复杂的机器学习任务,包括但不限于分类、聚类和降维。这些任务是探索、理解和预测数据的基础。

5. 模型评估和选择(sklearn.model_selection

提供了工具和方法用于交叉验证、网格搜索参数优化等,以评估模型性能和选择最优模型。

  • 数据划分(如train_test_split:将数据集分成训练集和测试集。
  • 交叉验证(如KFoldStratifiedKFold:用于更准确地评估模型性能。
  • 超参数优化(如GridSearchCVRandomizedSearchCV:用于寻找最优的模型参数。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, KFold, GridSearchCV
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target# 数据划分:将数据集分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 交叉验证:使用KFold
kf = KFold(n_splits=5, shuffle=True, random_state=42)
for train_index, test_index in kf.split(X):X_train_kf, X_test_kf = X[train_index], X[test_index]y_train_kf, y_test_kf = y[train_index], y[test_index]# 在这里可以进行模型训练和评估...# 超参数优化:使用GridSearchCV寻找SVC的最优参数
param_grid = {'C': [0.1, 1, 10, 100], 'gamma': [1, 0.1, 0.01, 0.001], 'kernel': ['rbf']}
grid_search = GridSearchCV(SVC(), param_grid, cv=5)
grid_search.fit(X_train, y_train)
print("Best parameters:", grid_search.best_params_)# 使用最优参数训练模型并评估性能
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)
print("Test set accuracy:", accuracy_score(y_test, y_pred))

在这个示例中,我们使用了scikit-learnmodel_selection模块来演示数据划分、交叉验证和超参数优化的过程。

数据划分

使用train_test_split函数将Iris数据集分成了训练集和测试集,其中测试集占总数据的20%。这是机器学习项目中非常常见的步骤,旨在确保模型能够在未见过的数据上进行评估。

交叉验证

使用KFold进行5折交叉验证。在这个过程中,数据被分成5个部分,模型将在4/5的数据上进行训练,在剩下的1/5的数据上进行评估,这个过程重复5次。这有助于我们更准确地估计模型的性能。在示例中,我们演示了如何设置KFold,但没有展示在每次分割后训练和评估模型的具体代码。

超参数优化

使用GridSearchCV对SVC(支持向量机分类器)进行超参数优化。我们定义了一个参数网格来搜索最佳的C(正则化强度)、gamma(核函数的系数)和kernel类型。GridSearchCV自动进行了交叉验证来评估不同参数组合的效果,并找到了最优参数组合。

最后,我们使用找到的最优参数训练模型,并在测试集上评估了模型的准确性。在这个示例中,最优模型在测试集上的准确率达到了100%。

这个过程展示了如何使用scikit-learnmodel_selection模块进行有效的模型评估和选择。通过这种方式,我们可以确保选择出的模型既能够很好地拟合训练数据,又具有良好的泛化能力。

6. 模型评价指标(sklearn.metrics

提供了一系列用于评估模型性能的指标,包括准确率、召回率、F1分数、ROC曲线、均方误差等,适用于不同类型的机器学习任务。

from sklearn.metrics import accuracy_score, recall_score, f1_score, roc_auc_score, mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.linear_model import LinearRegression
import numpy as np# 生成模拟的分类数据集
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练随机森林分类器
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
y_prob = clf.predict_proba(X_test)[:, 1]# 评价分类模型
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Recall:", recall_score(y_test, y_pred))
print("F1 Score:", f1_score(y_test, y_pred))
print("ROC AUC Score:", roc_auc_score(y_test, y_prob))# 生成模拟的回归数据集
X, y = make_classification(n_samples=100, n_features=1, n_informative=1, n_targets=1, random_state=42)
y = y + np.random.randn(100) * 0.1  # 添加一些噪声# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练线性回归模型
reg = LinearRegression()
reg.fit(X_train, y_train)
y_pred = reg.predict(X_test)# 评价回归模型
print("Mean Squared Error:", mean_squared_error(y_test, y_pred))

在上述代码中,我们首先展示了如何使用sklearn.metrics模块中的不同指标来评估分类模型的性能,然后尝试生成和评估一个回归模型,但在生成回归数据集时遇到了一个错误。这是因为make_classification函数被错误地用来生成回归数据集,而实际上应该使用make_regression函数来生成回归任务的数据。让我们更正这个错误,并继续评估回归模型:

分类模型评价指标

我们使用随机森林分类器(RandomForestClassifier)作为示例,并计算了几个关键的分类指标:

  • 准确率(Accuracy):正确分类的样本占总样本的比例。
  • 召回率(Recall):在所有正类中,被正确识别为正类的比例。
  • F1分数(F1 Score):准确率和召回率的调和平均数,用于评估模型的整体性能。
  • ROC AUC分数(ROC AUC Score):反映模型区分正负类别能力的指标,值越大表示模型性能越好。

修正回归模型的数据生成和评价

from sklearn.datasets import make_regression# 生成模拟的回归数据集
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练线性回归模型
reg = LinearRegression()
reg.fit(X_train, y_train)
y_pred = reg.predict(X_test)# 评价回归模型
print("Mean Squared Error:", mean_squared_error(y_test, y_pred))

这部分代码更正后生成了回归数据集,并使用线性回归模型进行了训练和预测。我们使用均方误差(MSE)作为评价指标来量化模型预测值和实际值之间的差异。MSE越小,表示模型预测的准确性越高。

通过这两部分的演示,我们可以看到sklearn.metrics提供了丰富的指标来评估模型的性能,适用于不同类型的机器学习任务。正确地选择和使用这些指标对于理解模型性能、进行模型选择和优化非常关键。

7. 管道(sklearn.pipeline

管道用于将多个处理步骤封装为一个单一的过程,这对于流线化机器学习工作流程非常有用。通过管道,可以将数据预处理、特征选择和模型训练步骤链接起来,简化代码并减少错误。

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target# 创建管道
# 管道包含三个步骤:数据标准化、降维(PCA)、训练逻辑回归模型
pipeline = Pipeline(steps=[('scaler', StandardScaler()),('pca', PCA(n_components=2)),('logistic_regression', LogisticRegression())
])# 使用管道训练模型
pipeline.fit(X, y)# 使用管道预测
y_pred = pipeline.predict(X)# 输出模型在训练集上的准确率
print("Training accuracy:", pipeline.score(X, y))

在这个示例中,我们展示了如何使用scikit-learnPipeline类来创建一个机器学习管道,该管道封装了数据预处理、特征降维和模型训练的步骤。

创建管道

我们定义了一个管道,它由以下三个顺序执行的步骤组成:

  1. 数据标准化'scaler'):使用StandardScaler对特征进行标准化处理,确保每个特征的均值为0,方差为1。
  2. 降维'pca'):通过主成分分析(PCA)将特征空间降维到2维。这有助于简化模型并可能提高性能。
  3. 训练逻辑回归模型'logistic_regression'):最后,使用降维后的特征训练一个逻辑回归模型。

训练和预测

  • 使用fit方法训练管道,这将按照管道中定义的顺序,先对数据进行标准化,然后进行PCA降维,最后使用降维后的特征训练逻辑回归模型。
  • 使用predict方法进行预测,管道自动将相同的预处理步骤应用于输入数据,并使用训练好的模型进行预测。
  • 使用score方法评估模型在整个训练集上的准确率。

优势

使用管道的优势包括:

  • 简化代码:将数据预处理、特征转换和模型训练步骤封装在一起,减少了处理流程中的错误,并使代码更简洁易读。
  • 自动化流程:在预测新数据时,管道自动应用相同的预处理和特征转换步骤,保证了数据的处理方式与训练时一致。
  • 便于调参和验证:可以将管道作为一个整体进行交叉验证和超参数调优,简化了模型选择和评估的过程。

在这个示例中,管道训练后在训练集上的准确率为约93.33%,展示了一个简单但有效的机器学习工作流程。

scikit-learn的这些组件共同构成了一个强大的机器学习库,可以应用于从简单到复杂的各种机器学习任务。其一致的API设计和丰富的文档使得scikit-learn非常适合机器学习初学者和专业人士使用。

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

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

相关文章

图解CAP原理

CAP原理 通常说一个分布式系统或者服务或者中间件,不能同时拥有这三个特性。它们只能两两组合。 分区容错性 尽管一个系统出现了数据的丢失或者故障,那么我们的系统仍然要对外提供正常的访问 如上图所示,一个结点挂掉不影响另一个结点对外提供…

3、Cocos Creator 节点和组件

目录 1、 节点和组件 2、 节点层级和显示顺序 3、坐标系和节点变换属性 坐标系 锚点 旋转 缩放 尺寸 4、 常用技巧 5、参考 1、 节点和组件 Cocos Creator 的工作流程是以组件式开发为核心的,组件式架构也称作 组件 — 实体系统(或 Entity-C…

「PHP系列」PHP 常量/字符串、类型比较

文章目录 一、PHP 常量1. 定义常量使用 define() 函数使用 const 关键字(在类内部) 2. 访问常量3. 常量的特点4.注意事项5. 示例 二、PHP 字符串1. 定义字符串使用单引号使用双引号使用 heredoc 和 nowdoc 2. 字符串操作字符串连接字符串长度字符串替换字…

旅游管理系统|基于springBoot旅游管理系统设计与实现(附项目源码+论文)

基于springBoot旅游管理系统设计与实现 一、摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生,其可以帮助…

脏牛提权(靶机复现)

目录 一、脏牛漏洞概述 二、漏洞复现 1.nmap信息收集 1.1.查看当前IP地址 1.2.扫描当前网段,找出目标机器 1.3.快速扫描目标机全端口 三、访问收集到的资产 192.168.40.134:80 192.168.40.134:1898 四、msf攻击 1.查找对应exp 2.选择对应exp并配置相关设置 五、内…

每天五分钟卷积神经网络:如何基于滑动窗口技术完成目标的检测?

汽车检测算法 现在我们想要构建一个汽车检测算法,我们希望输入到算法中一张图片,算法就可以帮助我们检测出这张图片中是否有汽车。 数据集 首先创建一个标签训练集,x是样本,y是标签。我们的训练集最好是被剪切过的图片,剪掉汽车以外的部分,使汽车居于中间位置,就是整张…

如何使用jQuery来隐藏和显示一个元素?描述一下jQuery中的事件绑定方法。

如何使用jQuery来隐藏和显示一个元素? 在jQuery中,隐藏和显示元素是常见的操作,可以通过.hide()和.show()方法来实现。这两个方法分别用于隐藏和显示选定的HTML元素。 隐藏元素 要隐藏一个元素,你可以使用.hide()方法。例如&…

Java 学习和实践笔记(50):使用Comparable 接口确定对象根据什么属性来排序

多个对象进行排序时,需要根据对象的什么属性来排序。 例如,同样都是人,可以根据人的身高排序,可以根据人的年龄排序。因此,当对多个人进行排序时,就要事先确定好根据人的什么属性来排序。 使Comparable 接…

使用verilog实现俄罗斯方块游戏

编写俄罗斯方块游戏需要进行大量的硬件设计,包括图形显示、用户输入处理、游戏逻辑等。以下是一个简单的基于Verilog的俄罗斯方块游戏示例,用于说明该过程: ```verilog module tetris_game ( input clk, // 时钟信号 input reset, // 复位信号 input lef…

kubernetes(K8S)学习(八):K8S之常见部署方案

K8S之常见部署方案 一、普通部署二、滚动更新(Rolling update)三、蓝绿部署(Blue/Green Deployment)四、灰度发布(金丝雀发布) 常见的部署方案参考博文:常见部署方案:普通部署、滚动…

【物联网项目】基于ESP8266的家庭灯光与火情智能监测系统——文末完整工程资料源码

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

Java基础之自增自减运算符

Java基础之自增自减运算符 基本用法 int a 10;a; System .out.prinln(a);//a11int a 10;a; System .out.prinln(a);//a11tip: 第一次运算之后a的值会更新 然后再进行下面的运算!!! 练习: 代码呈现: 结果: tip: x的值是最新的x的值.

微信小程序开发【从入门到精通】——页面导航

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

el-select的错误提示不生效、el-select验证失灵、el-select的blur规则失灵

发现问题 在使用el-select进行表单验证的时候&#xff0c;发现点击下拉列表没选的情况下&#xff0c;他不会提示没有选择选项的信息&#xff0c;我设置了rule如下 <!--el-select--><el-form-item label"等级" prop"level"><el-select v-m…

Y Combinator W24 AI 创业地图

近日公布&#xff0c;Y Combinator的W24 AI创业地图上&#xff0c;有149家公司专注于AI领域&#xff0c;占到了总数的63%哦&#xff01; 而且&#xff0c;这些公司中&#xff0c;有70%是在应用层发力&#xff0c;28%则专注于工具层&#xff0c;只有2%是搞基础设施的。 分类百分…

esp单片机下arduino_gfx不相干显示驱动优化对flash空间的占用对比

一般情况下&#xff0c;很多esp32或者esp8266下的tft模块驱动都会包含很多种&#xff0c;而我们只需要其中一种&#xff0c;那就有个疑问这些被编译进的显示驱动到底占用了多少空间&#xff0c;是否需要把他优化掉&#xff1f; 这是默认的驱动列表&#xff1a; 84个文件&…

对谈Concured首席技术官:利用AI和MongoDB打造个性化内容推荐系统

Built with MongoDB 栏目采访了AI初创企业Concured在成立约一年后加入的首席技术官 Tom Wilson&#xff0c;围绕 Concured 的人工智能使用情况、Wilson 加入团队的过程、坚持选择MongoDB的原因以及公司未来发展展开讨论。 关于Concured 内容无处不在。无论消费者寻找什么或所处…

解决WSL更新速度慢的方案

在Windows上安装Docker Desktop时&#xff0c;如果选择使用WSL&#xff0c;则可能会出现在运行程序前要求升级WSL的步骤。程序会提示使用下面指令来升级 wsl.exe --update但是升级速度特别慢&#xff0c;于是在网络不稳定的情况下经常会出现下载失败的情况。 百度里一直没搜到…

选择华为HCIE培训机构有哪些注意事项

选择软件培训机构注意四点事项1、口碑&#xff1a;学员和社会人士对该机构的评价怎样&#xff1f; 口碑对于一个机构是十分重要的&#xff0c;这也是考量一个机构好不好的重要标准&#xff0c;包括社会评价和学员的评价和感言。誉天作为华为首批授权培训中心&#xff0c;一直致…

boost::asio::ip::tcp/udp::socket::release 函数为什么限制 Windows 8.1 才可以调用?

如本文题目所示&#xff0c;这是因为只有在 Windows 8.1&#xff08;Windows Server 2012 RC&#xff09;及以上 Windows 操作版本才提供了运行时&#xff0c;修改/删除完成端口关联的ABI接口。 boost::asio 在 release 函数底层实现之中是调用了 FileReplaceCompletionInform…