sklearn 训练模型

我们知道机器学习领域的一些最重要的分类算法,包括以下算法:

  • 逻辑回归
  • 神经网络
  • 决策树
  • 支持向量机

现在我们将有机会在实际数据中运用它们!在 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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。