如何从数据集中选择重要变量?

machine learningpandasserver side programming更新于 2025/7/8 1:07:17

简介

在机器学习中,数据特征是影响模型性能最重要的参数之一。数据的特征或变量应该信息丰富且足够好,以便将其输入到机器学习算法中,正如所指出的,即使提供少量高质量的数据,模型也能表现最佳。

传统的机器学习算法在输入更多数据后会表现更好。然而,在数据达到一定值或数量之后,模型的性能会趋于稳定,不再增长。这时,变量的选择仍然可以帮助我们提升性能。

本文将讨论一些最佳方法,这些方法可以帮助我们从数据集中选择最佳变量,从而获得准确的模型,并介绍其核心原理、工作机制和示例。

特征选择

特征选择是一种用于在数据集中选择最佳特征的技术。在每个机器学习问题中,数据集中不可能存在最优的特征。在训练和构建机器学习模型时,必须丢弃或忽略一些无用的特征。

从数据集中选择变量的方法有很多。

方法 1:运用你的知识

在直接使用一些复杂的特征选择方法之前,利用关于数据的常识并丢弃无用的特征是节省时间和计算量的最佳方法。

你可以利用你对数据的了解,然后根据它来做决定。例如,带有序列号列的数据通常会被忽略且不实用,而带有 ID 或 No 等列的回归数据集没有用处,可以直接丢弃。

方法 2:利用皮尔逊相关系数

相关特征选择方法是最简单、计算量较小的特征选择方法之一。这里计算每个独立变量和因变量之间的相关性,并根据相关性值手动选择最佳特征。

#importing pandas import pandas as pd #dataframe df = pd.read_csv("data.csv") #correlations df.corr()

方法 3:使用 SelectKBest

SelectKBest 是用于选择数据中最佳和最合适特征的最著名且最有价值的方法之一。当因变量和独立变量或列为数值形式时,此方法最为有用。

使用 Sci-kit Learn 可以轻松实现此方法。只需传入我们所需的最佳特征数量,它就会计算所有相关性并返回指定的最佳特征作为输出。

#importing libraries from sklearn.datasets import make_regression from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import f_regression # dataset generation X, y = make_regression(n_samples=50, n_features=5, n_informative=5) # feature selection fs = SelectKBest(score_func=f_regression, k=5) # apply feature selection X_best = fs.fit_transform(X, y)

如上代码所示,我们可以使用参数"k"来定义所需的最佳特征数量。将此代码应用于数据后,最终形状将为 (100,5),其中 100 指定行数,5 表示所选的最佳五个特征。

方法 4:使用方差分析 (ANOVA) 检验

方差分析 (ANOVA) 检验,又称方差分析检验,也是一种常用的技术,常用于在数据中选择最佳特征。使用此检验,我们可以定义所需的最佳特征数量,并根据该数量生成新数据。

此方法主要用于数据集中包含数值型数据和分类型数据的情况。

示例

# ANOVA feature selection from sklearn.datasets import make_classification from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import f_classif # generate dataset X, y = make_classification(n_samples=100, n_features=100, n_informative=10) # define feature selection fs = SelectKBest(score_func=f_classif, k=10) # apply feature selection X_best = fs.fit_transform(X, y)

上述输出可能是从 100 个给定特征中选出最佳的 10 个特征。

方法 5:使用卡方检验

Cho-square 方法是数据科学家最著名的特征选择统计方法之一。这种方法适用于将分类数据作为独立数据和相关数据的情况。

通过在 score_func 中使用参数值"chi2",我们可以在 SKLearn 中快速实现并计算数据的最佳变量。

示例

# Chi2 feature selection from sklearn.datasets import make_classification from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 # generate dataset X, y = make_classification(n_samples=100, n_features=100, n_informative=10) # define feature selection fs = SelectKBest(score_func=chi2, k=10) # apply feature selection X_best = fs.fit_transform(X, y)

与上述代码类似,所有特征的卡方度量也将被计算,并根据卡方值选择最佳特征作为最终输出。

关键要点

  • 在模型部署过程中,为了降低计算和存储需求并提高模型性能,特征选择是至关重要的步骤之一。

  • 在模型构建时间有限的情况下,可以使用领域知识和标准皮尔逊相关方法进行快速特征选择。

  • 方差分析和卡方检验可用于对分类和数值形式的数据进行精确的特征选择。

结论

在本文中,我们讨论了一些用于从数据集中选择最佳特征或变量以增强模型性能的最佳特征选择技术。了解这些方法将有助于人们非常有效地对任何数据执行特征选择,并能够据此做出最佳决策。