从你的问题:
我在来自 PCA 的二维数据上训练逻辑回归模型。我使用截距和系数绘制决策边界,它确实线性分离了数据。
逻辑回归不是分类器。它的系数当然不代表“决策边界”。你有一个模型
其中是你的结果的概率,而 -s 是你的主要成分。在下面的代码中,从您的笔记本中,您使用和作为原始预测器空间中一条线的系数,它只是在您的数据点间隙附近的任何地方都非常幸运。
logp1−p=β0+β1x1+β2x2
pxβ0β1
new_model.fit(x_pca, target)
y_intercept = new_model.intercept_ # <- this is beta_0
slope = new_model.coef_[0][0] # <- this is beta_1
x_axis = np.linspace(-65, 113, 178)
决定将基于或类似的其他阈值。这对您的情节没有意义,PC 捕捉到的差异是次要问题。logp=log(1−p)
假设你希望你的决定是在,这转化为
logp=log(1−p)
β0+β1x1+β2x2=0.
假设是第一个主成分,是第二个。然后是原始图中的轴。改写上面,边界应该是x1x2x2y
x2=−β0β2−β1β2x1.
也就是说你想要的截距是,斜率是。−β0β2−β1β2
请注意,这样的决定是主观的,虽然使用可能符合您对风险的特定看法,但其他人可能喜欢原始概率估计来做出自己的决定。logp=log(1−p)