2017-02-15 3 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 

Хотя ответ правильный, на мой вопрос, почему он появляется дважды ?? Что-то не так в моем коде?

+1

Как вы запускаете код, здесь что-то отсутствует. –

+0

Я рекомендую заменить комментарии «ничего не делать» * pass *: зачем использовать комментарий, когда имеется синтаксис? – guidot

ответ

0

Я не уверен, что ваш код Ipsis Verbis, но это произойдет, если вы импортируете один и тот же скрипт, который вы будете запускать (дважды исполняя его содержимое).

Один маленький пример. Допустим, я делаю файл с именем example.py и записать следующее внутри:

import example 

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

ex = Example() 

Обратите внимание, как я импортировать сам файл в моей самой первой инструкции? Ну результат состоит в следующем:

Running Example __init__ 
Running Example __init__ 

Поместите беговой скрипт отдельно от объектов, избежать самостоятельного импортирование, и вы должны делать хорошо.

+0

Спасибо! Я их отделяю, потом все идет хорошо! – JennyShen