【问题标题】:Pipeline giving different answer in sklearn python管道在 sklearn python 中给出不同的答案
【发布时间】:2017-05-03 18:21:23
【问题描述】:

我编写了两个应该遵循相同逻辑的程序。但他们都给出了不同的答案。

首先-

train_data = train_features[:1710][:]
train_label = label_features[:1710][:].ravel()
test_data = train_features[1710:][:]
test_label = label_features[1710:][:].ravel()

def getAccuracy(ans):
    d = 0
    for i in range(np.size(ans,0)):
        if(ans[i] == test_label[i]):
            d+=1
    return (d*100)/float(np.size(ans,0))

estimators = [('pps', pps.RobustScaler()), ('clf', LogisticRegression())]
pipe = Pipeline(estimators)
pipe = pipe.fit(train_data,train_label)

ans = pipe.predict(test_data)
getAccuracy(ans)

第二-

train_data = train_features[:1710][:]
train_label = label_features[:1710][:].ravel()
test_data = train_features[1710:][:]
test_label = label_features[1710:][:].ravel()

def getAccuracy(ans):
    d = 0
    for i in range(np.size(ans,0)):
        if(ans[i] == test_label[i]):
            d+=1
    return (d*100)/float(np.size(ans,0))

def preprocess(features):
    return pps.RobustScaler().fit_transform(features)

train_data = preprocess(train_data)
clf = LogisticRegression().fit(train_data,train_label)

test_data = preprocess(test_data)
ans = clf.predict(test_data)
getAccuracy(ans)

第一个给出 80.81,第二个给出 84.92。为什么两者不一样?

【问题讨论】:

    标签: python machine-learning scikit-learn artificial-intelligence logistic-regression


    【解决方案1】:

    您的第二个代码无效,因为您的“预处理”使缩放器适合测试集,这不应该发生。另一方面,管道仅适用于您的训练数据的 RobustScaler,然后在测试数据上调用“转换”。

    【讨论】:

    • 感谢您的帮助
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 2021-06-24
    • 2016-03-02
    • 2016-03-15
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多