如何做网站怎么赚钱吗,高安网站建设,在线海报设计,如何 套用模板做网站Scikit Learn - 数据表示 文章目录 一、说明二、数据表格2.1 数据作为特征矩阵2.2 数据作为目标数组 三、什么是 Estimator API四、Estimator API 的使用五、指导原则六、使用 Estimator API 的步骤七、监督学习示例八、无监督学习示例 一、说明
众所周知#xff0c;机器学习…Scikit Learn - 数据表示 文章目录 一、说明二、数据表格2.1 数据作为特征矩阵2.2 数据作为目标数组 三、什么是 Estimator API四、Estimator API 的使用五、指导原则六、使用 Estimator API 的步骤七、监督学习示例八、无监督学习示例 一、说明
众所周知机器学习即将从数据中创建模型。为此计算机必须首先理解数据。接下来我们将讨论表示数据以便计算机理解的各种方法。后面我们将介绍估算器的使用。
二、数据表格
在 Scikit-learn 中表示数据的最佳方式是以表格的形式。表表示数据的二维网格其中行表示数据集的各个元素列表示与这些单个元素相关的数量。
例 通过下面给出的示例我们可以借助 python seaborn 库以 Pandas DataFrame 的形式下载鸢尾花数据集。
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 从上面的输出中我们可以看到数据的每一行代表观察到的花朵行数代表数据集中的花朵总数。通常我们将矩阵的行称为样本。
另一方面数据的每一列都代表描述每个样本的定量信息。通常我们将矩阵的列称为特征。
2.1 数据作为特征矩阵
特征矩阵可以定义为表格布局其中信息可以被视为二维矩阵。它存储在名为 X 的变量中并假定为二维形状为 [n_samples n_features]。大多数情况下它包含在 NumPy 数组或 Pandas DataFrame 中。如前所述样本始终表示数据集描述的单个对象特征表示以定量方式描述每个样本的不同观测值。
探索我们最新的在线课程按照自己的节奏学习新技能。注册并成为认证专家以提升您的职业生涯。
2.2 数据作为目标数组
除了用 X 表示的特征矩阵外我们还有目标数组。它也被称为标签。它用 y 表示。标签或目标数组通常是一维的长度为 n_samples。它通常包含在 NumPy 数组或 Pandas 系列中。目标数组可以同时具有连续数值和离散值。
目标数组与功能列有何不同 我们可以通过一点来区分两者即目标数组通常是我们想要从数据中预测的数量即在统计术语中它是因变量。
例 在下面的示例中我们从鸢尾花数据集中根据其他测量值预测花的种类。在这种情况下物种列将被视为要素。
import seaborn as sns
iris sns.load_dataset(iris)
%matplotlib inline
import seaborn as sns; sns.set()
sns.pairplot(iris, huespecies, height3);输出
X_iris iris.drop(species, axis1)
X_iris.shape
y_iris iris[species]
y_iris.shape输出 (150,4) (150,)
三、什么是 Estimator API
它是 Scikit-learn 实现的主要 API 之一。它为各种 ML 应用程序提供了一致的接口这就是为什么 Scikit-Learn 中的所有机器学习算法都是通过 Estimator API 实现的。从数据中学习拟合数据的对象是估计器。它可以与任何算法一起使用如分类、回归、聚类甚至可以与从原始数据中提取有用特征的转换器一起使用。
为了拟合数据所有估算器对象都公开了一个拟合方法该方法采用如下所示的数据集 -
estimator.fit(data) 接下来当估计器被相应的属性实例化时可以设置它的所有参数如下所示。
estimator Estimator (param11, param22) estimator.param1 上述的输出为 1。
一旦数据与估计器拟合就会根据手头的数据估计参数。现在所有估计参数都将是估计器对象的属性以下列标结尾
estimator.estimated_param_
四、Estimator API 的使用
估算器的主要用途如下
模型的估计和解码 Estimator 对象用于模型的估计和解码。此外该模型被估计为以下确定性函数 −
对象构造中提供的参数。
如果估计器的 random_state 参数设置为 none则全局随机状态 numpy.random。
传递给最近调用以拟合、fit_transform或fit_predict的任何数据。
在一系列调用中传递给partial_fit的任何数据。
将非矩形数据表示映射到矩形数据 它将非矩形数据表示映射到矩形数据中。简单来说它接受每个样本未表示为固定长度的类似数组对象的输入并为每个样本生成一个类似数组的特征对象。
核心样品和外围样品的区别 它使用以下方法对核心样本和外围样本之间的区别进行建模 -
适合
fit_predict如果转导
预测是否感应
探索我们最新的在线课程按照自己的节奏学习新技能。注册并成为认证专家以提升您的职业生涯。
五、指导原则
在设计 Scikit-Learn API 时请牢记以下指导原则 -
一致性 该原则指出所有对象都应共享从一组有限方法中提取的公共接口。文档也应保持一致。
有限的对象层次结构 这个指导原则说——
算法应由 Python 类表示
数据集应以标准格式表示如 NumPy 数组、Pandas DataFrames、SciPy 稀疏矩阵。
参数名称应使用标准 Python 字符串。
组成 众所周知ML算法可以表示为许多基本算法的序列。Scikit-learn 在需要时会使用这些基本算法。
合理的默认值 根据这一原则每当 ML 模型需要用户指定的参数时Scikit-learn 库都会定义一个适当的默认值。
检查 根据此指导原则每个指定的参数值都作为 pubic 属性公开。
六、使用 Estimator API 的步骤
以下是使用 Scikit-Learn 估算器 API 的步骤 −
第 1 步选择模型类别 在第一步中我们需要选择一类模型。这可以通过从 Scikit-learn 导入相应的 Estimator 类来完成。
步骤 2选择模型超参数 在这一步中我们需要选择类模型超参数。这可以通过使用所需值实例化类来完成。
第 3 步排列数据 接下来我们需要将数据排列成特征矩阵X和目标向量y。
第 4 步模型拟合 现在我们需要将模型拟合到您的数据中。这可以通过调用模型实例的 fit 方法来完成。
步骤 5应用模型 拟合模型后我们可以将其应用于新数据。对于监督学习请使用 predict 方法预测未知数据的标签。对于无监督学习请使用 predict 或 transform 来推断数据的属性。
七、监督学习示例
在这里作为此过程的一个示例我们采用将一条线拟合到 xy 数据的常见情况即简单线性回归。
首先我们需要加载数据集我们使用的是虹膜数据集 −
例
import seaborn as sns
iris sns.load_dataset(iris)
X_iris iris.drop(species, axis 1)
X_iris.shape输出 (150, 4) 例
y_iris iris[species]
y_iris.shape输出 (150,) 例 现在对于这个回归示例我们将使用以下示例数据 −
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
rng np.random.RandomState(35)
x 10*rng.rand(40)
y 2*x-1rng.randn(40)
plt.scatter(x,y);输出 因此我们的线性回归示例有上述数据。
现在有了这些数据我们可以应用上述步骤。
选择一类模型 在这里为了计算一个简单的线性回归模型我们需要导入线性回归类如下所示 -
from sklearn.linear_model import LinearRegression 选择模型超参数 一旦我们选择了一类模型我们就需要做出一些重要的选择这些选择通常表示为超参数或者在模型拟合数据之前必须设置的参数。在这里对于这个线性回归的例子我们希望通过使用fit_intercept超参数来拟合截距如下所示 -
例
model LinearRegression(fit_intercept True)
model输出
LinearRegression(copy_X True, fit_intercept True, n_jobs None, normalize False) 排列数据 现在正如我们所知我们的目标变量 y 是正确的形式即 1-D 数组n_samples长度。但是我们需要重塑特征矩阵 X使其成为大小为 [n_samples n_features] 的矩阵。可以按如下方式完成 -
例
X x[:, np.newaxis] X.shape 输出
(40, 1) 模型拟合 一旦我们安排了数据就该拟合模型了即将我们的模型应用于数据。这可以在 fit 方法的帮助下完成如下所示 -
例
model.fit(X, y) 输出
LinearRegression(copy_X True, fit_intercept True, n_jobs None,normalize False) 在 Scikit-learn 中fit 进程有一些尾随下划线。
对于此示例以下参数显示了数据的简单线性拟合的斜率 −
例
model.coef_ 输出
array([1.99839352]) 以下参数表示对数据的简单线性拟合的截距 −
例
model.intercept_ 输出
-0.9895459457775022 将模型应用于新数据 训练模型后我们可以将其应用于新数据。由于监督机器学习的主要任务是基于不属于训练集的新数据来评估模型。它可以在 predict 方法的帮助下完成如下所示 -
例
xfit np.linspace(-1, 11)
Xfit xfit[:, np.newaxis]
yfit model.predict(Xfit)
plt.scatter(x, y)
plt.plot(xfit, yfit);完整的工作/可执行示例
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import seaborn as snsiris sns.load_dataset(iris)
X_iris iris.drop(species, axis 1)
X_iris.shape
y_iris iris[species]
y_iris.shaperng np.random.RandomState(35)
x 10*rng.rand(40)
y 2*x-1rng.randn(40)
plt.scatter(x,y);
from sklearn.linear_model import LinearRegression
model LinearRegression(fit_interceptTrue)
model
X x[:, np.newaxis]
X.shapemodel.fit(X, y)
model.coef_
model.intercept_xfit np.linspace(-1, 11)
Xfit xfit[:, np.newaxis]
yfit model.predict(Xfit)
plt.scatter(x, y)
plt.plot(xfit, yfit);八、无监督学习示例
在这里作为此过程的一个示例我们以降低 Iris 数据集的维数的常见情况为例以便我们可以更轻松地将其可视化。在此示例中我们将使用主成分分析 PCA这是一种快速线性降维技术。
与上面给出的示例一样我们可以加载并绘制虹膜数据集中的随机数据。之后我们可以按照以下步骤操作 -
选择一类模型 from sklearn.decomposition import PCA 选择模型超参数 例
model PCA(n_components2) model 输出
PCA(copy True, iterated_power ‘auto’, n_components 2, random_state None, svd_solver ‘auto’, tol 0.0, whiten False) 模型拟合 例
model.fit(X_iris) 输出
PCA(copy True, iterated_power ‘auto’, n_components 2, random_state None, svd_solver ‘auto’, tol 0.0, whiten False) 将数据转换为二维 例
X_2D model.transform(X_iris) 现在我们可以将结果绘制如下
输出
iris[PCA1] X_2D[:, 0]
iris[PCA2] X_2D[:, 1]
sns.lmplot(PCA1, PCA2, hue species, data iris, fit_reg False);输出 完整的工作/可执行示例
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import seaborn as snsiris sns.load_dataset(iris)
X_iris iris.drop(species, axis 1)
X_iris.shape
y_iris iris[species]
y_iris.shape
rng np.random.RandomState(35)
x 10*rng.rand(40)
y 2*x-1rng.randn(40)
plt.scatter(x,y);
from sklearn.decomposition import PCAmodel PCA(n_components2)
model
model.fit(X_iris)
X_2D model.transform(X_iris)
iris[PCA1] X_2D[:, 0]
iris[PCA2] X_2D[:, 1]
sns.lmplot(PCA1, PCA2, huespecies, datairis, fit_regFalse);