Scikit Learn - 数据表示
我们知道,机器学习就是要从数据中创建模型。为此,计算机必须首先理解数据。接下来,我们将讨论各种数据表示方式,以便计算机能够理解这些数据 −
数据作为表格
在 Scikit-learn 中表示数据的最佳方式是表格形式。表格表示一个二维数据网格,其中行代表数据集中的单个元素,列代表与这些单个元素相关的量。
示例
通过下面的示例,我们可以使用 Python 的 seaborn 库以 Pandas DataFrame 的形式下载 iris dataset。
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
从上面的输出可以看出,数据的每一行代表一个观测到的花朵,行数代表数据集中花朵的总数。通常,我们将矩阵的行称为 samples。
另一方面,数据的每一列代表描述每个 sample 的定量信息。通常,我们将矩阵的列称为 features。
数据作为特征矩阵
特征矩阵可以定义为表格布局,其中信息可以被视为二维矩阵。它存储在名为 X 的变量中,并假定为二维,形状为 [n_samples, n_features]。通常,它包含在 NumPy array 或 Pandas DataFrame 中。如前所述,samples 始终代表数据集描述的单个对象,而 features 代表以定量方式描述每个 sample 的不同观测值。
数据作为目标数组
除了用 X 表示的特征矩阵外,我们还有目标数组。它也被称为 label,用 y 表示。标签或目标数组通常是一维的,长度为 n_samples。它通常包含在 NumPy array 或 Pandas Series 中。目标数组可能同时具有连续数值和离散值。
目标数组与特征列有何区别?
我们可以从一点来区分两者:目标数组通常是我们想要从数据中预测的量,即在统计术语中它是因变量。
示例
在下面的示例中,我们根据 iris 数据集的其他测量值来预测花的种类。在这种情况下,Species 列将被视为特征。
import seaborn as sns
iris = sns.load_dataset('iris')
%matplotlib inline
import seaborn as sns; sns.set()
sns.pairplot(iris, hue='species', height=3);
输出
X_iris = iris.drop('species', axis=1)
X_iris.shape
y_iris = iris['species']
y_iris.shape
输出
(150,4) (150,)