实时绘制sklearn训练过程

假设我有一个sklearn的训练数据:

features, labels = assign_dataSets() #分配操作

这里的feature是一个二维数组,而label是一个包含值[0,1]的一维数组

分类操作如下:

f1x = [features[i][0] for i in range(0, len(features)) if labels[i]==0]f2x = [features[i][0] for i in range(0, len(features)) if labels[i]==1]f1y = [features[i][1] for i in range(0, len(features)) if labels[i]==0]f2y = [features[i][1] for i in range(0, len(features)) if labels[i]==1]

现在我来绘制这些数据:

import matplotlib.pyplot as pltplt.scatter(f1x,f1y,color='b')plt.scatter(f2x,f2y,color='y')plt.show()

现在我想使用分类器(例如SVC)进行拟合操作。

from sklearn.svm import SVCclf = SVC()clf.fit(features, labels)

现在我的问题是,由于支持向量机的速度较慢,有没有办法在拟合操作进行时实时监控分类器的决策边界?我知道可以在拟合操作完成后绘制决策边界,但我希望在拟合过程中实时绘制分类器的决策边界。或许可以通过线程和对由等间距数组声明的点进行预测来实现。fit函数是否允许这样的操作,或者我需要使用其他库呢?

顺便说一句,我是机器学习的新手。


回答:

scikit-learn有这个功能,但据我所知,它仅限于少数几个分类器(例如GradientBoostingClassifierMPLClassifier)。要启用此功能,您需要设置verbose=True。例如:

clf = GradientBoostingClassifier(verbose=True)

我尝试用SVC进行测试,但没有按预期工作(可能是因为评论部分中@sascha提到的原因)。这里是StackOverflow上您问题的另一种变体。

关于您第二个问题,如果您转而使用Tensorflow(另一个机器学习库),您可以使用tensorboard功能实时监控一些指标(例如误差衰减)。

但是,据我所知,SVM的实现仍处于实验阶段(v1.5)。Tensorflow在处理基于神经网络的模型时非常出色。

如果您决定使用Tensorflow进行DNN分类,这里是StackOverflow上关于实现的讨论:No easy way to add Tensorboard output to pre-defined estimator functions DnnClassifier?

有用的参考资料:

Tensorflow SVM(目前仅支持线性 – v1.5):https://www.tensorflow.org/api_docs/python/tf/contrib/learn/SVM

Tensorflow核方法:https://www.tensorflow.org/versions/master/tutorials/kernel_methods

Tensorflow Tensorboard:https://www.tensorflow.org/programmers_guide/summaries_and_tensorboard

Tensorflow DNNClassifier估计器:https://www.tensorflow.org/api_docs/python/tf/estimator/DNNClassifier

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注