提交 a735f1b5 编写于 作者: W wizardforcel

4.6

上级 f1f77fb7
......@@ -677,3 +677,82 @@ SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3,
max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)
```
## 4.6 使用多类分类来归纳
这个秘籍中,我们会了解多类分类。取决于你的算法选择,你可以轻松地实现多类分类,或者定义用于比较的模式。
### 准备
在处理线性模型,例如逻辑回归时,我们需要使用`OneVsRestClassifier`。这个模式会为每个类创建一个分类器。
### 操作步骤
首先,我们会查看一个决策树的粗略示例,用于拟合多类的数据集。我们之前讨论过,我们可以使用一些分类器获得多类,所以我们仅仅拟合示例来证明它可以工作,然后继续。
其次,我们实际上将`OneVsRestClassifier`合并进我的模型中:
```py
>>> from sklearn import datasets
>>> X, y = datasets.make_classification(n_samples=10000, n_classes=3,
n_informative=3)
>>> from sklearn.tree import DecisionTreeClassifier
>>> dt = DecisionTreeClassifier()
>>> dt.fit(X, y)
>>> dt.predict(X)
array([1, 1, 0, .., 2, 1, 1])
```
你可以看到,我们能够以最低努力来拟合分类器。
现在,让我们转向多类分类器的案例中。这需要我们导入`OneVsRestClassifier`。我们也导入`LogisticRegression `
```py
>>> from sklearn.multiclass import OneVsRestClassifier
>>> from sklearn.linear_model import LogisticRegression
```
现在,我们覆盖`LogisticRegression`分类器,同时,注意我们可以使其并行化。如果我们想知道`OneVsRestClassifier`分类器如何工作,它仅仅是训练单独的模型,之后比较它们。所以,我们可以同时单独训练数据。
```py
>>> mlr = OneVsRestClassifier(LogisticRegression(), n_jobs=2)
>>> mlr.fit(X, y)
>>> mlr.predict(X)
array([1, 1, 0, ..., 2, 1, 1])
```
### 工作原理
如果我们打算快速时间我们自己的`OneVsRestClassifier`,应该怎么做呢?
首先,我们需要构造一种方式,来迭代分类,并为每个分类训练分类器。之后,我们首先需要预测每个分类:
```py
>>> import numpy as np
>>> def train_one_vs_rest(y, class_label):
y_train = (y == class_label).astype(int)
return y_train
>>> classifiers = []
>>> for class_i in sorted(np.unique(y)): l = LogisticRegression()
y_train = train_one_vs_rest(y, class_i)
l.fit(X, y_train)
classifiers.append(l)
```
好的,所以既然我们配置好了 OneVsRest 模式,我们需要做的所有事情,就是求出每个数据点对于每个分类器的可能性。我们之后将可能性最大的分类赋给数据点。
例如,让我们预测`X[0]`
```py
for classifier in classifiers
>>> print classifier.predict_proba(X[0])
[[ 0.90443776 0.09556224]]
[[ 0.03701073 0.96298927]]
[[ 0.98492829 0.01507171]]
```
你可以看到,第二个分类器(下标为`1`)拥有“正”的最大可能性,所以我们将这个点标为`1`
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册