在Scikit学习逻辑推理中

时间:2019-04-05 11:54:44

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

在以下最小的可重现数据集中,我将一个数据集分为训练和测试数据集,并使用scikit基于x_test来学习和预测y,从而对训练数据集进行逻辑回归。

然而,y_pred或y预测仅在按如下方式计算(例如1 - y_pred)的倒数(例如0 = 1和1 = 0)时才是正确的。 为什么会这样呢?我不知道这是否与x的缩放有关(我尝试过使用StandardScaler和不使用standardScaler),与逻辑回归或准确性得分计算有关的东西。

在我更大的数据集中,即使使用不同的种子作为随机状态也是如此。我也尝试过this Logistic Regression,但结果相同。

@Nester指出的

编辑,对于这个最小的数据集,它不需要标准缩放器即可工作。可用的较大数据集here# imports from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.pipeline import make_pipeline from sklearn.metrics import accuracy_score from sklearn.preprocessing import StandardScaler # small dataset Y = [1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0] X =[[0.38373581],[0.56824121],[0.39078066],[0.41532221],[0.3996311 ] ,[0.3455455 ],[0.55867358],[0.51977073],[0.51937625],[0.48718916] ,[0.37019272],[0.49478954],[0.37277804],[0.6108499 ],[0.39718093] ,[0.33776591],[0.36384773],[0.50663667],[0.3247984 ]] x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.15, random_state=42, stratify=Y) clf = make_pipeline(StandardScaler(), LogisticRegression()) clf.fit(x_train, y_train) y_pred = clf.predict(x_test) y_pred = 1 - y_pred # <- why? accuracy_score(y_test,y_pred) 1.0 在此较大数据集上什么也不做,我将保留OP较小数据集,因为这可能有助于解释问题。

accuracy_score(y_test,y_pred)
0.7  # if inversed

更大的数据集准确性:

SetSplitCharacters(a,e,i,o,u) 

感谢阅读

2 个答案:

答案 0 :(得分:1)

您是否尝试在没有StandardScaler()的情况下运行模型?您的数据看起来不需要重新缩放。

答案 1 :(得分:1)

X和Y根本没有任何关系。因此,该模型的性能很差。有理由说1-pred性能更好。如果您有两个以上的班级,情况将更加糟糕。

%matplotlib inline 
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.15,  stratify=Y)
clf = make_pipeline(StandardScaler(), LogisticRegression())
clf.fit(x_train, y_train)
import matplotlib.pyplot as plt
plt.scatter(clf.named_steps['standardscaler'].transform(x_train),y_train)
plt.scatter(clf.named_steps['standardscaler'].transform(x_test),y_test)
print(clf.score(x_test,y_test))

enter image description here

对于较大的数据集,该关系也相同。

enter image description here

尝试识别其他功能,这些功能可以帮助您预测Y。