我们有一个关于分类的机器学习项目。起初,我尝试过最简单的分类器:分类器总是预测+1。 这是我的代码。
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
虽然答案是对的,但我的问题是它出现两次的原因?我的代码中有什么问题吗?
答案 0 :(得分:0)
我不确定您的代码是否是 Ipsis Verbis ,但是如果您导入的是运行相同的脚本(运行其内容两次),就会发生这种情况。
一个小例子。假设我创建了一个名为example.py
的文件,并在里面写下以下内容:
import example
class Example:
def __init__(self):
print("Running Example __init__")
ex = Example()
请注意我在第一条指令中如何导入文件本身?结果如下:
Running Example __init__
Running Example __init__
将运行脚本与对象分开,避免自我导入,你应该没问题。