我在一个.TSV文件中有一组数据。我写了几个分类器来决定给定的网站是短暂的还是常绿的。
我最初的实践是快速原型,进行了一个随机分类器,1R分类器,尝试了一些功能工程,线性回归,逻辑回归,天真的贝叶斯...等等。
我以混乱的,不连贯的方式完成了所有这些工作。我想知道的是,如果您获得了一组数据(为了论证,上面发布的数据),您将如何分析它以找到合适的分类器?您最初会看到什么来从数据集中提取含义?
我在这个高级编程时代正确地做到了,我可以在一个晚上在数据上运行5/6算法吗?快速的原型方法是这里的最佳想法吗?还是可以采取更多理性的逻辑方法?
目前,我已经清理了数据,删除了所有毫无意义的行(其中少量可以丢弃它们)。我编写了一个脚本来跨越分类器的脚本,因此我有一个指标来测试偏差/差异以及检查整体算法性能。
我要去哪里?我需要考虑哪些方面?我在这里想什么?
您可以列入理论的某些要素。例如:
- 天真的贝叶斯分类器假设所有变量都是独立的。也许不是这样?但是,该分类器快速且容易,因此对于许多问题来说,它仍然是一个不错的选择,即使变量并非真正独立。
- 线性回归对远离分类边界的样品的重量过多。这通常是一个坏主意。
- 逻辑回归是试图解决此问题的尝试,但仍然假定输入变量之间存在线性相关性。换句话说,类之间的边界是输入变量空间中的平面。
当我研究数据集时,我通常是从绘制每个变量的分布开始,以使每个样本找到最有区别的变量。
那么,对于每个样本,我通常绘制一个给定的输入变量而不是另一个样本,以研究变量之间的相关性:是否存在非线性相关性?如果是,我可能会选择可以处理此类相关性的分类器。两个输入变量之间是否存在很强的相关性?如果是,可以删除其中一个变量以降低问题的维度。
这些图还将允许您在数据集中发现问题。
毕竟,尝试许多分类器并优化其参数以在交叉验证中像您完成的交叉验证中是一种务实且有效的方法,无论如何,这必须在某个时候完成。
我从这篇文章中的标签中理解,您已经使用了Scikit-Learn的分类器。如果您尚未注意到,此软件包提供了交叉验证的强大工具,以及http://scikit-learn.org/stable/modules/cross_validation.html