Logist Regression代码详解以及Demo

 今天大管和大家来聊一聊逻辑回归在sklearn中的具体使用,以及详细的解析。在文章末尾,我们使用官网提供的案例来使用逻辑回归对鸢尾花数据集进行分类。

目录

 

Logist Regression

#调用函数

#参数Parameters

#属性Attributes

#代码举例

#方法Methods

#实例


 

Logist Regression

      逻辑回归,尽管它的名字,是一个线性模型的分类,而不是回归。Logistic回归在文献中也称为logit回归、最大熵分类(MaxEnt)或对数线性分类器。在这个模型中,描述单个试验可能结果的概率使用逻辑函数来建模。

#调用函数

class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='warn', max_iter=100, multi_class='warn', verbose=0, warm_start=False, n_jobs=None)

在多类情况下,如果将“multi_class”选项设置为“OvR”,则训练算法使用one-vs-rest (OvR)模式;如果将“multi_class”选项设置为“ovr”,则使用交叉熵损失。

#参数Parameters

##penalty: str, ‘l1’ or ‘l2’, default: ‘l2’ 用于指定正则项使用L1还是L2,默认使用L2。

##dual: bool, default: False  双重或原始方程。对偶公式仅适用于l2正则。当样本数量大于特征数量时,最好使用dual=False。

##tol: float, default: 1e-4 停止条件设置,默认为1e-4。

##C: float, default: 1.0  正则化强度,较小的值表示更强的正则化。

##fit_intercept:bool, default: True  指定是逻辑回归函数是够需要截距。

##intercept_scaling: float, default 1  只有当解算器“liblinear”被使用并自定义时才有用。fit_intercept设置为True。在这种情况下,x变成[x, self.intercept_scaling], 也就是说,在实例向量的后面加上一个值等于intercept_scaling的“合成”特性。截距变成了intercept_scaling * synthetic_feature_weight。

##class_weight: dict or ‘balanced’, default: None 字典的额形式{class_label: weight}给出类相关联的权重。如果没有给出,所有的类都应该有权重1。

##random_state: int, RandomState instance or None, optional, default: None  数据变换时使用的伪随机数生成器的种子。如果int, random_state是随机数生成器使用的种子; 如果RandomState实例,random_state是随机数生成器;如果没有,随机数生成器就是np.random使用的RandomState实例。当solver == ' sag '或' liblinear '时使用。

##solver: str, {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default: ‘liblinear’. 用于优化问题的算法。对于小的数据集,“liblinear”是一个不错的选择,而对于大的数据集,“sag”和“saga”更快。对于多类问题,只有“newton-cg”、“sag”、“saga”和“lbfgs”处理多项损失; “liblinear”仅限于一个对one-versus-rest的方案。“newton-cg”、“lbfgs”和“sag”只处理L2处罚,而“liblinear”和“saga”处理L1处罚。

##max_iter: int, default: 100  仅适用于newton-cg, sag和lbfgs的求解。求解器收敛所需的最大迭代次数。

##multi_class: str, {‘ovr’, ‘multinomial’, ‘auto’}, default: ‘ovr’  如果选择的选项是' ovr ',那么每个标签都适合一个二进制问题。对于多项式,即使数据是二进制的,损失最小化是多项式损失符合整个概率分布,当解算器= ' liblinear '时,'多项'不可用。“auto”选择“ovr”,如果数据是二进制的,或者如果solver=“liblinear”,否则选择“multinomial”。

##verbose: int, default: 0  对于liblinear和lbfgs求解器,将冗余设置为任意正数。

##warm_start: bool, default: False  当设置为True时,重用前一个调用的解决方案以适应初始化,否则,清除前一个解决方案。

##n_jobs: int or None, optional (default=None)  如果multi_class= ' ovr ' ",则在类之间并行化时使用的CPU核数"。当求解器被设置为“liblinear”时,不管是否指定了“multi_class”,这个参数都会被忽略。

#属性Attributes

##classes_: array, shape (n_classes, )  已知的分类器标签列表

##coef_: array, shape (1, n_features) or (n_classes, n_features)  特征的系数

##intercept_: array, shape (1,) or (n_classes,)  分类器的独立项(偏置)

##n_iter_: array, shape (n_classes,) or (1, )  所有类的实际迭代次数。如果是二进制或多项式,它只返回一个元素。对于线性解算器,只给出了所有类的最大迭代次数。

#代码举例

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(random_state=0, solver='lbfgs',multi_class='multinomial').fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :]) 
array([[9.8...e-01, 1.8...e-02, 1.4...e-08],
       [9.7...e-01, 2.8...e-02, ...e-08]])
>>> clf.score(X, y)
0.97...

 

#方法Methods

## decision_function(X) 预测样本的置信得分

       参数Parameters

X: array_like or sparse matrix, shape (n_samples, n_features) 输入样本

返回值Return

