逻辑斯蒂回归(Logistic Regression)

逻辑斯蒂回归

定义x=<x1,x2,...xn>来表示n维特征向量,权重为w=<w1,w2,...wn>,同时,截距(Intercept)为b。则这种线性关系为: f(w,x,b)=w^Tx+b 在分类问题中,为了使f属于01,设定一个函数,把f映射到01,这个函数就是逻辑斯谛函数。

逻辑斯蒂函数

它是一个连续函数,我们可以假设其上的点的值,就是取到其X的概率。在X靠近0的地方,概率较小,这也能说通,因为X=0处,就是Y=0与Y=1交界的地方,在那里容易判断出错,所以概率较小,越偏离0,概率越大。

代码如下:

import pandas as pd
import numpy as np

#创建特征列表
column_names=['Sample code number','Clump Thickness','Unfoemity of Cell Size','Unfoemity of Cell Shape','Marginal Adhesion','Single Epithelial Cell Size',
              'Bare Nuclei','Bland Chromatin','Normal Nucleoli','Mitoses','Class']
data=pd.read_csv('breast-cancer-wisconsin.data',names=column_names)
#将?替换为标准缺失值表示
data=data.replace(to_replace='?',value=np.nan)
#丢弃带有缺失值的数据
data=data.dropna(how='any')
print(data.shape)  #输出数据形状
from sklearn.cross_validation import train_test_split

#分割数据25%用于测试,75%用于训练
X_train,X_test,Y_train,Y_test=train_test_split(data[column_names[1:10]],data[column_names[10]],test_size=0.25,random_state=33)
#查看数据分布
print(Y_train.value_counts())
print(Y_test.value_counts())

#使用线性分类模型
from sklearn.preprocessing import  StandardScaler
from sklearn.linear_model import  LogisticRegression
 
#标准化数据,保证每个维度的特征数据方差为1,均值为0,使得预测结果不会被某些维度过大的特征值而主导
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_test)
#初始化 LogisticRegression 
lr=LogisticRegression()
 
#训练模型
lr.fit(X_train,Y_train)
#使用训练好的模型进行预测
lr_y_predict=lr.predict(X_test)
 
#预测的性能分析
from sklearn.metrics import classification_report
#使用逻辑斯蒂回归的评分函数score获得模型在测试集的准确性结果
print('Accurancy of LR Classifier:',lr.score(X_test,Y_test))
#利用classification_report获得LogisticRession其他三个指标的结果
print(classification_report(Y_test,lr_y_predict,target_names=['Benign','Malignant']))

注:数据来自范淼 李超《Python机器学习及实践》清华大学出版社 这本书提供的,链接:https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

一文解决图片数据集太少的问题:详解KerasImageDataAugmentation各参数

作者 | Professor ho 本文转自Professor ho的知乎专栏 图像深度学习任务中,面对小数据集,我们往往需要利用Image Data Aug...

4156
来自专栏AI研习社

浏览器中的姿态检测:PoseNet 模型(附代码)

这里附上 Youtube 上这段视频的源代码,作者是 Siraj Raval:https://youtu.be/9KqNk5keyCc

2743
来自专栏CVer

OpenCV实战:人脸关键点检测(FaceMark)

Summary:利用OpenCV中的LBF算法进行人脸关键点检测(Facial Landmark Detection) Author: Amusi Dat...

1.1K7
来自专栏ascii0x03的安全笔记

利用Python sklearn的SVM对AT&T人脸数据进行人脸识别

要求:使用10-fold交叉验证方法实现SVM的对人脸库识别,列出不同核函数参数对识别结果的影响,要求画对比曲线。 使用Python完成,主要参考文献【4】...

5548
来自专栏大数据挖掘DT机器学习

如何用TensorFlow和TF-Slim实现图像标注、分类与分割

本文github源码地址: 在公众号 datadw 里 回复 图像 即可获取。 笔者将和大家分享一个结合了TensorFlow和slim库的小应用,来实现...

5814
来自专栏新智元

【信息图】神经网络动物园前序:Cell与层之间如何连接

【新智元导读】 此前介绍的神经网络动物园让大家大饱眼福,看到了各种各样的神经网络模型。今天带来更为基础的介绍:组成神经网络模型的基本单元和层是怎么样的?通过信...

3296
来自专栏AI科技评论

开发 | 图片数据集太少?看我七十二变,Keras Image Data Augmentation 各参数详解

AI科技评论按,本文作者Professor ho,该文首发于知乎专栏Keras花式工具箱,AI科技评论获其授权转载。 图像深度学习任务中,面对小数据集,我们往往...

43310
来自专栏人工智能LeadAI

什么!卷积要旋转180度?!

一看这个标题就会想,这有什么大惊小怪的,可能好多人觉得这是个脑残话题,但我确实误解了两三年……

1321
来自专栏人工智能LeadAI

简易的深度学习框架Keras代码解析与应用

总体来讲keras这个深度学习框架真的很“简易”,它体现在可参考的文档写的比较详细,不像caffe,装完以后都得靠技术博客,keras有它自己的官方文档(不过是...

6547
来自专栏LhWorld哥陪你聊算法

【Keras篇】---利用keras改写VGG16经典模型在手写数字识别体中的应用

VGG16是由16层神经网络构成的经典模型,包括多层卷积,多层全连接层,一般我们改写的时候卷积层基本不动,全连接层从后面几层依次向前改写,因为先改参数较小的。

1762

扫码关注云+社区