小编D T*_*D T的帖子

scikits learn and nltk:Naive Bayes分类器性能差异很大

我正在比较两个Naive Bayes分类器:一个来自NLTK,另一个来自scikit-learn.我正在处理一个多类分类问题(3个类:正(1),负(-1)和中性(0)).

在不执行任何特征选择的情况下(即,使用所有可用功能),并使用70,000个实例的训练数据集(噪声标记,实例分布为17%为正,4%为负,78%为中性),我训练了两个分类器,第一个是nltk.NaiveBayesClassifier,第二个是sklearn.naive_bayes.MultinomialNB(带fit_prior=True).

训练结束后,我在30,000个实例的测试集上评估了分类器,得到了以下结果:

**NLTK's NaiveBayes**
accuracy: 0.568740
class: 1
     precision: 0.331229
     recall: 0.331565
     F-Measure: 0.331355
class: -1
     precision: 0.079253 
     recall: 0.446331 
     F-Measure: 0.134596 
class: 0
     precision: 0.849842 
     recall: 0.628126 
     F-Measure: 0.722347 


**Scikit's MultinomialNB (with fit_prior=True)**
accuracy: 0.834670
class: 1
     precision: 0.400247
     recall: 0.125359
     F-Measure: 0.190917
class: -1
     precision: 0.330836
     recall: 0.012441
     F-Measure: 0.023939
class: 0
     precision: 0.852997
     recall: 0.973406
     F-Measure: 0.909191

**Scikit's MultinomialNB (with fit_prior=False)**
accuracy: 0.834680
class: 1
     precision: 0.400380
     recall: 0.125361 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning nltk scikits scikit-learn

13
推荐指数
2
解决办法
4542
查看次数

scikit learn:未选择所需的最佳功能(k)

我试图使用卡方(scikit-learn 0.10)选择最佳功能.从总共80个培训文档中我首先提取了227个特征,并从这227个特征中我想选择前10个特征.

my_vectorizer = CountVectorizer(analyzer=MyAnalyzer())      
X_train = my_vectorizer.fit_transform(train_data)
X_test = my_vectorizer.transform(test_data)
Y_train = np.array(train_labels)
Y_test = np.array(test_labels)
X_train = np.clip(X_train.toarray(), 0, 1)
X_test = np.clip(X_test.toarray(), 0, 1)    
ch2 = SelectKBest(chi2, k=10)
print X_train.shape
X_train = ch2.fit_transform(X_train, Y_train)
print X_train.shape
Run Code Online (Sandbox Code Playgroud)

结果如下.

(80, 227)
(80, 14)
Run Code Online (Sandbox Code Playgroud)

如果我设置k相等,它们是相似的100.

(80, 227)
(80, 227)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

*编辑:一个完整​​的输出示例,现在没有剪切,我请求30并获得32:

Train instances: 9 Test instances: 1
Feature extraction...
X_train:
[[0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning chi-squared scikit-learn

8
推荐指数
1
解决办法
2533
查看次数

Python和tfidf算法,让它更快?

我正在使用Python在Web应用程序中实现tf-idf算法,但它运行速度非常慢.我基本上做的是:

1)创建2个词典:

  • 第一个字典:密钥(文档ID),值(doc中所有找到的单词列表(包括重复))
  • 第二本字典; key(文档ID),值(包含doc的唯一单词的集合)

现在,有一个用户请求获得文档d的tfidf结果.我所做的是:

2)循环文档d的第二个字典的唯一单词,并为每个唯一单词w得到:

2.1)tf得分(在d:循环显示文档第一个字典的单词列表中w出现的次数)

2.2)df得分(有多少文档包含w:循环遍历所有文档的单词集(第二个字典)并检查是否包含w).我正在使用一个集合,因为检查集合是否包含与列表相比的单词似乎更快.

步骤2.2非常慢.例如,拥有1000个文档,对于具有2313个唯一字的文档,输出结果大约需要5分钟.

还有其他方法可以让步骤2.2更快吗?词典迭代速度慢吗?

python dictionary tf-idf

5
推荐指数
1
解决办法
4006
查看次数

用Python实现主题模型(numpy)

最近,我使用numpy在Python上实现了针对LDA主题模型的Gibbs采样,并将来自站点的一些代码作为参考.在Gibbs采样的每次迭代中,我们删除一个(当前)单词,根据从LDA模型推断的后验条件概率分布对该单词的新主题进行采样,并更新单词 - 主题计数,如下所示:

for m, doc in enumerate(docs): #m: doc id
  for n, t in enumerate(doc): #n: id of word inside document, t: id of the word globally
    # discount counts for word t with associated topic z
    z = z_m_n[m][n]
    n_m_z[m][z] -= 1
    n_z_t[z, t] -= 1 
    n_z[z] -= 1
    n_m[m] -= 1

    # sample new topic for multinomial                
    p_z_left = (n_z_t[:, t] + beta) / (n_z + V * beta)
    p_z_right = (n_m_z[m] + alpha) / ( n_m[m] …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning lda topic-modeling

5
推荐指数
1
解决办法
2401
查看次数

Scikits Learn:线性内核SVM中的特征权重

我正在处理文本分类问题(情绪分析).我想知道scikit中是否有任何选项 - 学习为特征添加"权重"(作为重要性的度量).我检查了文档并找到了SVC的属性"coefs",定义如下:

    coef_   array, shape = [n_class-1, n_features]  
    Weights asigned to the features (coefficients in the primal problem). 
   This is only available in the case of linear kernel.coef_ is readonly property derived from dual_coef_ and support_vectors_ 
Run Code Online (Sandbox Code Playgroud)

但是,此属性似乎是只读的.

machine-learning svm feature-selection scikits scikit-learn

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

将机器中一个节点的elasticsearch索引移动到同一台机器的另一个驱动器

我在一台150gb ssd和3tb硬盘的机器上有一个弹性搜索节点.由于我在ssd中空间不足,我想将一个索引从ssd移动到hdd.这可能吗?如果是这样的话?

我可以在硬盘上创建另一个节点,但我宁愿在机器上有一个节点......

谢谢!

elasticsearch

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