什么是决策函数?
决策函数用于分类算法,尤其是在 SVC(支持向量分类器)中。决策函数告诉我们超平面中点的大小。设置此决策函数后,分类器将在此决策函数边界内对模型进行分类。
通常,当需要特定的结果时,我们会使用决策函数。此决策函数还用于标记超平面的大小(即平面中各点的距离)。
在 Python 中实现分类器决策函数
在Python中,我们可以使用内置的模块,如sklearn.tree
来创建决策树模型,该模型就是一种分类器。决策树是一种树结构,其中每个内部节点表示一个属性测试,每个分支代表测试的结果,每个叶节点代表一个简单的类别。
Sklearn 包提供了另一个名为 decision_function() 的函数,可帮助我们在 Python 中实现它。
下面是一个使用sklearn.tree
模块创建决策树模型并对数据进行分类的例子:
from sklearn.datasets import load_iris
from sklearn import tree
# 加载Iris数据集
iris = load_iris()
# 创建决策树模型
clf = tree.DecisionTreeClassifier()
# 训练模型
clf = clf.fit(iris.data, iris.target)
# 预测新数据
new_data = [[0.1, 0.2, 0.3, 0.4]]
prediction = clf.predict(new_data)
print(prediction)
在这个例子中,我们首先从sklearn.datasets
导入了Iris数据集,然后使用sklearn.tree
中的DecisionTreeClassifier
来创建决策树模型。我们用Iris数据集训练了这个模型,并对一个新的数据点进行了预测。
注意,决策树模型可能会过拟合,为了防止过拟合,可以通过设置参数对模型进行剪枝,例如设置max_depth
来限制决策树的最大深度。
# 创建决策树模型,并设置最大深度
clf = tree.DecisionTreeClassifier(max_depth=2)
# 训练模型
clf = clf.fit(iris.data, iris.target)
# 预测新数据
new_data = [[0.1, 0.2, 0.3, 0.4]]
prediction = clf.predict(new_data)
print(prediction)
在实际应用中,决策树模型通常会与其他分类算法一起使用,例如随机森林或支持向量机,以提高模型的泛化能力和鲁棒性。
现在让我们在 SVC 中实现这个 decision_function()
1、要导入必要的包并创建 X,y 数据并创建 svc 模型,请使用以下代码段。
import numpy as np
X = np.array([[12,11],[1,1],[2,2],[2,12]])
y = np.array([1,2,2,2])
from sklearn.svm import SVC
mod = SVC(kernel='linear', C = 1.0)
mod.fit(X, y)
2、要可视化数据和除法线
weight = mod.coef_[0]
data = -w[0] / w[1]
xax=np.linspace(0,12)
yax=a*xax-mod.intercept_[0] / w[1]
h0 = plt.plot(xax, yax, 'k-', label="non weighted div")
plt.scatter(X[:, 0], X[:, 1], c = y)
plt.legend()
plt.show()
3、为了设置决策函数并预测数据,我们使用以下代码段。
print(mod.decision_function(X))
mod.predict(X)
输出:
[-0.99986929 1.19991504 0.99993465 0.99993465]
array([1, 2, 2, 2])