标签: classification

在NLTK中选择哪种分类器

我想将短信分为几类,如"建立关系","协调","信息共享","知识共享"和"冲突解决".我正在使用NLTK库来处理这些数据.我想知道在nltk中哪个分类器对于这个特定的多类分类问题更好.

我打算使用朴素贝叶斯分类,是否可取?

nlp classification nltk

7
推荐指数
1
解决办法
4481
查看次数

哪种分类算法可用于文档分类?

嘿,这是我的问题,

给定一组文档,我需要将每个文档分配给预定义的类别.

我将使用n-gram方法来表示每个文档的文本内容,然后在我拥有的训练数据上训练SVM分类器.
如果我想念一些东西,请纠正我.

现在的问题是类别应该是动态的.意思是,我的分类器应该处理新类别的新训练数据.

因此,例如,如果我训练分类器将给定文档分类为类别A,类别B或类别C,然后我获得了类别D的新训练数据.我应该能够通过提供它来增量训练我的分类器. "D类"的新培训数据.

总而言之,我不想将旧的训练数据(包括3个类别)和新的训练数据(使用新的/看不见的类别)组合在一起并再次训练我的分类器.我想在飞行中训练我的分类器

这可以用SVM实现吗?如果没有,你能推荐我几种分类算法吗?或任何可以帮助我的书/纸.

提前致谢.

algorithm classification machine-learning document-classification

7
推荐指数
1
解决办法
4716
查看次数

R randomForest用于分类

我正在尝试使用randomForest进行分类,但我反复收到一条错误消息,似乎没有明显的解决方案(randomForest对我来说在过去做回归效果很好).我在下面粘贴了我的代码."成功"是一个因素,所有因变量都是数字.有关如何正确运行此分类的任何建议?

> rf_model<-randomForest(success~.,data=data.train,xtest=data.test[,2:9],ytest=data.test[,1],importance=TRUE,proximity=TRUE)

Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)
Run Code Online (Sandbox Code Playgroud)

另外,这是一个数据集的示例:

头(数据)

success duration  goal reward_count updates_count comments_count backers_count     min_reward_level max_reward_level
True 20.00000  1500           10            14              2            68                1             1000
True 30.00000  3000           10             4              3            48                5             1000
True 24.40323 14000           23             6             10           540                5             1250
True 31.95833 30000            9            17              7           173                1            10000
True 28.13211  4000           10            23             97          2936               10              550
True 30.00000  6000           16            16            130          2043               25 …
Run Code Online (Sandbox Code Playgroud)

r classification data-analysis random-forest

7
推荐指数
3
解决办法
2万
查看次数

使用Sci-Kit学习使用大型语料库对文本进行分类

我的数据库中有大约1600篇文章,每篇文章都已经预先标记了以下类别之一:

Technology
Science
Business
World
Health
Entertainment
Sports
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用sci-kit学习构建一个分类新文章的分类器.(我想我会将训练数据分成两半,用于训练和测试?)

我希望使用tf-idf,因为我没有停止词的列表(我可以使用NLTK仅提取形容词和名词,但我宁愿给scikit - 学习完整的文章).

我已经阅读了关于scikit-learn的所有文档,但是他们的例子涉及单词出现和N-gram(很好),但他们从未指定如何将一段数据绑定到标签.

我已经尝试过查看他们的示例代码了,但是它太难以理解了.

有人可以帮我解决这个问题,还是指出我正确的方向?

谢谢.

python classification scikit-learn

7
推荐指数
2
解决办法
5927
查看次数

处理多标签分类中的类不平衡

我在多类设置中看到了关于类不平衡的几个问题.但是,我有一个多标签问题,所以在这种情况下你会怎么处理?

我有一组约300k文本示例.如标题中所述,每个示例至少有一个标签,并且只有100个可能的唯一标签.我已经通过利用命名空间将这个问题简化为Vowpal Wabbit的二进制分类,例如

从:

healthy fruit | bananas oranges jack fruit
evil monkey | bipedal organism family guy
...  
Run Code Online (Sandbox Code Playgroud)

至:

1 |healthy bananas oranges jack fruit
1 |fruit bananas oranges jack fruit
0 |evil bananas oranges jack fruit
0 |monkey bananas oranges jack fruit
0 |healthy bipedal organism family guy
0 |fruit bipedal organism family guy
1 |evil bipedal organism family guy
1 |monkey bipedal organism family guy
...  
Run Code Online (Sandbox Code Playgroud)

我正在使用大众提供的默认选项(我认为是在线SGD,具有平方损失功能).我正在使用平方损失,因为它非常类似汉明损失.

