机器学习-逻辑回归

逻辑回归

1. 数学基础

"""
数学基础
	sigmoid函数:
		作用
			把(-oo, +oo) 映射到 (0, 1)
		数学性质
			单调递增函数
		导函数公式
			f′(x) = f(x)(1 - f(x))
	概率:
		概率
			事件发生的可能性
		联合概率
			指两个或多个随机变量同时发生的概率 P(AB)
				P(AB) = P(A) * P(B)
		条件概率
			表示事件A在另一个事件B已经发生条件下发生概率 P(A|B)
				P(A|B) = P(AB) / P(A)
	极大似然估计
		核心思想
			根据观测到的结果来估计模型算法中的未知参数
	对数:
		对数性质
			log MN = log M + log N
			log M/N = log M - log N
			log Mⁿ = nlog M
"""

2. 逻辑回归原理

"""
逻辑回归原理
	基本思想:
		利用线性模型:
			根据方程将特征的重要性计算出一个值
			再使用sigmoid函数将f(x)的输出值映射为概率值
			设置阈值(eg:0.5) 概率输出值大于0.5 将未知样本输出为 1 类
			否则 输出为 0 类
	假设函数:
		线性回归的输出 作为逻辑回归的输入
	损失函数:
		工作原理
			每个样本预测值有两个类别 A B
			真实类别对应的位置, 概率值越大越好
	开发API
		sklearn.linear_model.LogisticRegression(solver='liblinear', penalty=‘l2’, C = 1.0)
		solver 损失函数优化方法
		penalty:正则化的种类
		C:正则化力度
		默认将类别数量少的当做正例
	开发思路
		1.导入依赖包
		2.加载数据及数据预处理
			2.1 缺失值处理
			2.2 确定特征值,目标值
			2.3 分割数据
		3.特征工程(标准化)
		4.模型训练,机器学习(逻辑回归)
		5.模型预测和评估
"""
# 1.导入依赖包
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import numpy as np

# 暂不关注warn信息
import warnings

warnings.filterwarnings("ignore")


def logisticRegression():
    """
    回归API案例展示
    :return:
    """
    # 2.加载数据及数据预处理
    src_data = pd.read_csv('data/breast-cancer-wisconsin.csv')
    # 2.1 缺失值处理
    have_nan_data = src_data.replace(to_replace='?', value=np.NAN)
    handle_data = have_nan_data.dropna()
    # 2.2 确定特征值,目标值
    x = handle_data.iloc[:, 1:-1]
    y = handle_data.iloc[:, -1]
    # 2.3 分割数据
    X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=2)
    # 3.特征工程(标准化)
    std_scaler = StandardScaler()
    x_train = std_scaler.fit_transform(X_train)
    x_test = std_scaler.transform(X_test)
    # 4.模型训练 机器学习(逻辑回归)
    logistic_regr = LogisticRegression()
    logistic_regr.fit(X_train, y_train)
    # 5.模型预测和评估
    y_pred = logistic_regr.predict(x_test)
    acc_score = accuracy_score(y_test, y_pred)
    return acc_score

3. 分类评估

"""
分类评估
	混淆矩阵
		TP 真正例
		FP 伪正例
		FN 伪反例
		TN 真反例
	精确率 precision
		对正例样本的预测准确率
		P = TP/(TP+FP)
			
	召回率 recall
		预测为真正例样本占所有真实正例样本的比重
		P = TP/()TP+FN
	F1-score
		P = 2 * precision * recall / (precision + recall)   -- 概率值
		
	AUC指标
		ROC曲线的优劣可以通过曲线下的面积(AUC)来衡量,AUC越大表示分类器性能越好
		当AUC=0.5时,表示分类器的性能等同于随机猜测
		当AUC=1时,表示分类器的性能完美,能够完全正确地将正负例分类
		AUC的计算API
			from sklearn.metrics import roc_auc_score roc_auc_score(y_true, y_score)
			计算ROC曲线面积,即AUC值
			y_true: 每个样本的真实类别,必须为0(反例),1(正例)标记
			y_score: 预测得分,可以是正例的估计概率、置信值或者分类器方法的返回值
		分类评估报告API
			y_true: 真实目标值
			y_pred: 估计器预测目标值
			labels: 指定类别对应的数字
			target_names: 目标类别名称
			return: 每个类别精确率与召回率
	ROC曲线
		正样本中被预测为正样本的概率TPR
		负样本中被预测为正样本的概率FPR
		通过这两个指标可以描述模型对正/负样本的分辨能力
		ROC曲线以模型的真正率TPR为纵轴,假正率FPR为横轴
		ROC 曲线图像中,4 个特殊点的含义
			曲线越靠近 (0,1) 点则模型对正负样本的辨别能力就越强
			点(0, 0): 所有的负样本都预测正确 所有的正样本都预测错误 相当于点的(FPR值0, TPR值0)
			点(1, 0): 所有的负样本都预测错误 所有的正样本都预测错误 相当于点的(FPR值1, TPR值0)
			点(1, 1): 所有的负样本都预测错误 表示所有的正样本都预测正确 相当于点的(FPR值1,TPR值1)
			点(0, 1): 所有的负样本都预测正确 表示所有的正样本都预测正确 相当于点的(FPR值0,TPR值1)

"""
# 1.导入依赖包
fr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值