2017-08-11 5 views
0

私はクラシファイアをランク付けするためにモード関数が必要です。以下のコードは、ランク付けのためにモード関数が必要な場所です。Pythonパッケージのモードを使用する

クラスVoteClassifier(ClassifierI): DEF のinit(自己、*分類): self._classifiersの=分類

def classify(self, features): 
    votes = [] 
    for c in self._classifiers: 
     v = c.classify(features) 
     votes.append(v) 
    return mode(votes) 

def confidence(self, features): 
    votes = [] 
    for c in self._classifiers: 
     v = c.classify(features) 
     votes.append(v) 

    choice_votes = votes.count(mode(votes)) 
    conf = choice_votes/len(votes) 
    return conf 

これは私がenter image description hereを使用していますインポートです。しかし、私はこのエラーを受け取りますenter image description hereここに掲示された質問の答えは助けていないようです(How to impute each categorical column in numpy array)。私はウェブ上で検索するとそこのpython 3については、この単純モードがあるが、このインポートが以下のようになり、

from statistics import mode 

は、この目的のためのモード機能を持っているか、他のパッケージがありますのpython 2.7上で動作していないようですこのエラーを修正する方法はありますか?

+0

(https://stackoverflow.com/help/mcve)問題を示している。ここでは一例ですか?また、* complete *エラーメッセージ(完全なトレースバック)を質問に追加してください。最後に、 'type(v)'が何であるかを見せてもらえますか? (おそらく 'print type(v)'はループの中にあります)。 –

+0

これは完全なエラーです。これは実行時エラーです。私はあなたが機能セットと組み合わされた分類機能を理解しているとは思わない。しかし、Vは "pos"、 "neg"のようなテキストの特徴です。 – rando

+0

あなたは正しいです - 私は、コメントを書いた後、トレースバックが関係していないことを示すことについての私のコメントが分かりました。 –

答えて

1

モードを計算するには、Collectionsパッケージにモード機能を持つCounterを使用できます。正確にはmost commonを使用してください。あなたは[、最小限の完全かつ検証可能な例]を作成でき

from collections import Counter 
data = Counter(your_list) 
data.most_common() # All unique items with their counts 
data.most_common(1) # The highest occurring item: the mode 
+0

返信いただきありがとうございます。私はあなたのソリューションを使用しようとしましたが、動作していないようです。しかし、これは私が試みたものです。デフ分類(自己、機能): 票= [] self._classifiersにおけるcに対する : V = c.classify(機能) votes.append(V) 数=カウンタ(票) V = count.most_common (1) リターンv – rando

関連する問題