标签: classification

自然语言处理中的二值化

二值化是将实体的彩色特征转换为数字向量(通常是二进制向量)的行为,以便为分类器算法提供良好的示例.

如果我们将句子"猫吃狗"二进制化,我们可以先为每个单词分配一个ID(例如cat-1,ate-2,the-3,dog-4),然后简单地将单词替换为它的ID给出了矢量<3,1,2,3,4>.

给定这些ID,我们还可以通过给每个字四个可能的槽创建二进制向量,并将对应于特定单词的槽设置为1,给出向量<0,0,1,0,1,0,0,0 ,0,1,0,0,0,0,0,1>.据我所知,后一种方法通常被称为词袋方法.

现在,对于我的问题,一般来说,描述自然语言处理的特征,特别是基于转换的依赖解析(使用Nivres算法)时,最好的二值化方法是什么?

在这种情况下,我们不希望编码整个句子,而是编码解析的当前状态,例如堆栈中的顶部单词和输入队列中的第一个单词.由于订单具有高度相关性,因此排除了词袋方法.

有了最好的,我指的是,使数据的最可理解的分类方法,而无需使用了不必要的内存.例如,如果只有2%的双子星实际存在,我不想要一个单词bigram使用4亿个特征来获得20000个独特单词.

由于答案也取决于特定的分类器,我最感兴趣的是最大熵模型(liblinear),支持向量机(libsvm)和感知器,但是也欢迎适用于其他模型的答案.

nlp classification machine-learning libsvm

11
推荐指数
1
解决办法
2314
查看次数

哪些Python贝叶斯文本分类模块与dbacl类似?

快速谷歌搜索显示,有很多贝叶斯分类器被实现为Python模块.如果我想要包装,类似于dbacl的高级功能,哪些模块适合我?

训练

% dbacl -l one sample1.txt
% dbacl -l two sample2.txt
Run Code Online (Sandbox Code Playgroud)

分类

% dbacl -c one -c two sample3.txt -v
one
Run Code Online (Sandbox Code Playgroud)

python text classification bayesian

11
推荐指数
1
解决办法
5139
查看次数

文件图像处理

我正在处理一个处理文档图像(主要是发票)的应用程序,基本上,我想将某些感兴趣的区域转换为XML结构,然后根据该数据对文档进行分类.目前我使用ImageJ分析文档图像和Asprise/tesseract for OCR.

现在我正在寻找一些让开发变得更容易的东西.具体来说,我正在寻找能够自动校正文档图像并分析文档结构的东西(例如,将图像转换为四叉树结构以便于处理).虽然我更喜欢Java和ImageJ,但我对任何库/代码/论文感兴趣,无论它是用什么编程语言编写的.

虽然我正在研究的系统应尽可能自动处理数据,但用户应监督结果,并在必要时更正系统建议的分类.因此,我有兴趣使用机器学习技术来获得更可靠的结果.处理类似文件时,例如特定公司的发票,其结构通常是相同的.当用户先前已经校正了公司的文档数据时,将来应该考虑这些更正.我对机器学习技术知之甚少,想知道如何实现我的想法.

language-agnostic classification machine-learning image-processing

11
推荐指数
1
解决办法
2053
查看次数

面向Web /浏览器的开源机器学习项目?

在浏览器环境(主要是Javascript)或Web应用程序中应用机器学习技术,更具体地说是文本挖掘技术,并不是一个非常广泛讨论的主题.

我想构建自己的Web应用程序/浏览器扩展,可以完成某种级别的文本分类/可视化技术.我想知道,如果有任何开源项目在Web应用程序中应用文本挖掘技术,甚至更好的浏览器扩展?

到目前为止,这些是我随机搜索时收集的项目/讨论:

对于Web应用程序中的文本挖掘:

对于Javascript中的机器学习:

对于Web应用程序文本挖掘,我能想到的架构师:

  • Python库(例如NLTK或scikit-learn)+ Django
  • Java库(很多)+玩!骨架
  • 甚至基于R + rApache

