Scikit Learn 数据表示


众所周知,机器学习即将从数据中创建模型,因此计算机必须首先理解数据。接下来,我们将讨论各种表示数据的方式,以便计算机能够理解。

数据作为表格


在 Scikit-learn 中表示数据的最佳方式是以表格的形式,表格表示二维数据网格,其中行表示数据集的单个元素,列表示与这些单个元素相关的数量。

通过下面的例子,我们可以在python seaborn库的帮助下以Pandas DataFrame的形式下载iris数据集

import seaborn as sns
iris = sns.load_dataset('iris')
iris.head()
sepal_length sepal_width petal_length petal_width  species
0        5.1      3.5         1.4             0.2   setosa
1        4.9      3.0         1.4             0.2   setosa
2        4.7      3.2         1.3             0.2   setosa
3        4.6      3.1         1.5             0.2   setosa
4        5.0      3.6         1.4             0.2   setosa

从上面的输出中,我们可以看到数据的每一行代表一朵花,行数代表数据集中花的总数。通常,我们将矩阵的行称为样本

另一方面,每一列数据代表描述每个样本的定量信息。通常,我们将矩阵的列称为特征

数据作为特征矩阵


特征矩阵可以被定义为表格布局,其中信息可以被认为是一个二维矩阵。它被存储在一个名为X的变量中,并假定为二维,形状为[n_samples, n_features]。

大多数情况下,它包含在一个NumPy数组或一个Pandas DataFrame中。

如前所述,样本总是代表数据集所描述的单个对象,特征代表以定量方式描述每个样本的不同观测值。

数据作为目标数组


除了用X表示的特征矩阵外,我们还有目标数组,它也被称为标签。

标签或目标数组通常是一维的,长度为n_samples,它通常包含在NumPy数组或Pandas Series中。

目标数组可以有两种值,连续的数值和离散的数值。

目标数组与特征列有何不同?

我们可以通过一点区分目标数组通常是我们想要从数据中预测的数量,即在统计术语中它是因变量。

在下面的示例中,我们根据其他测量值从 iris 数据集预测花的种类。在这种情况下,物种列将被视为特征。

import seaborn as sns
iris = sns.load_dataset('iris')
%matplotlib inline
import seaborn as sns; sns.set()
sns.pairplot(iris, hue='species', height=3);

Target array

X_iris = iris.drop('species', axis=1)
X_iris.shape
y_iris = iris['species']
y_iris.shape
(150,4)
(150,)