个人博客网站开发的背景,南联网站建设,百度账号快速注册入口,做网站上的图片如何设定分辨率常见的十大机器学习算法#xff1a; 机器学习算法#xff08;一#xff09;—决策树 机器学习算法#xff08;二#xff09;—支持向量机SVM 机器学习算法#xff08;三#xff09;—K近邻 机器学习算法#xff08;四#xff09;—集成算法 机器学习算法#xff08;五…常见的十大机器学习算法 机器学习算法一—决策树 机器学习算法二—支持向量机SVM 机器学习算法三—K近邻 机器学习算法四—集成算法 机器学习算法五—聚类 机器学习算法六—逻辑回归 机器学习算法七—Apriori 关联分析 机器学习中监督学习模型的任务重点在于根据已有经验知识对未知样本的目标/标记进行预测。根据目标预测变量的类型不同把监督学习任务大体分为分类学习和回归预测两类。分类学习是最为常见的监督学习问题其中最基础的是二分类问题除此之外还有多分类问题。
一、逻辑回归
1.1 模型介绍 逻辑回归是在数据服从伯努利分布的假设下通过极大似然的方法运用梯度下降法来求解参数从而达到将数据二分类的目的。 逻辑回归是一种用于二分类问题的统计方法引入了一种 S型曲线Sigmoid函数它能将输出值压缩到0和1之间从而解决了线性回归不适用分类问题的问题。 Sigmoid函数 其中Zw0w1x1w2x2…(wn)xnW*X逻辑回归可以将 z 映射为一个 0 到 1 之间的概率。X表示特征向量W表示模型的参数。 1.2 工作原理 逻辑回归主要用于估计某个事件发生的概率核心思想是使用线性回归来计算一个分数即Z 然后通过 Sigmoid函数将这个分数转化为概率再以此概率进行分类。逻辑回归的参数是通过极大似然估计来确定。 1损失函数 使用交叉熵损失函数来衡量模型预测的概率与真实类别标签之间的差距。交叉熵损失定义如下 其中yi是真实类别pi是模型的预测概率m 是样本数量。 2优化算法 使用梯度下降法来更新权重和偏置项以最小化损失函数。
1.3 算法流程
1、初始化 设定初始参数 W可以随机选择也可以设为零。 2、前向传播 对每一个样本计算线性组合应用逻辑回归函数计算概率 3、计算损失 使用对数似然函数计算损失 4、梯度计算 计算梯度 5、参数更新 更新参数 6、迭代 重复前向传播、损失计算、梯度计算和参数更新直到收敛或达到预设的迭代次数。 7、分类决策 使用训练好的模型对新数据进行预测根据计算出的概率 p 和阈值进行分类。
1.4 逻辑回归优缺点
优点:
1.形式简单模型的可解释性好2.训练速度较快3.方便调整输出结果通过调整阈值的方式
缺点
1.无法自动进行特征筛选2.只能处理二分类问题3.很难处理数据不平衡问题
1.5 案例 案例数据为‘良/恶性乳腺肿瘤预测数据’该数据共有569条样本1列表征肿瘤类型的数值以及30列与肿瘤相关的医学特征30个特征(10个平均值10个标准差10个最值)。
import pandas as pd
import numpy as np
from sklearn.datasets import load_breast_cancer #引入乳腺癌的数据集
from sklearn.model_selection import train_test_split #用于分割数据集
from sklearn.preprocessing import StandardScaler # 归一化
from sklearn.linear_model import LogisticRegression # 导入逻辑回归模型
from sklearn.linear_model import SGDClassifier #导入随机梯度下降分类模型
from sklearn.metrics import classification_report
cancer load_breast_cancer()
print(cancer.data.shape)
print(cancer.target.shape)xcancer.data
ycancer.target
xyx_train,x_test,y_train,y_test train_test_split(x,y,test_size0.3,random_state33)
#标准化数据使得每个维度特征数据方差为1均值为0预测结果不会被某些维度过大的特征值而主导
ssStandardScaler()
X_trainss.fit_transform(x_train)
X_testss.transform(x_test)
#初始化
lrLogisticRegression()
sgdcSGDClassifier()
#调用LogisticRegression中fit函数/模块训练参数
lr.fit(X_train,y_train)
#使用训练好的模型lr对x_test数据进行预测
lr_y_predictlr.predict(X_test)#调用SGDClassifier中fit函数/模块训练参数
sgdc.fit(X_train,y_train)
#使用训练好的模型lr对x_test数据进行预测
sgdc_y_predictsgdc.predict(X_test)#对于乳腺癌肿瘤预测问题显然更加关注召回率和精确率更加接近的模型给予更高的分数。
print(Accuracy of LR Classifier:,lr.score(X_test,y_test))
print(classification_report(y_test,lr_y_predict,target_names[Benign,Malignant]))
#Benign良性 Malignant恶性
#macro avg 即宏均值可理解为普通的平均值。对应的概念还有微均值 micro avg
#weighted avg 加权平均print(Accuracy of sgdc Classifier:,sgdc.score(X_test,y_test))
print(classification_report(y_test,sgdc_y_predict,target_names[Benign,Malignant]))macro avg 即宏均值可理解为普通的平均值。对应的概念还有微均值 micro avg 宏平均是先对每一个类统计指标值然后在对所有类求算术平均值。微平均是对每一个实例不分类别进行统计建立全局混淆矩阵然后计算相应指标。 如果每个class的样本数量相差不大那么宏平均和微平均差异也不大如果每个class的相差较大并且你想更注重样本量多的class使用宏平均更注重样本量少的class使用微平均。 LogisticRegression比起SGDClassifier在测试集上表现有更高的准确性一般而言对于训练数据规模在10万以上的数据推荐使用随机梯度算法对模型参数进行估计。
1.6 classification_report()参数
classification_report(y_true,y_pred,labelsNone,target_namesNone,sample_weightNone,digits2,output_dictFalse,zero_division“warn” y_true真实值 y_pred预测值 labels标签索引列表可选参数数组形式 target_names与标签匹配的名称可选参数数组形式 sample_weight样本权重当“output_dict”为“True”时这将被忽略并且返回的值不会四舍五入。 digits格式化输出浮点值的位数。默认为2是否输出字典。默认为False如果为True则输出结果形式为字典。 zero_division设置存在零除法时返回的值。默认为warn。如果设置为“warn”这相当于0但也会引发警告。
二、逻辑回归与线性回归的区别与联系 1.分类与回归 线性回归模型是预测一个连续变量 逻辑回归是预测一个分类变量 2.输出 线性回归 连续型 线性回归容易受异常值影响 逻辑回归 分类型 3.参数估计方法 线性回归使用的是最小平方误差损失函数对偏离真实值越远的数据惩罚越严重 逻辑回归使用似然函数进行参数估计使用交叉熵作为损失函数