使用python在机器学习中热身

时间:2017-02-15 07:46:16

标签: python

我们有一个关于分类的机器学习项目。起初,我尝试过最简单的分类器:分类器总是预测+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

虽然答案是对的,但我的问题是它出现两次的原因?我的代码中有什么问题吗?

1 个答案:

答案 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__

将运行脚本与对象分开,避免自我导入,你应该没问题。