sklearn 中 关于决策、预测、数据集处理函数的学习
一、preprocessing
(一)、make_bolos
make_bolos是sklearn中用于生成聚类数据集的函数,内部含有多项参数,如下:
n_features ,表示每一个样本有多少特征值
n_samples ,表示样本个数
centers ,聚类中心点的个数, 可以理解为label的种类数
shuffie ,洗牌
random_state ,随机种子
cluster_std ,每个类别的方差
(二)、MinMaxScaler 与 MaxAbsScaler
-
MinMaxScaler() 通过缩放特征到一个给定的最小值和最大值之间。(由参数feature_range控制,默认值为 [0,1] )
-
MaxAbsScaler是Scikit-Learn中的另一个特征缩放器,它将特征缩放到[-1, 1]的范围内,同时保留特征的稀疏性。与MinMaxScaler不同,MaxAbsScaler使用每个特征的最大绝对值来进行缩放。这对于稀疏数据(大部分特征为零的数据)非常有用,因为它可以保持数据的稀疏性,而不需要将零值转换为其他值。
(三)、Normalization
- normalize函数是一个用于对数据进行归一化(normalize)处理的函数。归一化是一种常见的预处理技术,它通过将每个样本的特征缩放到单位范数(unit norm)上,即将每个样本的特征向量调整为具有单位长度。
具体来说,normalize函数通过计算每个样本的特征向量的L2范数(欧几里德范数),然后将特征向量的每个分量除以该范数,从而得到单位范数的特征向量。 - normalize函数还接受一个关键字参数norm,用于指定归一化的范数类型。默认情况下,norm被设置为’l2’,表示使用L2范数。你也可以选择使用’L1’范数,或者设置为’max’以将特征向量的每个分量除以该特征向量的最大绝对值。
(四)、 RobustScaler
RobustScaler是一个用于缩放特征的预处理工具,它使用中位数(median)和四分位数范围(interquartile range,IQR)来缩放数据,从而抵抗异常值的影响。RobustScaler的工作原理是将每个特征的值减去该特征的中位数,然后除以该特征的IQR。这种方法使得RobustScaler对于存在异常值的数据更具鲁棒性,因为它使用的是中位数和IQR,而不是均值和标准差,这样可以减少异常值对数据缩放的影响。
二、model_selection
train_test_split,将数据集划分为训练集和测试集
cross_val_score, 将拆分与评价合并执行
cross_validate, 同时使用多个评价指标
cross_val_predict,使用交叉验证后的模型进行预测
(一)、train_test_split
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)
X:特征数据集(通常是一个NumPy数组或Pandas DataFrame),包含了你的输入特征。
y:目标数据集(通常是一个NumPy数组或Pandas Series),包含了你的目标变量。
test_size:表示测试集占总数据的比例。如果设置为0.3,就表示将数据集的30%作为测试集,70%作为训练集。
random_state:控制数据分割的随机性。设置一个固定的随机种子(比如42),可以确保每次运行代码时得到的划分结果是相同的。
train_test_split函数会返回四个数据集:X_train:训练集的特征数据。
X_test:测试集的特征数据。
y_train:训练集的目标数据。
y_test:测试集的目标数据。
(二)、cross_val_score
cross_val_score是Scikit-Learn中用于进行交叉验证的函数,它用于估算一个模型的性能指标(例如准确率、均方误差等)在不同数据子集上的表现。交叉验证是一种评估模型性能的统计方法,它可以更准确地评估模型的泛化性能,避免了因单次划分数据集而引入的偶然性。
from sklearn.model_selection import cross_val_score
model = YourModel()
scores = cross_val_score(model, X, y, cv=5) #这里cv=5表示使用5折交叉验证
model是你要评估的模型,X和y分别是特征和目标变量的数据。cv参数指定了交叉验证的折数,
(三)、cross_validate
cross_validate 函数是 scikit-learn(sklearn)库中用于交叉验证的一个功能强大的函数。它允许你在多个评估指标上评估一个(或多个)估计器的性能,同时进行交叉验证以获取更准确的评估结果。
from sklearn.model_selection import cross_validate
results = cross_validate(estimator, X, y, cv=5, scoring=['accuracy', 'precision', 'recall'], return_train_score=False)
estimator: 你想要评估的机器学习模型。
X: 特征数据。
y: 目标数据。
cv: 交叉验证的折数(例如,cv=5 表示使用 5折交叉验证)。
scoring: 一个字符串、字符串列表或者可调用对象,表示你希望在交叉验证期间计算的评估指标。可以传递多个评估指标,函数将返回一个字典,包含每个评估指标的结果。
return_train_score: 是否返回训练集上的评估结果。如果设置为
True:则返回训练集上的评估结果,否则只返回测试集上的评估结果。
cross_validate:函数将返回一个包含交叉验证结果的字典,你可以从中获取训练和测试集上每个指定评估指标的平均值、标准差等信息。这样,你就可以更好地了解你的模型在不同评估指标上的性能。
(四)、cross_val_predict
cross_val_predict 函数是 scikit-learn(sklearn)库中用于生成通过交叉验证的预测结果的函数。与 cross_validate 不同,cross_val_predict 返回每个输入样本的预测值,而不是评估指标的分数。
from sklearn.model_selection import cross_val_predict
predicted_values = cross_val_predict(estimator, X, y, cv=5)
estimator: 你想要评估的机器学习模型。
X: 特征数据。
y: 目标数据。
cv: 交叉验证的折数(例如,cv=5 表示使用 5 折交叉验证)。
cross_val_predict 函数返回一个包含每个输入样本的预测值的数组。这个函数的主要优势在于,它返回了每个样本在交叉验证中的预测值,而不是仅仅在一个特定的验证集上的预测值。这可以帮助你更好地了解你的模型在不同数据集上的表现,并且可以用于生成模型的可视化结果或进一步的分析。
三、sklearn 实现决策树 tree
DecisionTreeClassifier
一个用于构建决策树的函数,利用三板斧构建决策树:
from sklearn.tree import DecisionTreeClassifier
# 创建一个决策树分类器
wqs = DecisionTreeClassifier()
# 训练模型
wqs.fit(X_train, y_train)
# 进行预测
predictions = wqs.predict(X_test)
DecisionTreeClassifier包含许多可调参数,如下:
criterion: 衡量分裂质量的函数。可以选择 “gini”(基尼不纯度)或 “entropy”(信息增益)。
max_depth:决策树的最大深度,用于控制树的复杂度。 min_samples_split: 内部节点再分裂所需的最小样本数。
min_samples_leaf: 叶节点上所需的最小样本数。 max_features: 寻找最佳分割时考虑的特征数量。
四、metrics
classification_report
classification_report是在机器学习中用于评估分类模型性能的一种报告形式。它提供了关于模型在每个类别上的精确度、召回率、F1分数和支持度等指标,帮助你更详细地了解模型在不同类别下的表现。
*classification_report通常包含以下几个部分:
-
精确度(Precision): 精确度表示在所有被分类为某个类别的样本中,真正例(模型正确分类为该类别的样本)的比例。精确度越高,表示模型在该类别上的分类准确性越高。
-
召回率(Recall): 召回率表示在所有实际属于某个类别的样本中,被正确分类为该类别的样本的比例。召回率也被称为敏感度(Sensitivity)或真正例率(True Positive Rate)。召回率越高,表示模型能够捕捉到更多该类别的样本。
-
F1分数(F1-Score): F1分数是精确度和召回率的调和平均数,它综合考虑了精确度和召回率。F1分数越高,表示模型在精确度和召回率之间取得了平衡。
-
支持度(Support): 支持度表示在实际样本中属于该类别的样本数量。
五、metrics
confusion_matrix
confusion_matrix是用于计算分类模型的混淆矩阵的函数。混淆矩阵是一种用于评估分类模型性能的表格,它可以帮助你了解模型在每个类别上的预测准确性。
from sklearn.metrics import confusion_matrix
# 真实标签
y_true = [1, 0, 1, 2, 1, 0, 2, 1]
# 模型预测标签
y_pred = [1, 0, 2, 2, 1, 0, 1, 1]
# 计算混淆矩阵
confusion = confusion_matrix(y_true, y_pred)
print(confusion)
y_true是真实标签的列表,y_pred是模型预测的标签的列表。