实时绘制 sklearn 训练操作



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

features, labels = assign_dataSets() #assignment operation

这里的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 plt
plt.scatter(f1x,f1y,color='b')
plt.scatter(f2x,f2y,color='y')
plt.show()

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

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

现在我的问题是,由于支持向量真的很慢,有没有办法实时监控分类器的决策边界(我的意思是当拟合操作发生时)?我知道我可以在拟合操作发生后绘制决策边界,但我希望实时绘制分类器。也许对线空间声明的点数组进行线程化和运行预测。fit 函数是否允许此类操作,或者我需要去其他库?

你知道,我是机器学习的新手。

scikit-learn具有此功能,但根据我的理解,它仅限于几个分类器(例如GradientBoostingClassifierMPLClassifier)。要打开此功能,您需要设置verbose=True。例如:

clf = GradientBoostingClassifier(verbose=True)

我用SVC尝试了它,但没有按预期工作(可能是由于评论部分中提到的sascha的原因)。这是您在StackOverflow上的问题的不同变体。

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

但是,据我所知,SVM 实现在v1.5中仍处于实验阶段。 在使用基于神经网络的模型时,Tensorflow非常好。

如果您决定使用 DNN 进行Tensorflow分类,那么以下是关于 StackOverflow 实现的讨论: 没有简单的方法将张量板输出添加到预定义的估计器函数 DnnClassifier?

有用的参考资料:

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

张量流核方法:https://www.tensorflow.org/versions/master/tutorials/kernel_methods

张量流张量板:https://www.tensorflow.org/programmers_guide/summaries_and_tensorboard

Tensorflow DNNClassifier Estimator: https://www.tensorflow.org/api_docs/python/tf/estimator/DNNClassifier