2017-02-15 13 views
0

分類に関する機械学習プロジェクトがあります。最初は、最も簡単な分類器を試しました。分類器は常に+1を予測します。 ここに私のコードです。Pythonを使った機械学習でウォームアップ

from binary import * 
from numpy import * 
from pylab import * 

import util 
import datasets 
import binary 
import dumbClassifiers 

class AlwaysPredictOne(BinaryClassifier): 
    """ 
    This defines the classifier that always predicts +1. 
    """ 

    def __init__(self, opts): 
     """ 
     do nothing 
     """ 

    def online(self): 
     return False 

    def __repr__(self): 
     return "AlwaysPredictOne" 

    def predict(self, X): 
     return 1  # return our constant prediction 

    def train(self, X, Y): 
     """ 
     do nothing 
     """ 
h = dumbClassifiers.AlwaysPredictOne({}) 

print(h) 

h.train(datasets.TennisData.X, datasets.TennisData.Y) 

h_p = h.predictAll(datasets.TennisData.X) 

print(h_p) 

m = mean((datasets.TennisData.Y > 0) == (h.predictAll(datasets.TennisData.X) > 0)) 
print(m) 

t = mean((datasets.TennisData.Yte > 0) == (h.predictAll(datasets.TennisData.Xte) > 0)) 

print(t) 

が続い結果:

AlwaysPredictOne 
[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] 
0.642857142857 
0.5 

AlwaysPredictOne 

[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] 
0.642857142857 
0.5 

答えは右ですが、それが2回出現し、なぜ、私の質問は?私のコードに何か間違っていますか?

+1

コードを実行するには、ここに何かがありません。 –

+0

「何もしない」コメントを* pass *に置き換えることをお勧めします:構文が利用可能な場合はなぜコメントを使用するのですか? – guidot

答えて

0

あなたのコードがの場合、Ipsis Verbisとはっきりしませんが、これは実行している同じスクリプトをインポートしていた(コンテンツを2回実行している)場合に起こります。

小さな例です。内側の次私はexample.pyと呼ばれるファイルを作成し、書き込みを言うことができます:私は私の非常に最初の命令でファイル自体をインポートしていますか

import example 

class Example: 
    def __init__(self): 
     print("Running Example __init__") 

ex = Example() 

お知らせ?結果は次のようになります。

Running Example __init__ 
Running Example __init__ 

実行中のスクリプトをオブジェクトとは別に配置し、自己インポートを避けてください。

+0

ありがとう!私はそれらを分けて、すべてうまく行く! – JennyShen