直接从 mySQL 数据库训练分类器

Posted

技术标签:

【中文标题】直接从 mySQL 数据库训练分类器【英文标题】:train a classifier directly from mySQL database 【发布时间】:2018-09-13 00:30:09 【问题描述】:

目前,我得到了一个职位,担任 ML 的数据科学家。我的问题如下,是否可以直接从 mysql 数据库训练算法,并且与从 csv 文件训练算法的方式有相似之处。此外,我想知道您是否正在处理非常不平衡的数据集。例如,当您使用 0.2% 的数据进行测试时,它是否将训练中的负例和正例的比例与测试中的比例相等。谁能给我推荐一个好的教程或文档?

【问题讨论】:

投反对票,因为这个问题有多个不相关的部分,最后一个(请求教程或文档)既基于意见又不清楚;甚至不清楚您要的教程是什么。 【参考方案1】:

当然,您可以直接从数据库中训练您的模型。这就是在生产系统中发生的一切。应该设计您的软件,这与您的数据源是 SQL、csv 还是其他什么无关。由于您没有提到编程语言,所以很难说,如何做到这一点,但在 python 中您可以看这里:How do I connect to a MySQL Database in Python?

如果您的数据集不平衡,就像现实中经常发生的那样,您可以使用类权重让您的分类器意识到这一点。例如。在 keras/sci-kit 学习中,您可以只传递 class_weights 参数。请注意,如果您的数据集太小,您可能会在使用默认度量(如准确性)时遇到问题。最好看看混淆矩阵或其他指标,如Matthews correlation coefficient

另一个很好的参考: How does the class_weight parameter in scikit-learn work?

【讨论】:

Tnx,你的问题是正确的,你是对的,你的回答很有帮助,我正在使用 python。数据集太大,无法使用 csv 文件 (2 - 5 GB) 处理。数据转换怎么样,我有一个包含 31 列的数据集,其中 25 列是字符串或对象类型。我想用 sklearn 对它们进行编码。 labelEncoder 然后使用 OneHotEncoder,但它抱怨输入形状(921178,25)。我觉得太大了。是否有不同的方式来转换属性或任何建议? tnx 提前! Label 和 OneHot 编码器的作用是给数据中遇到的每个字符串一个唯一的 id。如果您要处理数据中的多个单词,则基本上最终会得到一个巨大的维度,这在分类方面也无济于事。因此,如果您正在处理文本,则需要使用 nlp 技术来转换您的文本数据。先看看BagOfWords。

以上是关于直接从 mySQL 数据库训练分类器的主要内容,如果未能解决你的问题,请参考以下文章

我如何从两个已经训练好的分类器中构建一个分类器?

在 SQL 数据库上训练决策树分类器

从训练有素的分类器 python #Scikitlearn #SVM 进行预测

如何用OpenCV训练自己的分类器

如何用OpenCV训练自己的分类器

如何利用OpenCV自带的级联分类器训练程序训练分类器