二值化是将实体的彩色特征转换为数字向量(通常是二进制向量)的行为,以便为分类器算法提供良好的示例.
如果我们将句子"猫吃狗"二进制化,我们可以先为每个单词分配一个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)和感知器,但是也欢迎适用于其他模型的答案.
快速谷歌搜索显示,有很多贝叶斯分类器被实现为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进行Twitter的情感分析.但是,我正在研究C#,需要使用一个开源的朴素贝叶斯分类器.除非有人能够阐明我如何利用python贝叶斯分类器来实现相同的目标.有任何想法吗?
我正在尝试在我的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) 我是weka的新手,我对这个工具感到困惑.我需要做的是我有一个关于水果价格和相关属性的数据集,我试图使用数据集预测特定的水果价格.由于我是weka的新手,我无法弄清楚如何完成这项任务.请帮助我或指导我一个关于如何进行预测的教程,以及执行此任务的最佳方法或算法.
谢谢.
我想使用package 的svm功能执行多类分类e1071.但是从我从文档中了解到的svm,它只能执行二进制分类.vignettes文档告诉它多类分类:" 为了允许多类分类,libsvm通过拟合所有二元子分类器并通过投票机制找到正确的类来使用一对一技术 ".
我仍然不明白的是,如果我们可以进行多级分类svm的e1071R中?如果是,请解释我们如何在iris数据集上完成.
是否有可能使用成本矩阵训练sklearn中的分类器,并为不同的错误提供不同的成本?例如,在2类问题中,成本矩阵将是2乘2平方矩阵.例如,A_ij =将i分类为j的成本.
我使用的主要分类器是随机森林.
谢谢.
问题陈述:
将文本文档分类到它所属的类别,并最多分类该类别的两个级别.
示例训练集:
Description Category Level1 Level2
The gun shooting that happened in Vegas killed two Crime | High Crime High
Donald Trump elected as President of America Politics | High Politics High
Rian won in football qualifier Sports | Low Sports Low
Brazil won in football final Sports | High Sports High
Run Code Online (Sandbox Code Playgroud)
初步尝试:
我试图创建一个分类器模型,尝试使用随机森林方法对类别进行分类,它总体上给了我90%.
代码1:
import pandas as pd
#import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import BernoulliNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split …Run Code Online (Sandbox Code Playgroud) steps_per_epoch在理想情况下调用函数fit_generator()时需要设置值是number of total samples/ batch size什么?
这是一个简单的例子classification_report中sklearn
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?
classification ×10
python ×3
scikit-learn ×3
bayesian ×2
libsvm ×2
weka ×2
api ×1
c# ×1
data-mining ×1
dataset ×1
generator ×1
java ×1
keras ×1
nlp ×1
prediction ×1
python-2.7 ×1
r ×1
svm ×1
text ×1
twitter ×1