在训练之后,当在相同的训练集上进行测试时,我注意到所有的例子都是用'0'标签预测的 ......这是一种最小化损失的方法,我想.在这一点上,我不知道该怎么做.我正在考虑使用成本敏感的一对一分类来尝试平衡类,但是由于存在2 ^ 100个标签组合,因此将多标签减少到多类是不可行的.我想知道是否有其他人有任何建议.

编辑:我终于有机会测试类失衡,特别是vw …

classification machine-learning vowpalwabbit text-classification

7
推荐指数
2
解决办法
5386
查看次数

如何将距离转换为概率?

有人为我的matlab程序发光吗?我有来自两个传感器的数据,我正在kNN分别对它们进行分类.在这两种情况下,训练集看起来像一组总共42行的向量,如下所示:

[44 12 53 29 35 30 49;

 54 36 58 30 38 24 37;..]
Run Code Online (Sandbox Code Playgroud)

然后我得到一个样本,例如[40 30 50 25 40 25 30],我想将样本分类到最近的邻居.作为接近度的标准,我使用欧几里德度量,sqrt(sum(Y 2)),其中Y是每个元素之间的差异,它给出了Sample和每个训练集类别之间的距离数组.

那么,有两个问题:

  • 是否可以将距离转换为概率分布,如:Class1:60%,Class 2:30%,Class 3:5%,Class 5:1%等.

补充:到目前为止我正在使用公式:probability = distance/sum of distances但我无法绘制正确的cdf或直方图.这给了我一些分布,但我看到了一个问题,因为如果距离很大,例如700,那么最接近的类将获得最大的概率,但它是错的,因为距离太大而不能与任何课程相比.

  • 如果我能够获得两个概率密度函数,我想我会做一些它们的产品.可能吗?

任何帮助或评论都非常感谢.

matlab classification knn euclidean-distance probability-density

7
推荐指数
2
解决办法
5832
查看次数

如何计算两个重叠线性数据集之间的点?

我有两组重叠的数据(见下图).我需要找到这些集合之间的点,人们会猜测未知数据点属于特定类别.

如果我有一个新的数据点(让我们说5000),并且不得不打赌$$$是否属于A组或B组,我怎样才能计算出让我最有把握的点?

参见下面的样本数据集和附图,其中这些组之间的近似点(通过眼睛计算).

GROUP A
[385,515,975,1136,2394,2436,4051,4399,4484,4768,4768,4849,4856,4954,5020,5020,5020,5020,5020,5020,5020,5020,5020,5052,5163,5200,5271,5421,5421,5442,5746,5765,5903,5992,5992,6046,6122,6205,6208,6239,6310,6360,6416,6512,6536,6543,6581,6609,6696,6699,6752,6796,6806,6855,6859,6886,6906,6911,6923,6953,7016,7072,7086,7089,7110,7232,7278,7293,7304,7309,7348,7367,7378,7380,7419,7453,7454,7492,7506,7549,7563,7721,7723,7731,7745,7750,7751,7783,7791,7813,7813,7814,7818,7833,7863,7875,7886,7887,7902,7907,7935,7942,7942,7948,7973,7995,8002,8013,8013,8015,8024,8025,8030,8038,8041,8050,8056,8060,8064,8071,8081,8082,8085,8093,8124,8139,8142,8167,8179,8204,8214,8223,8225,8247,8248,8253,8258,8264,8265,8265,8269,8277,8278,8289,8300,8312,8314,8323,8328,8334,8363,8369,8390,8397,8399,8399,8401,8436,8442,8456,8457,8471,8474,8483,8503,8511,8516,8533,8560,8571,8575,8583,8592,8593,8626,8635,8635,8644,8659,8685,8695,8695,8702,8714,8715,8717,8729,8732,8740,8743,8750,8756,8772,8772,8778,8797,8828,8840,8840,8843,8856,8865,8874,8876,8878,8885,8887,8893,8896,8905,8910,8955,8970,8971,8991,8995,9014,9016,9042,9043,9063,9069,9104,9106,9107,9116,9131,9157,9227,9359,9471]

