分类算法-逻辑回归

分类算法-逻辑回归

逻辑回归是解决二分类问题的利器

输入:
在这里插入图片描述
sigmoid函数
在这里插入图片描述
公式:
在这里插入图片描述
输出:[0,1]区间的概率值,默认0.5作为阀值

注:g(z)为sigmoid函数,z为回归的值

逻辑回归的损失函数、优化

与线性回归原理相同,但由于是分类问题,损失函数不一样,只能通过梯度下降求解

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sklearn逻辑回归API:sklearn.linear_model.LogisticRegression

语法:

sklearn.linear_model.LogisticRegression(penalty=‘l2’, C = 1.0)

Logistic:回归分类器

coef_:回归系数

LogisticRegression总结

应用:广告点击率预测、电商购物搭配推荐

优点:适合需要得到一个分类概率的场景

缺点:当特征空间很大时,逻辑回归的性能不是很好(看硬件能力)

逻辑回归与朴素贝叶斯的区别
在这里插入图片描述
案例----良/恶性乳腺癌肿瘤预测

数据来源:https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

数据描述:

(1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤相关的医学特征,最后一列表示肿瘤类

型的数值。

(2)包含16个缺失值,用”?”标出。

正例:哪一个类别少,判定概率值就是这个类别。如:在此案例中,恶性的概率值小,则恶性为正例

分析流程:

1.网上获取数据(工具pandas)

pd.read_csv("",names=column_names)

column_names:指定类别名字—[‘Sample code number’,‘Clump Thickness’, ‘Uniformity of Cell Size’,‘Uniformity of Cell Shape’,‘Marginal Adhesion’, ‘Single Epithelial Cell Size’,‘Bare Nuclei’,‘Bland Chromatin’,‘Normal Nucleoli’,‘Mitoses’,‘Class’]

return:数据

2.数据缺失值处理、标准化

replace(to_replace="",value="")----替换

to_replace:待替换的值

value:替换后的值

dropna()----删除

3.LogisticRegression估计器流程

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report

def logistic():
    """逻辑回归二分类进行癌症预测(根据细胞的属性特征)"""

    # 构造列标签
    column = ['Sample code number','Clump Thickness', 'Uniformity of Cell Size','Uniformity of Cell Shape','Marginal Adhesion', 'Single Epithelial Cell Size','Bare Nuclei','Bland Chromatin','Normal Nucleoli','Mitoses','Class']
    # 读取数据
    data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data',names=column)
    # 缺失值进行处理
    data = data.replace(to_replace="?",value=np.nan)
    data = data.dropna()
    # 进行数据的分割 x:特征值 y:目标值
    x_train,x_test,y_train,y_test = train_test_split(data[column[1:10]],data[column[10]],test_size=0.25)
    # 进行标准化处理
    std = StandardScaler()
    x_train = std.fit_transform(x_train)
    x_test = std.fit_transform(x_test)
    # 逻辑回归预测
    lg = LogisticRegression(C = 1.0)
    lg.fit(x_train,y_train)
    print(lg.coef_) # 系数
    print("准确率:",lg.score(x_test,y_test))
    y_predict = lg.predict(x_test)
    print("召回率:",classification_report(y_test,y_predict,labels=[2,4],target_names=["良性","恶性"]))

if __name__ == '__main__':
    logistic()

结果为:
在这里插入图片描述

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页