Logistic 知识点
库
linear_model.LogisticRegression
函数
Sigmoid函数
g(z) = 1/(1+e^-z)
z = θ^(T) x
g(z) 就是Logistic的一个标签值(概率)
几率概念(二分类模型)
p/(1-p)
在Logistic中 对数几率log(p/1-p) = θ^(T) x
优点
拟合效果好
逻辑回归计算快
损失函数
衡量θ优劣的评估指标(没有‘求解参数’就没有损失函数 如KNN、决策树无损失函数)
损失函数由极大似然估计求出(记得加负号)
正则化
L1:J(θ)+∑|θj|
L2:J(θ)+根号∑(θj)^2
参数
penalty : ‘l1’ ‘l2’
C(0,1) :控制正则化程度的超参数 C越小越稀疏 正则化程度越大
LR中的特征工程
不用PCA以及SVD 会抹除特种的可解释性
使用embedded(嵌入法)
利用模型训练结果对特征进行处理
库
sklearn.feature_selection.SelectFromModel
estimator:
object
用来构建变压器的基本估算器。
既可以是拟合的(如果prefit设置为True),也可以是不拟合的估计量。
拟合后,估算器必须具有 feature_importances_或coef_属性。
threshold: str, float, optional default None
用于特征选择的阈值。
保留重要性更高或相等的要素,而其他要素则被丢弃。
如果为“中位数”(分别为“平均值”),
则该threshold值为要素重要性的中位数(分别为平均值)。
也可以使用缩放因子(例如,“ 1.25 *平均值”)。
如果为None且估计器的参数惩罚显式或隐式设置为l1(例如Lasso),
则使用的阈值为1e-5。
否则,默认使用“均值”。
prefit: bool, default False
预设模型是否期望直接传递给构造函数。
如果为True,transform必须直接调用和
SelectFromModel不能使用cross_val_score, GridSearchCV而且克隆估计类似的实用程序。
否则,使用训练模型fit,然后transform进行特征选择。
norm_order: 非零 int, inf, -inf, default 1
在估算器threshold的coef_属性为维度2 的情况下,
用于过滤以下系数矢量的范数的顺序 。
max_features:int or None, optional
要选择的最大功能数。
若要仅基于选择max_features,请设置threshold=-np.inf。
Attributes
estimator_:一个估算器
用来建立变压器的基本估计器。
只有当一个不适合的估计器传递给SelectFromModel时,
才会存储这个值,即当prefit为False时。
threshold_:float
用于特征选择的阈值。
embedded简单代码
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier as RFC
RFC_ = RFC(n_estimators =10,random_state=0)#估计器
X_embedded = SelectFromModel(RFC_,threshold=0.005).fit_transform(X,y)
#在这里我只想取出来有限的特征。0.005这个阈值对于有780个特征的数据来说,是非常高的阈值,因为平均每个特征
只能够分到大约0.001的feature_importances_
X_embedded.shape
也可以用包装法、系数累加法等方法对特征进行筛选
Logistic的重要参数
penalty
C
max_iter
走多少步 类似于SGD中的step
LR.n_iter_ 显示走多少步达到拟合
多元 VS 二元回归
multi_class
‘ovr’ 二分类
‘multinomial’ 多分类
‘auto’ 自动判断
solver 求解器
‘liblinear’ 坐标下降法 L1 L2
‘lbfgs’拟牛顿法的一种 利用损失函数二阶来优化损失函数 L1 L2
‘newton-cg’ L2 正则
‘sag’ 需要对特征进行标准化 随机平均梯度下降 与普通梯度下降法的区别是每次迭代仅使用一部分样本来计算梯度
L2
‘saga’ L1 L2 需要标准化
解决数据问题
去重
data.drop_duplicates(inplace=True)
上采样
from imblearn.over_sampling import SMOTE
sm = SMOTE.fit_resample(X,Y)
将Y中不均衡的样本复制 直至均衡 举个栗子 原来20% 1 80% 0
现在50% 1 50% 0