我们知道机器学习领域的一些最重要的分类算法,包括以下算法:
- 逻辑回归
- 神经网络
- 决策树
- 支持向量机
现在我们将有机会在实际数据中运用它们!在 sklearn 中非常简单,只需定义分类器,然后使用下面这行代码使分类器与数据拟合(称为 X, y):
classifier.fit(X,y)
以下是我们定义的主分类器,以及必须导入的文件包:
逻辑回归
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
神经网络
from sklearn.neural_network import MLPClassifier
classifier = MLPClassifier()
决策树
from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
支持向量机
from sklearn.svm import SVC
classifier = SVC()
示例:逻辑回归
比如,有下图数据集:
逻辑回归
我们可以使用下面代码进行训练
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X,y)
可以得出下图的界线:
image.png
示例:多个模型训练
比如有下图数据集:
我们可以使用上面介绍的几个模型进行训练(逻辑回归、决策树或支持向量机),来看看哪个模型能够更好地拟合数据。关键代码如下:
# 引用算法程序包
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
# Logistic Regression Classifier
classifier = LogisticRegression()
classifier.fit(X,y)
# Decision Tree Classifier
classifier = DecisionTreeClassifier()
classifier.fit(X,y)
# Support Vector Machine Classifier
classifier = SVC()
classifier.fit(X,y)
通过三个模型训练后,我们可以得到以下结果图形:
似乎逻辑回归的效果不太理想,因为它是线性算法。决策树能够很好地划分数据,SVM 的效果也非常好。
调整参数
从上面我们看出SVM的效果非常好,下面我们用SVM拟合复杂的数据:
我们先简单用SVM进行拟合数据,代码如下:
classifier = SVC()
classifier.fit(X,y)
如果输入上述内容,训练不出结果。这里,我们没有充分利用 SVM 分类器。首先,我们使用了正确的内核吗?例如,我们可以使用 2 次多项式内容,如下所示:
classifier = SVC(kernel = 'poly', degree = 2)
你可以自己根据以下这些值进行自由设定参数,试着调整这些参数并使它们能够画出期望的界限区域;
- kernel:linear (线性), poly(多项式), rbf(高斯核)
- degree:多项式内核的次数(如果选择了多项式内核)
- gamma :γ 参数
- C:C参数
比如,可以这样设置:
classifier = SVC(kernel = 'rbf', gamma = 200)