标签: classification

选择正确的分类算法.线性还是非线性?

我发现这个问题有点棘手.也许有人知道回答这个问题的方法.想象一下,你有一个你不知道它是什么的数据集(训练数据).为了推断分类算法对这些数据进行分类,您会看到哪些训练数据的特征?我们可以说是否应该使用非线性或线性分类算法吗?

顺便说一句,我正在使用WEKA来分析数据.

有什么建议?谢谢.

classification weka

12
推荐指数
2
解决办法
6553
查看次数

如何用对角线以下的点修复ROC曲线?

我正在构建接收器操作特性(ROC)曲线,以使用曲线下面积(AUC)评估分类器(更多详细信息,在帖子末尾).不幸的是,曲线上的点通常低于对角线.例如,我最终得到的图形看起来像这里的图形(蓝色的ROC曲线,灰色的标识线):

修复ROC

第三点(0.3,0.2)低于对角线.要计算AUC,我想修复这些顽抗点.

对于曲线上的点(fp,tp),执行此操作的标准方法是将其替换为点(1-fp,1-tp),这相当于交换分类器的预测.例如,在我们的例子中,我们麻烦的点A(0.3,0.2)变为B点(0.7,0.8),我在上面链接的图像中用红色表示.

我的参考资料来说,这与处理这个问题有关.问题是,如果将新点添加到新的ROC中(并删除坏点),最终会得到如图所示的非单调ROC曲线(红色是新的ROC曲线,蓝色虚线是旧的):

新中华民国

在这里,我被卡住了.如何修复此ROC曲线?

我是否需要重新运行我的分类器与数据或类以某种方式转换为考虑到这种奇怪的行为?我查看了一篇相关的论文,但如果我没有弄错的话,它似乎正在解决一个与此不同的问题.

根据一些细节:我仍然拥有所有原始阈值,fp值和tp值(以及每个数据点的原始分类器的输出,输出只是从0到1的标量,这是一个概率估计班级成员).我在matlab中以perfcurve函数开始这样做.


statistics matlab classification machine-learning roc

12
推荐指数
1
解决办法
5307
查看次数

为什么scala maven工件为每个scala版本而不是每个scala版本的分类器都有一个工件?

由于Scala -versions 之间只有源兼容性,因此您不得不为它们支持的每个scala版本编译scalatestscalamock等库.让我感到困惑的是,这些库提供了大量的工件(scalatest_2.9.0,scalatest_2.9.1,scalatest_2.10等等) - 每个scala版本都有一个,这样maven存储库中就堆满了许多由人工制作的文物.相同的来源.我的直觉告诉我宁愿为每个scala版本使用一个带有分类器的工件.(事实上​​,maven pom参考提到有时用jdk14和jdk15分类器来完成这些工件,这看起来和我类似.)那么,为什么Scala人会去寻找许多神器矫枉过正:-)而不是?

scala classification maven

12
推荐指数
1
解决办法
481
查看次数

如何从scikit-learn DecisionTreeClassifier获取信息?

我看到DecisionTreeClassifier接受criterion ='entropy',这意味着它必须使用信息增益作为分割决策树的标准.我需要的是在根级别的每个功能即将拆分根节点时的信息增益.

python classification machine-learning scikit-learn

12
推荐指数
1
解决办法
1万
查看次数

由于尺寸不同,无法在scikit-learn中使用FeatureUnion

我正在尝试FeatureUnion从数据结构中提取不同的功能,但由于尺寸不同而失败:ValueError: blocks[0,:] has incompatible row dimensions


Implementaion

FeatureUnion的建立方式如下:

    features = FeatureUnion([
        ('f1', Pipeline([
            ('get', GetItemTransformer('f1')),
            ('transform', vectorizer_f1)
        ])),
        ('f2', Pipeline([
            ('get', GetItemTransformer('f2')),
            ('transform', vectorizer_f1)
        ]))
    ])
Run Code Online (Sandbox Code Playgroud)

GetItemTransformer用于从同一结构中获取不同的数据部分.我们的想法是说明这里在scikit学习问题跟踪器.

结构本身存储{'f1': data_f1, 'f2': data_f2}data_f1具有不同长度的不同列表的位置.


由于Y-Vector与数据字段不同,我假设发生了错误,但是如何缩放矢量以适应两种情况?

python classification scikit-learn text-classification

12
推荐指数
2
解决办法
4320
查看次数

为什么使用受限制的Boltzmann机器而不是多层感知器?

我试图理解受限制的Boltzmann机器(RBM)和前馈神经网络(NN)之间的区别.我知道RBM是一种生成模型,其中的想法是重建输入,而NN是一种判别模型,其中的想法是预测标签.但是我不清楚的是,为什么你不能只使用NN作为生成模型?特别是,我正在考虑深层次的信念网络和多层感知器.

