Scikit-learn-02.逻辑回归

本系列文章介绍人工智能的基础概念和常用公式。由于协及内容所需的数学知识要求,建议初二以上同学学习。 运行本系统程序,请在电脑安装好Python、matplotlib和scikit-learn库。相关安装方法可自行在百度查找。

逻辑回归算法虽然带有“回归”二字,但实际上它是一个分类算法。虽然可以进行多元分类分析,但本质上是二元分类计算。也是一种线性回归算法。

目录

Sigmoid函数

逻辑回归预测函数

优缺点

示例说明

示例程序

运行结果 



Sigmoid函数

所谓二元分类是指,预测结果只有0和1两种结果。我们先看一个叫Sigmoid的函数。

sigmoid有一个性质:当z趋于+∞时,g(z)趋于1;当z于-∞时,g(z)趋于0。


逻辑回归预测函数


优缺点


示例说明

我们用scikit-learn自带的一个乳腺癌数据集进行练习。这个数据集总共有569个样品,每个样品有30个特征(每个特征代表一项数据如:病灶半径、纹理和周长等)。

我们使用LogisticRegression模型进行分析。这个模型会为每个样本输出两个概率,即为0的概率和为1的概率。1为阳性,0为阴性。那个概率大,就预测为那个类别。

由于逻辑回归只要预测值大于0.5即为一种类别。这样的预测面过于大,我们将对为0和为1的概率进行比较分析。再确定是阳性还是阴性。我们的分析方法是这样的:

  1. 比较阴性的概率和阳性的概率那个大。
  2. 阴性概率比阳性概率大的,并且阴性概率在0.9以上,阳性概率在0.3以下的,可定性为阴性。反之阳性也是如此鉴定。
  3. 鉴定为阴性和阳性的数据和样本数据结果比较,统计正确率。

示例程序

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
  
cancer = load_breast_cancer()
X = cancer.data
Y = cancer.target
  
x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.2)
  
model = LogisticRegression(solver='liblinear')
model.fit(x_train,y_train)
  
y_pred = model.predict_proba(x_test)
  
i=0
ipass=0
rate1 = 0.90
rate2 = 0.30
  
for yy in y_pred:
    if(y_pred[0][0] > y_pred[0][1]) and (y_pred[0][0]>rate1 and y_pred[0][1]<rate2) and (y_test[i]==0):
        ipass+=1
  
  
    if(y_pred[0][0] < y_pred[0][1]) and (y_pred[0][1]>rate1 and y_pred[0][0]<rate2) and (y_test[i]==1):
        ipass+=1
       i+=1
  
print(ipass,"/",len(y_test),",",ipass/len(y_test))

运行结果 

#运行结果
75 / 144 ,  0.65789473

正确率是百分之六十五左右。由于测试数据是随机给出的,所以每次的预测值也是不确定的

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值