我正在编译带有分类器的逻辑回归框架。有人可以帮助我验证它,并建议主要的库(sklearn,例如)功能?下面是我想到的:
-
从sklearn运行N个观测值和M个变量的逻辑回归(M <N)>
训练集-约占总数据集的80%测试集-剩余20%
Q:是否存在一个函数,允许选择测试集作为训练集的外推,而不是使用随机选择?(train_testrongplit不做这个)
Q:是否有一个函数可以让逻辑回归与正则化运行?StandardScaler也许吗?
-
当逻辑回归完成后,我们如何使用结果:
我们是否只使用决策边界图,并根据新数据点是在图内还是在图外做出决定?
我可以得到系数,但是计算目标的公式是什么?它是在s形伞下的线性分数线吗?这是一条路吗?
是否有一个函数来计算我们的决策是正确的(是或否)的概率?我可以得到使用分数属性(KNeighborsClassifier)的错误。也有预测。proba属性,但我不确定如何解释它。还有一个混淆矩阵,可以用它的数字来计算概率。什么是正确的方式?
-
除了逻辑回归之外,还使用了其他函数,例如:
KNeighborsClassifierLDA等
它们与逻辑回归相比起什么作用?它们必须如何使用?
谢谢
你的大多数问题都可以通过阅读sklearn线性模型的逻辑回归页面来解决。你没有提到任何数量的类,所以我将假设两个类(二进制)来回答你的问题。
以下是我的建议:
有人可以帮助我验证它,并建议主要的库(sklearn,例如)功能?
sklearn
在逻辑回归方面有几个选择。既然你提到你正在使用逻辑回归进行分类,我将把我的建议限制在以下:
- sklearn.linear_model.LogisticRegression
- sklearn.linear_model。SGDClassifier
我假设你知道逻辑回归的基础知识。LogisticRegression
和SGDClasisfier
的差值是用来估计回归量系数的解算器。LogisticRegression
使用‘newton-cg’
、'lbfgs’
、‘liblinear’
或‘sag’
估计回归量。默认设置为'liblinear'
,但您可以通过更改solver
参数来更改此设置。SGDClassifier
使用随机梯度下降求解器。有关差异的更详细解释,请参阅所提供的链接。
是否有一个函数可以运行逻辑回归正则化?
以上三个建议都使用参数penalty
来设置正则化类型。
当逻辑回归完成时,我们如何使用结果?
一旦逻辑回归完成,predict_proba(X)
可用于确定X的每个观测值(其中样本按行存储)的"属于一类的概率"。predict_proba(X)
将返回一个Nx2数组,其中第一列被解释为"属于负类的概率",第二列被解释为"属于正类的概率"。例如,如果您只对属于正类的概率感兴趣,则只需查看第二列。
predict_proba(X)
的第二列等价于sigmoid(coef_*X+intercept_)
,其中sigmoid
为sigmoid函数
也有一个混淆矩阵,概率可以用它的数字来计算。什么是正确的方式?
混淆矩阵是一个误差度量,可用于确定有多少观察值被正确和不正确地分类(以及它们以何种方式不正确或正确;真阳性/真阴性/假阳性/假阴性)。由于逻辑回归的结果是一个概率,你需要设定阈值(即0.5)来"分配"每个观察值属于哪个类别。一旦你这样做了,你就可以使用混淆矩阵了。没有"正确"的方法来计算误差。有许多可以使用的误差度量。Damien franios的错误备忘单的第一页为您提供了用于二进制分类的错误度量的各种选项。你最终选择哪一个取决于几个因素,比如每个错误的代价,每个类中是否有相同数量的训练观察值,等等。