我有针对特定类别(比如癌症)的训练数据集(文本).我想在weka中为这个类训练一个SVM分类器.但是,当我尝试通过创建一个文件夹'癌症'并将所有这些培训文件放到该文件夹时,当我运行代码时,我得到以下错误:weka.classifiers.functions.SMO:无法处理一元类!
我想要做的是,如果分类器找到与"癌症"相关的文档,它会正确地说出类名,一旦我输入了非癌症文档,就应该说"未知".
我该怎么做才能得到这种行为?
我准备了来自两个不同数据集的两个不同的.arff文件,一个用于测试,另一个用于培训.它们中的每一个都具有相同的实例,但是不同的特征改变了每个文件的特征向量的维度.当我对每个文件进行交叉验证时,它们运行得很好.这表明.arff文件已正确准备且没有任何错误.
现在,如果我使用比测试文件具有更少维度的训练文件进行评估.我收到以下错误.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5986
at weka.classifiers.bayes.NaiveBayesMultinomial.probOfDocGivenClass(NaiveBayesMultinomial.java:295)
at weka.classifiers.bayes.NaiveBayesMultinomial.distributionForInstance(NaiveBayesMultinomial.java:254)
at weka.classifiers.Evaluation.evaluationForSingleInstance(Evaluation.java:1657)
at weka.classifiers.Evaluation.evaluateModelOnceAndRecordPrediction(Evaluation.java:1694)
at weka.classifiers.Evaluation.evaluateModel(Evaluation.java:1574)
at TrainCrossValidateARFF.main(TrainCrossValidateARFF.java:44)
Run Code Online (Sandbox Code Playgroud)
weka中的测试文件是否需要与火车相同或更少的功能?评估准则
public class TrainCrossValidateARFF{
private static DecimalFormat df = new DecimalFormat("#.##");
public static void main(String args[]) throws Exception
{
if (args.length != 1 && args.length != 2) {
System.out.println("USAGE: CrossValidateARFF <arff_file> [<stop_words_file>]");
System.exit(-1);
}
String TrainarffFilePath = args[0];
DataSource ds = new DataSource(TrainarffFilePath);
Instances Train = ds.getDataSet();
Train.setClassIndex(Train.numAttributes() - 1);
String TestarffFilePath = args[1];
DataSource ds1 = new DataSource(TestarffFilePath);
Instances …Run Code Online (Sandbox Code Playgroud) 我目前正在处理MMST包中的葡萄酒数据.我已将整个数据集拆分为训练和测试,并构建如下代码的树:
library("rpart")
library("gbm")
library("randomForest")
library("MMST")
data(wine)
aux <- c(1:178)
train_indis <- sample(aux, 142, replace = FALSE)
test_indis <- setdiff(aux, train_indis)
train <- wine[train_indis,]
test <- wine[test_indis,] #### divide the dataset into trainning and testing
model.control <- rpart.control(minsplit = 5, xval = 10, cp = 0)
fit_wine <- rpart(class ~ MalicAcid + Ash + AlcAsh + Mg + Phenols + Proa + Color + Hue + OD + Proline, data = train, method = "class", control = model.control)
windows()
plot(fit_wine,branch = …Run Code Online (Sandbox Code Playgroud) 我正在使用Apache Mahout处理二进制分类问题.我使用的算法是OnlineLogisticRegression,我目前所拥有的模型强烈倾向于产生1或0而没有任何中间值的预测.
请建议一种方法来调整或调整算法,使其在预测中产生更多的中间值.
提前致谢!
我正在使用支持向量机进行文本分类,但基本上我对测试集的特征向量计算感到困惑.
对于训练特征向量,我为每个训练数据采用TF-IDF向量,并使用TF-IDF值构建特征矩阵[docs x terms].
但是如何计算测试集的特征向量呢?我应该只使用训练集中的TF-IDF值来计算它吗?
例如:在特定单词"apple"的训练集中,doc频率为5.对于测试集,我应该使用值5作为"apple"吗?或者根据测试集重新计算TF-IDF?或者说,我在计算特征向量时走错路吗?
提前致谢!
是否存在支持或反对使用单个多输出NN进行多类分类而不是使用多个一对多NN的理论论据?
在两种情况下,一旦获得所有输出值,就使用相同的决策规则:具有最高激活的输出"获胜"并决定预测返回哪个类.
但我想知道是否 - 以及为什么 - 所有输出都是在同一个NN而不是单独计算上更好或更差.
我的任务是为我的公司执行现有分类器的基准测试.目前最大的问题是区分不同类型的交通工具,比如识别我目前是否在火车上,驾驶汽车或骑自行车,这是主要关注点.
我一直在阅读很多关于LSTM,http://en.wikipedia.org/wiki/Long_short_term_memory及其最近在手写和语音识别方面的成功,其中重大事件之间的时间可能相当长.
所以,我第一次想到火车/公共汽车的问题是,可能没有像走路/跑步那样明显和短暂的周期,因此长期记忆可能是至关重要的.
有没有人尝试过类似的结果?或者是否有其他技术可以更好地解决这个问题?
pattern-recognition artificial-intelligence classification machine-learning neural-network
我想查看RandomForestClassifier预测的前N个结果,并按降序排列。
答案可能是predict_proba,但我不知道如何解释结果。
帮助赞赏!
classification machine-learning prediction random-forest scikit-learn
如果不最小化代码,这很容易。但是很难区分最小化和模糊化。我发现了这一点:http : //research.microsoft.com/pubs/148514/tr.pdf
如何检测缩小代码和混淆代码之间的区别?
javascript obfuscation classification abstract-syntax-tree deobfuscation
我有一个包含4个班级的庞大训练数据集.这些类是非连续标记的.为了能够应用顺序神经网络,必须重新标记类,以便类中的唯一值是连续的.此外,在脚本结束时,我必须将它们重新标记回旧值.
我知道如何用循环重新标记它们:
def relabel(old_classes, new_classes):
indexes=[np.where(old_classes ==np.unique(old_classes)[i]) for i in range(len(new_classes))]
for i in range(len(new_classes )):
old_classes [indexes[i]]=new_classes[i]
return old_classes
>>> old_classes = np.array([0,1,2,6,6,2,6,1,1,0])
>>> new_classes = np.arange(len(np.unique(old_classes)))
>>> relabel(old_classes,new_classes)
array([0, 1, 2, 3, 3, 2, 3, 1, 1, 0])
Run Code Online (Sandbox Code Playgroud)
但这不是很好的编码,需要花费很多时间.
知道如何对这种重新贴图进行矢量化吗?
为了清楚起见,我还希望能够将它们重新标记为旧值:
>>> relabeled_classes=np.array([0, 1, 2, 3, 3, 2, 3, 1, 1, 0])
>>> old_classes = np.array([0,1,2,6])
>>> relabel(relabeled_classes,old_classes )
array([0,1,2,6,6,2,6,1,1,0])
Run Code Online (Sandbox Code Playgroud) classification ×10
weka ×2
javascript ×1
mahout ×1
numpy ×1
obfuscation ×1
performance ×1
prediction ×1
python ×1
r ×1
scikit-learn ×1
svm ×1
text ×1
tree ×1