# 5.9 sklearn 估计器接口回顾

Scikit-learn 努力在为所有方法建立统一的接口。给定名为`model`的 scikit-learn 估计器对象，可以使用以下方法（并非每个模型都有）：

适用于所有估计器
`model.fit()`：拟合训练数据。对于监督学习应用，它接受两个参数：数据`X`和标签`y`（例如`model.fit(X, y)`）。对于无监督学习应用，`fit`仅接受单个参数，即数据`X`（例如`model.fit(X)`）。
可在监督估计器中使用
`model.predict()`：给定训练好的模型，预测一组新数据的标签。此方法接受一个参数，即新数据`X_new`（例如`model.predict(X_new)`），并返回数组中每个对象的习得标签。
`model.predict_proba()`：对于分类问题，一些估计器也提供此方法，该方法返回新观测值具有每个分类标签的概率。在这种情况下，`model.predict()`返回概率最高的标签。
`model.decision_function()`：对于分类问题，一些估计器提供不是概率的不确定性估计。对于二分类，`decision_function >= 0`表示将预测为正类，而`<0`表示负类。
`model.score()`：对于分类或回归问题，大多数（所有？）估计器实现了`score`方法。分数在 0 到 1 之间，分数越大表示拟合越好。对于分类器，分数方法计算预测的准确度。对于回归器，得分计算预测的确定系数（R^2）。
`model.transform()`：对于特征选择算法，这会将数据集缩减为所选特征。对于某些分类和回归模型（如某些线性模型和随机森林），此方法可将数据集缩减为信息量最大的特征。因此，这些分类和回归模型也可以用作特征选择方法。
可在无监督的估算器中使用
`model.transform()`：给定一个无监督的模型，将新数据转换为新的基。这也接受一个参数`X_new`，并根据无监督模型返回数据的新表示。
`model.fit_transform()`：一些估计器实现了这个方法，它可以更有效地对相同的输入数据执行拟合和变换。
`model.predict()`：对于聚类算法，`predict`方法将为新数据点生成簇标签。并非所有聚类方法都具有此函数。
`model.predict_proba()`：高斯混合模型（GMM）提供给定混合成分生成每个点的概率。
`model.score()`：像 KDE 和 GMM这 样的密度模型，提供了数据在模型下的似然。

除了`fit`之外，两个最重要的函数是`produce`，它产生目标变量（`y`），以及`transform`，它产生数据的新表示（`X`）。 下表展示了哪个函数适用于哪种的模型：

| `model.predict` | `model.transform` |
| --- | --- |
| 分类 | 预处理 |
| 回归 | 降维 |
| 聚类 | 特征提取 |
|   | 特征选择 |