假设我对NN的输入是一组称为x的音符,而我的NN输出是一组节点y.在判别模型中,我在训练期间的损失将是y与我想要x产生的y的值之间的差异(例如,类标签的地面真实概率).但是,如果我只是使输出具有与输入相同的节点数,然后将损失设置为x和y之间的差异呢?通过这种方式,网络将学习重建输入,就像在RBM中一样.

因此,考虑到NN(或多层感知器)可用于以这种方式训练生成模型,为什么要使用RBM(或深层置信网络)呢?或者在这种情况下,它们会完全相同吗?

classification machine-learning neural-network

12
推荐指数
1
解决办法
5216
查看次数

Miminum对Google tensorflow图像分类器的要求

我们计划使用Google Tensorflow构建图像分类器.

我想知道使用卷积深度神经网络训练自定义图像分类器的最小值和最佳要求是什么?

问题具体是:

  • 每个班级应该至少提供多少张图片?
  • 我们需要appx吗?每班提供相同数量的训练图像,或者每班的数量是不同的?
  • 错误图像数据对训练数据的影响是什么?例如,500个网球鞋和50个其他鞋的图像.
  • 是否有可能训练一个比最近发布的初始-v3模型更多类的分类器?让我们说:30.000.

classification machine-learning computer-vision neural-network tensorflow

12
推荐指数
1
解决办法
1576
查看次数

如何提高相对简单的Java计数方法的效率和/或性能?

我正在构建一个必须阅读大量文本文档的分类器,但我发现我的countWordFrequenties方法越慢,它处理的文档就越多.下面的这个方法花了60ms(在我的电脑上),而阅读,规范化,标记化,更新我的词汇和均衡不同的整数列表只需要3-5ms(在我的电脑上).我的countWordFrequencies方法如下:

public List<Integer> countWordFrequencies(String[] tokens) 
{
    List<Integer> wordFreqs = new ArrayList<>(vocabulary.size());
    int counter = 0;

    for (int i = 0; i < vocabulary.size(); i++) 
    {
        for (int j = 0; j < tokens.length; j++)
            if (tokens[j].equals(vocabulary.get(i)))
                counter++;

        wordFreqs.add(i, counter);
        counter = 0;
    }

    return wordFreqs;
}
Run Code Online (Sandbox Code Playgroud)

加快这个过程的最佳方法是什么?这个方法有什么问题?

这是我的整个班级,还有另一个班级类别,在这里发布这个也不错,或者你们不需要吗?

public class BayesianClassifier 
{
    private Map<String,Integer>  vocabularyWordFrequencies;
    private List<String> vocabulary;
    private List<Category> categories;
    private List<Integer> wordFrequencies;
    private int trainTextAmount;
    private int testTextAmount;
    private GUI gui;

    public BayesianClassifier() 
    { …
Run Code Online (Sandbox Code Playgroud)

java methods performance classification word-count

12
推荐指数
1
解决办法
441
查看次数

如何解释几乎完美的准确性和AUC-ROC但零f1分数,精确度和召回率

我正在训练ML逻辑分类器使用python scikit-learn对两个类进行分类.他们的数据非常不平衡(约14300:1).我的准确度和ROC-AUC几乎达到100%,但精度,召回率和f1得分均为0%.我知道准确性通常对非常不平衡的数据没有用,但为什么ROC-AUC测量结果也接近完美?

from sklearn.metrics import roc_curve, auc

# Get ROC 
y_score = classifierUsed2.decision_function(X_test)
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_score)
roc_auc = auc(false_positive_rate, true_positive_rate)
print 'AUC-'+'=',roc_auc

1= class1
0= class2
Class count:
0    199979
1        21

Accuracy: 0.99992
Classification report:
             precision    recall  f1-score   support

          0       1.00      1.00      1.00     99993
          1       0.00      0.00      0.00         7

avg / total       1.00      1.00      1.00    100000

Confusion matrix:
[[99992     1]
 [    7     0]]
AUC= 0.977116255281
Run Code Online (Sandbox Code Playgroud)

以上是使用逻辑回归,下面是使用决策树,决策矩阵看起来几乎相同,但AUC有很大不同.

1= class1
0= class2
Class count:
0    199979
1        21 …
Run Code Online (Sandbox Code Playgroud)

classification machine-learning roc precision-recall

12
推荐指数
1
解决办法
9634
查看次数

结合回归和分类的多输出神经网络

如果您同时存在相关且依赖于相同输入数据的分类和回归问题,是否有可能成功构建一个既提供分类输出又提供回归输出的神经网络?

如果是这样,损失函数如何构建?

regression classification machine-learning neural-network

12
推荐指数
1
解决办法
1732
查看次数