machine-learning - 分类监督训练困惑

标签 machine-learning classification naivebayes apache-spark-ml

所以我是监督机器学习的新手,但我一直在阅读有关它的书籍和文章,但我遇到了一个问题。 (没有卡住,但我不明白分类算法背后的逻辑)。我试图根据历史数据将记录分类为错误或不正确。 这是原始数据(训练数据):

Name Office Age  isWrong
F1     1    32      0
F2     2    61      1
F3     1    35      0
F4     0    25      0
F5     1    36      0
F6     2    52      0
F7     2    48      0
F8     1    17      1
F9     2    51      0
F10    0    24      0
F11    4    34      1
F12    0    21      0
F13    2    51      0
F14    0    27      0
F15    3    37      1

(only showing top 15 results of 200 results)

错误记录是指报告年龄低于 18 岁或高于 60 岁或办公地点不是 {0, 1, 2} 的任何记录。当满足任何上述条件时,我有更多记录显示 1。我用这个数据集训练了我的模型,并创建了一个测试数据集来测试结果。然而,我最终在每条记录的 prediction 列上得到 0。我使用朴素贝叶斯方法,因为这种方法假设特征变量之间是独立的,这就是我的情况(办公室号码和年龄之间没有关系)。我知道还有其他方法,例如 Logistic 回归和 SVC(SVM),但我认为它们需要特征变量之间存在一定程度的关系。尽管如此,我仍然尝试了这两种方法并得到了相同的结果。难道我做错了什么?在训练模型之前我需要指定一些内容吗?

这是我所做的(非常简单):

NaiveBayes nb = new NaiveBayes().setLabelCol("isWrong");
NaiveBayesModel nbm = nb.fit(dataset);
nbm.transform(dataset2).show();

这是数据集 2(前 15 名):

Name   Office Age
F1       9    36  //wrong, office is 9
F2       2    20
F3       1    17
F4       2    43
F5       2    90  // wrong, age is >60
F6       1    36
F7       1    40
F8       2    52
F9       2    49
F10      1    38
F11      0    28
F12      0    18
F13      1    40
F14      1    31
F15      2    45

但是就像我说的,预测列每次都显示 0。知道为什么吗?

最佳答案

我不知道您为什么选择transform()。它只是尝试将结果数据类型转换为与原始列相同的数据类型

要获得您应该使用该函数的概率:

predict_proba(X): Return probability estimates for the test vector X.

以下代码应该在您的场景中完美运行

NaiveBayes nb = new NaiveBayes().setLabelCol("isWrong");
nb.fit(dataset)
nb.predict_proba(dataset2)

关于machine-learning - 分类监督训练困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45194229/

相关文章:

machine-learning - 将文本文件转换为 ARFF 格式

r - klaRA 和插入符号中的朴素贝叶斯

apache-spark - 朴素贝叶斯 pyspark 1.3 无响应

python - Keras:将所有图像保存在一个目录中

python - Tensorflow 中的数据增强是如何实现的?

python - 如何获取 scikit-learn SVM 分类器的所有 alpha 值?

r - 从随机森林模型中提取树的子集进行预测

python - KernelPCA 产生 NaN

machine-learning - 不同的机器学习分类器有不同的性能,我可以推断出什么?

machine-learning - 机器学习模型如何处理看不见的数据和看不见的标签?