仅供自己复习回顾使用,若有侵权可删除
有监督分类方法
sigmiod函数
训练二元分类器
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
iris = datasets.load_iris()
features = iris.data[:100,:]
target = iris.target[:100]
# 标准化特征
scaler = StandardScaler()
features_standardized = scaler.fit_transform(features)
logistic_regression = LogisticRegression(random_state=0)
model = logistic_regression.fit(features_standardized, target)
# 创建一个新的观察值
new_observation = [[.5, .5, .5, .5]]
model.predict(new_observation)
训练多元分类器
第一种扩展是一对多(One-vs-Rest,OVR)的逻辑回归,在这种逻辑回归中,对于每一个分类我们都会训练一个单独的模型来判断观察值是不是属于这个分类(这样就又变成二元分类问题了)。它有一个假设,即每一个分类问题(比如,观察值是否为分类 0)是相互独立的。
第二种扩展是多元逻辑回归(Multinomial Logistic Regression,MLR)。在MLR中,逻辑函数被一个softmax函数替换
softmax函数
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
iris = datasets.load_iris()
features = iris.data
target = iris.target
scaler = StandardScaler()
features_standardized = scaler.fit_transform(features)
# 创建一对多的逻辑回归对象
logistic_regression = LogisticRegression(random_state=0, multi_class="ovr")
'''
默认的选择是 OVR(multi_class="ovr")
multi_class = “multinomial“,改为使用 MLR
'''
# 训练模型
model = logistic_regression.fit(features_standardized, target)
通过正则化来减小方差
调校正则化强度超参数 C ,C是α的倒数
# 创建一个决策树分类器的对象
from sklearn import linear_model import LogisticRegressionCV
logistic_regression = LogisticRegressionCV(penalty='l2', Cs=10, random_state=0, n_jobs=-1)
#Cs为浮点数,则为取值范围,为整数,则生成长度为该整数的列表
model = logistic_regression.fit(features_standardized, target)
在超大数据集上训练分类器
有一点需要注意,它对于特征的单位特别敏感,所以标准化特征这个步骤尤其重要。
在 scikit-learn 中通过 LogisticRegression 使用随机平均梯度(Stochastic Average Gradient, SAG)solver来训练一个逻辑回归模型。
logistic_regression = LogisticRegression(random_state=0, solver="sag")
处理不均衡的分类
logistic_regression = LogisticRegression(random_state=0,class_weight="balanced")
#“class_weight="balanced"