在Stackoverflow的其他答案中,有人建议Weka很好,但还有其他人(Classifier4j,jBNC,Naiban).
有没有人有这些实际经验?
java classification machine-learning spam-prevention bayesian
当我尝试在一些高维输入上应用一些ML算法(分类,更具体地说,特别是SVM)时,我应该如何处理,我得到的结果不太令人满意?
可以显示1,2或3维数据以及算法的结果,这样您就可以了解正在发生的事情,并了解如何解决问题.一旦数据超过3个维度,除了直观地使用参数,我不确定如何攻击它?
每一个人.我对分类算法的主题完全陌生,需要一些关于从哪里开始"严肃阅读"的好指示.我现在正在发现,机器学习和自动分类算法是否值得添加到我的某些应用程序中.
我已经通过Z. Michalewicz和D. Fogel(特别是关于使用神经元网络的线性分类器的章节)扫描了"如何解决它:现代启发式",并且在实践方面,我目前正在查看WEKA工具包源代码码.我的下一个(计划好的)步骤是深入了解贝叶斯分类算法的领域.
不幸的是,我在这个领域缺乏一个认真的理论基础(更不用说,到目前为止已经以任何方式使用过它),所以任何关于下一步看的提示都会受到赞赏; 特别是,对可用的分类算法的良好介绍将是有帮助的.作为一名工匠而不是理论家,越实用,越好......
提示,有人吗?
pattern-recognition artificial-intelligence classification machine-learning weka
在神经网络中直接使用sigmoid或tanh输出层来估计概率是一种好习惯吗?
即给定输入发生的概率是NN中sigmoid函数的输出
编辑
我想使用神经网络来学习和预测给定输入发生的概率.您可以将输入视为State1-Action-State2元组.因此,NN的输出是State2在State1上应用Action时发生的概率.
我希望确实清楚......
编辑
当训练NN时,我对State1做随机动作并观察结果State2; 然后教NN输入State1-Action-State2应该导致输出1.0
我使用lucene索引了一组文档.我还为每个文档内容存储了DocumentTermVector.我写了一个程序并为每个文档得到了术语频率向量,但是如何获得每个文档的tf-idf向量?
这是我的代码,在每个文档中输出术语频率:
Directory dir = FSDirectory.open(new File(indexDir));
IndexReader ir = IndexReader.open(dir);
for (int docNum=0; docNum<ir.numDocs(); docNum++) {
System.out.println(ir.document(docNum).getField("filename").stringValue());
TermFreqVector tfv = ir.getTermFreqVector(docNum, "contents");
if (tfv == null) {
// ignore empty fields
continue;
}
String terms[] = tfv.getTerms();
int termCount = terms.length;
int freqs[] = tfv.getTermFrequencies();
for (int t=0; t < termCount; t++) {
System.out.println(terms[t] + " " + freqs[t]);
}
}
Run Code Online (Sandbox Code Playgroud)
在lucene中有没有任何buit-in功能让我这样做?
没有人帮忙,我自己做了:
Directory dir = FSDirectory.open(new File(indexDir));
IndexReader ir = IndexReader.open(dir);
int docNum;
for (docNum = 0; docNum<ir.numDocs(); …Run Code Online (Sandbox Code Playgroud) 有两个类,我们称之为X和O.属于这些类的许多元素在xy平面中展开.下面是两个类不可线性分离的示例.无法绘制直线,在线的每一侧完美地划分X和Os.

一般来说,如何确定两个类是否可线性分离?.我对一种算法感兴趣,该算法不对元素的数量或它们的分布做出假设.当然优选最低计算复杂度的算法.
我正在训练Caffe参考模型来分类图像.我的工作要求我通过在整个训练集和分别具有100K和50K图像的验证集的每1000次迭代之后绘制模型的准确性图来监视训练过程.现在,我采取天真的方法,在每1000次迭代后制作快照,运行C++分类代码,该代码读取原始JPEG图像并转发到网络并输出预测标签.但是,这在我的机器上花费了太多时间(使用Geforce GTX 560 Ti)
有没有更快的方法可以在训练集和验证集上获得快照模型的准确性图表?
我在考虑使用LMDB格式而不是原始图像.但是,我找不到有关使用LMDB格式在C++中进行分类的文档/代码.
我无法弄清楚我是否正确设置了二进制分类问题.我标记了正类1和负0.但是我的理解是默认情况下scikit-learn在其混淆矩阵中使用0类作为正类(因此我将其设置为反向).这对我来说很困惑.在scikit-learn的默认设置中,排名是正面还是负面?让我们假设混淆矩阵输出:
confusion_matrix(y_test, preds)
[ [30 5]
[2 42] ]
Run Code Online (Sandbox Code Playgroud)
它在混淆矩阵中会是什么样子?实际实例是scikit-learn中的行还是列?
prediction prediction
0 1 1 0
----- ----- ----- -----
0 | TN | FP (OR) 1 | TP | FP
actual ----- ----- actual ----- -----
1 | FN | TP 0 | FN | TN
Run Code Online (Sandbox Code Playgroud) 我正在用文字袋来分类文字.它运作良好,但我想知道如何添加一个不是一个单词的功能.
这是我的示例代码.
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.svm import LinearSVC
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.multiclass import OneVsRestClassifier
X_train = np.array(["new york is a hell of a town",
"new york was originally dutch",
"new york is also called the big apple",
"nyc is nice",
"the capital of great britain is london. london is a huge metropolis which has a great many number of people living in it. london is also a very …Run Code Online (Sandbox Code Playgroud) python classification machine-learning scikit-learn text-classification
我从一些消息来源获悉,Generative对抗性网络是无人监督的ML,但我没有得到它.生成对抗网络实际上并未受到监督吗?
1)2级案例真实反对假
实际上,必须向鉴别器提供训练数据,这必须是"真实的"数据,这意味着我将用fe 1标记的数据.即使一个人没有明确地标记数据,也可以通过在第一个中提供鉴别器来隐含地这样做.训练数据的步骤,您告诉鉴别器是真实的.通过这种方式,您可以以某种方式告诉鉴别器标记训练数据.相反,在发电机的第一级产生的噪声数据的标记,发电机知道该信号是不真实的.
2)多级案例
但在多类案件中它真的很奇怪.必须提供训练数据中的描述.显而易见的矛盾是,人们对无监督的ML算法提供了响应.
classification ×10
java ×2
python ×2
scikit-learn ×2
algorithm ×1
bayesian ×1
c++ ×1
caffe ×1
lucene ×1
math ×1
probability ×1
svm ×1
weka ×1