nlp classification machine-learning nltk weka

11
推荐指数
1
解决办法
2255
查看次数

错误在java代码中使用WEKA API时:类属性未设置?

我正在尝试在我的java代码中使用weka API.我使用J48树分类来分类MySQL数据库中的数据集,但是我有这个错误:

Trying to add database driver (JDBC): RmiJdbc.RJDriver - Error, not in CLASSPATH?
Trying to add database driver (JDBC): jdbc.idbDriver - Error, not in CLASSPATH?
Trying to add database driver (JDBC): com.mckoi.JDBCDriver - Error, not in CLASSPATH?
Trying to add database driver (JDBC): org.hsqldb.jdbcDriver - Error, not in CLASSPATH?
weka.core.UnassignedClassException: weka.classifiers.trees.j48.C45PruneableClassifierTree: Class attribute not set!
        at weka.core.Capabilities.test(Capabilities.java:1086)
        at weka.core.Capabilities.test(Capabilities.java:1018)
        at weka.core.Capabilities.testWithFail(Capabilities.java:1297)
.....
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

try{
       DatabaseLoader loader = new DatabaseLoader();
      loader.setSource("jdbc:mysql://localhost:3306/cuaca","root","491754");
       loader.setQuery("select * from data_training");
      Instances data = loader.getDataSet();

        jTextArea1.append(data.toString()); …
Run Code Online (Sandbox Code Playgroud)

java api classification weka

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

选择功能以将Twitter问题标识为"有用"

我通过使用正则表达式从Twitter的流中收集了一堆问题来挑选任何包含以问题类型开头的文本的推文:谁,什么,何时,何地等,并以问号结束.

因此,我最终在我的数据库中得到了几个无用的问题:"谁在乎?","这是什么?" 等一些有用的东西,比如:'篮球比赛的频率是多少?','北极熊的重量是多少?' 等等

但是,我只对有用的问题感兴趣.

我有大约3000个问题,〜2000个问题没用,〜其中1000个是有用的,我手动标记它们.我试图使用一个朴素的贝叶斯分类器(随NLTK一起)尝试自动分类问题,这样我就不必手动挑选出有用的问题.

首先,我尝试选择问题的前三个单词作为功能,但这并没有多大帮助.在100个问题中,分类器仅预测大约10%-15%对于有用的问题是正确的.它也未能从它预测无用的问题中挑选出有用的问题.

我尝试了其他功能,例如:包括所有单词,包括问题的长度,但结果没有显着变化.

有关如何选择功能或继续进行的任何建议?

谢谢.

classification machine-learning nltk feature-selection

11
推荐指数
1
解决办法
2194
查看次数

将一组图像分类为类

我有一个问题,我得到一组图片,需要对这些图片进行分类.

问题是,我真的不知道这些图像.因此,我计划使用尽可能多的描述符,然后对其进行PCA以仅识别对我有用的描述符.

如果有帮助,我可以对很多数据点进行监督学习.但是,图片有可能相互连接.这意味着可能有从Image X到Image X + 1的开发,尽管我希望这可以通过每个Image中的信息进行整理.

我的问题是:

  1. 使用Python时如何做到最好?(我想首先在速度不成问题的情况下进行概念验证).我应该使用哪些库?
  2. 是否有图像分类这样的例子?使用一堆描述符并通过PCA将其烹饪下来的示例?说实话,这部分对我来说有点吓人.虽然我认为python应该已经为我做了类似的事情.

编辑:我找到了一个整洁的工具包,我目前正在尝试这个:http://scikit-image.org/那里似乎有一些描述符.有没有办法进行自动特征提取,并根据对目标分类的描述能力对特征进行排名?PCA应该能够自动排名.

编辑2:我的数据存储框架现在更加精细了.我将使用Fat系统作为数据库.我将为每个类组合的实例提供一个文件夹.因此,如果图像属于第1类和第2类,则会有一个包含这些图像的文件夹img12.这样我就可以更好地控制每个班级的数据量.

编辑3:我找到了一个python的libary(sklearn)的例子,它做了我想做的事情.它是关于识别手写数字.我正在尝试将我的数据集转换为我可以使用的数据集.

这是我发现使用sklearn的例子:

import pylab as pl

# Import datasets, classifiers and performance metrics
from sklearn import datasets, svm, metrics

# The digits dataset
digits = datasets.load_digits()

# The data that we are interested in is made of 8x8 images of digits,
# let's have a look at the first 3 images, stored in the `images`
# attribute of the dataset. If we were working …
Run Code Online (Sandbox Code Playgroud)

python image classification descriptor pca

11
推荐指数
1
解决办法
2292
查看次数

在R的插入符号包中使用adaboost

我一直在使用adaR包,最近,caret.根据该文件,carettrain()功能应该有一个使用ADA的选项.但是,当我使用与我的ada()通话相同的语法时,插入符号正在嘲笑我.

这是一个使用wine示例数据集的演示.

library(doSNOW)
registerDoSNOW(makeCluster(2, type = "SOCK"))
library(caret)
library(ada)

wine = read.csv("http://www.nd.edu/~mclark19/learn/data/goodwine.csv")


set.seed(1234) #so that the indices will be the same when re-run
trainIndices = createDataPartition(wine$good, p = 0.8, list = F)
wanted = !colnames(wine) %in% c("free.sulfur.dioxide", "density", "quality",
                            "color", "white")

wine_train = wine[trainIndices, wanted]
wine_test = wine[-trainIndices, wanted]
cv_opts = trainControl(method="cv", number=10)


 ###now, the example that works using ada() 

 results_ada <- ada(good ~ ., data=wine_train, control=rpart.control
 (maxdepth=30, …
Run Code Online (Sandbox Code Playgroud)

r classification machine-learning data-mining adaboost

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

Spark K-fold交叉验证

我在理解Spark的交叉验证方面遇到了一些麻烦.我见过的任何一个例子都用它来进行参数调整,但我认为它只会进行常规的K折交叉验证吗?

我想要做的是执行k折交叉验证,其中k = 5.我想获得每个结果的准确性,然后获得平均准确度.在scikit中学习这是怎么做的,分数会给你每个折叠的结果,然后你可以使用scores.mean()

scores = cross_val_score(classifier, y, x, cv=5, scoring='accuracy')
Run Code Online (Sandbox Code Playgroud)

这就是我在Spark中的做法,paramGridBuilder是空的,因为我不想输入任何参数.

val paramGrid = new ParamGridBuilder().build()
val evaluator = new MulticlassClassificationEvaluator()
  evaluator.setLabelCol("label")
  evaluator.setPredictionCol("prediction")
evaluator.setMetricName("precision")


val crossval = new CrossValidator()
crossval.setEstimator(classifier)
crossval.setEvaluator(evaluator) 
crossval.setEstimatorParamMaps(paramGrid)
crossval.setNumFolds(5)


val modelCV = crossval.fit(df4)
val chk = modelCV.avgMetrics
Run Code Online (Sandbox Code Playgroud)

这和scikit学习实现的做法是一样的吗?为什么这些示例在进行交叉验证时会使用培训/测试数据?

如何交叉验证RandomForest模型?

https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaCrossValidationExample.scala

classification machine-learning cross-validation apache-spark-mllib

11
推荐指数
1
解决办法
4988
查看次数

访问classification_report中的数字 - sklearn

这是一个简单的例子classification_reportsklearn

from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))
#             precision    recall  f1-score   support
#
#    class 0       0.50      1.00      0.67         1
#    class 1       0.00      0.00      0.00         1
#    class 2       1.00      0.67      0.80         3
#
#avg / total       0.70      0.60      0.61         5
Run Code Online (Sandbox Code Playgroud)

我希望能够访问平均/总行数.例如,我想从报告中提取f1-score,即0.61.

我怎样才能访问该号码classification_report

python classification scikit-learn

11
推荐指数
4
解决办法
3116
查看次数