下面是使用Python画出使用分类器得到的决策边界的完整攻略:
1. 准备数据集
我们需要一个可视化的数据集,这里我们使用sklearn自带的Iris数据集。我们可以先将数据集导入:
from sklearn import datasets
import pandas as pd
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
然后,我们选择两个特征作为X,一个特征作为y。这里我们选择花萼长度和宽度作为X,花瓣长度作为y。
X = df[['sepal length (cm)', 'sepal width (cm)']]
y = df['target']
2. 确定模型
这里我们使用支持向量机(SVM)作为分类器。我们需要先对SVM进行拟合,然后预测一些值。
from sklearn import svm
clf = svm.SVC(kernel='linear', C=1)
clf.fit(X, y)
predicted = clf.predict(X)
3. 画出决策边界
我们需要画出决策边界。首先我们需要确定坐标轴的最小值和最大值。
x_min = X['sepal length (cm)'].min() - 0.5
x_max = X['sepal length (cm)'].max() + 0.5
y_min = X['sepal width (cm)'].min() - 0.5
y_max = X['sepal width (cm)'].max() + 0.5
然后我们可以生成一个网格来画出决策边界。
import numpy as np
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
np.arange(y_min, y_max, 0.02))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
最后,我们可以将决策边界画出来。
import matplotlib.pyplot as plt
plt.figure(1, figsize=(6, 5))
plt.clf()
plt.contour(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
# 将训练数据集画出来
plt.scatter(X['sepal length (cm)'], X['sepal width (cm)'],
c=y, cmap=plt.cm.Paired)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())
plt.show()
上述代码执行后,我们便可以画出使用SVM得到的决策边界图像。
除了Iris数据集之外,我们还可以使用其他人工或真实数据集进行实验。例如在进行分类器的比较时,可以选择sklearn自带的手写数字数据集,用SVM、逻辑回归等分类器进行拟合,然后画出决策边界,并比较准确率等指标。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 画出使用分类器得到的决策边界 - Python技术站