每个(样本,类别)的信心得分。在二元情况下,为自身置信度得分,大于0表示该类被预测

##densify() 转换系数矩阵为密集array的格式。

##fit(X, y, sample_weight=None)  根据训练数据来拟合模型

    参数Parameters

   X: {array-like, sparse matrix}, shape (n_samples, n_features)  训练数据,其中n_samples为样本个数,n_features为特征个数。

    y: array-like, shape (n_samples,)  对于训练数据的标签

   sample_weight: array-like, shape (n_samples,) optional  分配给单个样本的权重数组。如果没有提供,那么每个样本的权重都为1。

##get_params(deep=True) 从模型中获取参数

    参数Parameters

    deep: boolean, optional 如果为真,将返回此估计器的参数以及包含的作为估计器的子对象。

    返回值Return

    params: mapping of string to any 返回模型参数名所映射的值

##predict(X) 线性模型的预测值

    参数Parameters

    X: array_like or sparse matrix, shape (n_samples, n_features) 要预测的样本

    返回值Return

    C: array, shape (n_samples,) 返回预测的值

##score(X, y, sample_weight=None) 返回给定测试数据和标签的平均准确度

     参数Parameters

     X: array_like or sparse matrix, shape (n_samples, n_features) 要预测的样本

      y: array-like, shape = (n_samples) or (n_samples, n_outputs) X的真实标签值

      sample_weight: array-like, shape = [n_samples], optional 样本的权重默认不设置

返回值Return

使用测试用本的平均准确度

##set_params(**params)  给模型设置参数。

##predict_log_proba(X)  概率估计的对数

    参数Parameters

    X: array-like, shape = [n_samples, n_features] 要预测的样本

    返回值Return

    T: array-like, shape = [n_samples, n_classes] 返回模型中每个类的样本的对数概率(按照类别中的顺序排列)。

##predict_proba(X)  概率估计, 对于多类问题,如果将多类设置为“多项”,则使用softmax函数来查找每个类的预测概率。否则使用one-vs-rest方法。

例如使用logistic函数计算每个类假设为正的概率。并在所有类中规范化这些值。

    参数Parameters

    X: array-like, shape = [n_samples, n_features] 要预测的样本

    返回值Return

    T: array-like, shape = [n_samples, n_classes] 返回模型中每个类的样本概率(按照类别中的顺序排列)。

#实例

使用Logistics回归对鸢尾花数据进行三分类。


import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
### import some data to play with
iris = datasets.load_iris()
X = iris.data[:, :2]  # we only take the first two features.
Y = iris.target
logreg = LogisticRegression(C=1e5, solver='lbfgs', multi_class='multinomial')
### Create an instance of Logistic Regression Classifier and fit the data.
logreg.fit(X, Y)
### Plot the decision boundary. For that, we will assign a color to each
### point in the mesh [x_min, x_max]x[y_min, y_max].
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
h = .02  # step size in the mesh
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = logreg.predict(np.c_[xx.ravel(), yy.ravel()])
### Put the result into a color plot
Z = Z.reshape(xx.shape)
plt.figure(1, figsize=(4, 3))
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)
### Plot also the training points
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolors='k', cmap=plt.cm.Paired)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())
plt.show()

下面显示的是鸢尾花数据集的前两个维度(萼片长度和宽度)上的逻辑回归分类器决策边界。数据点根据其标签着色。

多内容下载机器学习资料请扫描下方二维码关注小编公众号:程序员大管

 

logist回归是一种在Excel中常用的统计分析方法之一,常用于处理二分类问题。它是一种广义线性回归模型,可以通过线性组合将自变量转化为对数几率(logit),并使用最大似然估计法来拟合模型。 在Excel中,可以通过内置的LOGISTIC函数进行logist回归分析。首先,要准备好包含自变量和因变量的数据集。然后,在Excel中选择一个空白的单元格,并输入如下公式: =LOGISTIC(y_range, x_range, constant, statistics) 其中,y_range是因变量的数据范围,x_range是自变量的数据范围,constant是一个逻辑值,用于指定是否包含常数项,statistics是一个逻辑值,用于指定是否输出额外的统计分析结果。 输入完公式后,按下回车键,Excel会计算并输出logist回归的结果。输出的结果包括回归系数、标准误差、z值、P值等,可以用于评估自变量的影响程度和统计显著性。 此外,Excel还提供了一些其他常用的函数和工具,用于对logist回归结果进行进一步分析和解释。比如,可以使用LOGEST函数来估计回归系数的置信区间,使用MINVERSE函数来计算自变量之间的多重共线性。 总之,通过Excel中的logist回归函数和相关工具,我们可以方便地进行二分类问题的统计分析和预测。但需要注意的是,logist回归是一种假设特定条件下有效的模型,对于不满足这些条件的数据,结果可能不准确,因此在使用时需要谨慎考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值