Pandas 如何从数据集中选择重要的变量
介绍
在机器学习中,数据特征是影响模型性能最重要的参数之一。数据的特征或变量应该足够信息且足够好,可以将其提供给机器学习算法进行使用,因为有人指出,即使提供了较少量但是质量优良的数据,模型也能表现最佳。
传统的机器学习算法在提供更多数据时表现更好。但是,在一定阈值之后,数据的数量增加已经不能再提升模型的性能。此时,选择变量仍然可以帮助我们提升性能。
本文将讨论一些最佳方法,以帮助我们选择最佳的数据集中的变量,以获得准确的模型,并提供核心概念、工作机制和示例。
特征选择
特征选择是一种用于选择数据集中最好特征的技术。在每个机器学习问题中,数据集中不可能有最好的特征。在训练和构建机器学习模型时,必须丢弃或忽略一些无用的特征。
有许多方法可用于从数据集中选择变量。
方法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个特征中的前十个最佳特征。
方法5:使用卡方检验
卡方法是数据科学家最为知名的用于特征选择的统计方法之一。此方法适用于将分类数据作为自变量和因变量的情况。
通过在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)
与上面的代码类似,所有特征的卡方指标也将被计算,并根据卡方值,最佳特征将作为最终输出可见。
要点
- 特征选择是模型部署期间为了更少的计算和存储功率需求以及更高的模型性能而应该采取的重要步骤之一。
-
在时间限制的情况下,可以使用领域知识和标准的皮尔逊相关方法快速进行特征选择。
-
ANOVA和卡方检验可用于准确地选择具有分类和数值形式的数据的特征。
结论
本文讨论了一些用于从数据集中选择最佳特征或变量以增强模型性能的最佳特征选择技术。了解这些方法将帮助人们在任何数据上高效地进行特征选择,并能根据情况做出最佳决策。