GROUP B
[12,16,29,32,33,35,39,42,44,44,44,45,45,45,45,45,45,45,45,45,47,51,51,51,57,57,60,61,61,62,71,75,75,75,75,75,75,76,76,76,76,76,76,79,84,84,85,89,93,93,95,96,97,98,100,100,100,100,100,102,102,103,105,108,109,109,109,109,109,109,109,109,109,109,109,109,110,110,112,113,114,114,116,116,118,119,120,121,122,124,125,128,129,130,131,132,133,133,137,138,144,144,146,146,146,148,149,149,150,150,150,151,153,155,157,159,164,164,164,167,169,170,171,171,171,171,173,174,175,176,176,177,178,179,180,181,181,183,184,185,187,191,193,199,203,203,205,205,206,212,213,214,214,219,224,224,224,225,225,226,227,227,228,231,234,234,235,237,240,244,245,245,246,246,246,248,249,250,250,251,255,255,257,264,264,267,270,271,271,281,282,286,286,291,291,292,292,294,295,299,301,302,304,304,304,304,304,306,308,314,318,329,340,344,345,356,359,363,368,368,371,375,379,386,389,390,392,394,408,418,438,440,456,456,458,460,461,467,491,503,505,508,524,557,558,568,591,609,622,656,665,668,687,705,728,817,839,965,1013,1093,1126,1512,1935,2159,2384,2424,2426,2484,2738,2746,2751,3006,3184,3184,3184,3184,3184,4023,5842,5842,6502,7443,7781,8132,8237,8501]
Run Code Online (Sandbox Code Playgroud)

数据图

数据统计:

                      Group A    Group B
Total Numbers             231        286
Mean                  7534.71     575.56
Standard Deviation    1595.04    1316.03
Run Code Online (Sandbox Code Playgroud)

arrays sorting algorithm classification machine-learning

7
推荐指数
1
解决办法
387
查看次数

如何将不同的输入装入sklearn管道?

我正在使用sklearn中的Pipeline对文本进行分类.

在这个例子中,Pipeline我有一个TfIDF矢量化器和一些用FeatureUnion包装的自定义特征和一个分类器作为Pipeline步骤,然后我拟合训练数据并进行预测:

from sklearn.pipeline import FeatureUnion, Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import LinearSVC

X = ['I am a sentence', 'an example']
Y = [1, 2]
X_dev = ['another sentence']

# load custom features and FeatureUnion with Vectorizer
features = []
measure_features = MeasureFeatures() # this class includes my custom features
features.append(('measure_features', measure_features))

countVecWord = TfidfVectorizer(ngram_range=(1, 3), max_features= 4000)
features.append(('ngram', countVecWord))

all_features = FeatureUnion(features)

# classifier
LinearSVC1 = LinearSVC(tol=1e-4,  C = 0.10000000000000001)

pipeline = Pipeline(
    [('all', all_features ),
    ('clf', …
Run Code Online (Sandbox Code Playgroud)

python pipeline classification machine-learning scikit-learn

7
推荐指数
1
解决办法
3413
查看次数

了解Spark RandomForest featureImportances结果

我正在使用RandomForest.featureImportances但我不理解输出结果.

我有12个功能,这是我得到的输出.

我知道这可能不是一个特定于apache-spark的问题,但我无法找到解释输出的任何地方.

// org.apache.spark.mllib.linalg.Vector = (12,[0,1,2,3,4,5,6,7,8,9,10,11],
 [0.1956128039688559,0.06863606797951556,0.11302128590305296,0.091986700351889,0.03430651625283274,0.05975817050022879,0.06929766152519388,0.052654922125615934,0.06437052114945474,0.1601713590349946,0.0324327322375338,0.057751258970832206])
Run Code Online (Sandbox Code Playgroud)

classification random-forest apache-spark apache-spark-mllib

7
推荐指数
1
解决办法
5673
查看次数

命名实体识别(NER)功能

我是命名实体识别的新手,我在理解用于此任务的功能/功能方面遇到了一些麻烦.

到目前为止我读过的一些论文提到了使用的功能,但没有真正解释它们,例如在 CoNLL-2003共享任务简介:与语言无关的命名实体识别中,提到了以下功能:

参与CoNLL-2003共享任务的16个系统使用的主要功能按英语测试数据的性能排序.Aff:附加信息(n-gram); 包:一袋字; cas:全球案例信息; chu:chunk标签; doc:全球文件信息; gaz:地名录; lex:词汇特征; ort:正交信息; pat:正交模式(如Aa0); pos:词性标签; pre:先前预测的NE标签; quo:标记该单词在引号之间; 三:触发词.

不过,我对其中一些人感到有些困惑.例如:

  • 是不是应该是一种生成功能的方法(每个单词一个)?BOW本身如何成为一种功能?或者这仅仅意味着除了提到的所有其他功能外,我们还有BOW中的每个单词的功能?
  • 地名录如何成为一个特征?
  • 如何将POS标签完全用作功能?我们不是每个单词都有一个POS标签吗?是不是每个对象/实例都是"文本"?
  • 什么是全球文件信息?
  • 什么是功能触发词?

我认为我在这里需要的只是查看一个示例表,其中每个功能都作为列,并查看它们的值以了解它们是如何工作的,但到目前为止,我找不到易于阅读的数据集.

有人可以澄清或指出我使用这些功能的一些解释或示例吗?

nlp classification machine-learning named-entity-recognition feature-selection

7
推荐指数
1
解决办法
3377
查看次数