sklearn分类器算法:逻辑回归及案例分析

分类算法之逻辑回归

逻辑回归(Logistic Regression),简称LR。它的特点是能够是我们的特征输入集合转化为0和1这两类的概率。一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大。如果非要应用进入,可以使用逻辑回归。了解过线性回归之后再来看逻辑回归可以更好的理解。

优点:计算代价不高,易于理解和实现

缺点:容易欠拟合,分类精度不高

适用数据:数值型和标称型

逻辑回归

对于回归问题后面会介绍,Logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把特征线性求和,然后使用函数g(z)将最为假设函数来预测。g(z)可以将连续值映射到0和1上。Logistic回归用来分类0/1问题,也就是预测结果属于0或者1的二值分类问题

映射函数为:

$$g\left({z}\right){=}\frac{1}{1+e^-z}$$

其中$$z{=}\theta{0}+\theta{1}{x{1}}+\theta{2}{x_{2}}{+...}$$

映射出来的效果如下如:

sklearn.linear_model.LogisticRegression

逻辑回归类

class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)""":param C: float,默认值:1.0:param penalty: 特征选择的方式:param tol: 公差停止标准"""

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
LR = LogisticRegression(C=1.0, penalty='l1', tol=0.01)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
LR.fit(X_train,y_train)
LR.predict(X_test)
LR.score(X_test,y_test)
0.96464646464646464
# c=100.0
0.96801346801346799

属性

coef_

决策功能的特征系数

Cs_

数组C,即用于交叉验证的正则化参数值的倒数

特点分析

线性分类器可以说是最为基本和常用的机器学习模型。尽管其受限于数据特征与分类目标之间的线性假设,我们仍然可以在科学研究与工程实践中把线性分类器的表现性能作为基准。

逻辑回归算法案例分析

良/恶性乳腺癌肿瘤预测

原始数据的下载地址为:https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

数据预处理

import pandas as pd
import numpy as np# 根据官方数据构建类别
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'],data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/',names = column_names)# 将?替换成标准缺失值表示
data = data.replace(to_replace='?',value = np.nan)# 丢弃带有缺失值的数据(只要一个维度有缺失)
data = data.dropna(how='any')data.shape

处理的缺失值后的样本共有683条,特征包括细胞厚度、细胞大小、形状等九个维度

准备训练测试数据

from sklearn.cross_validation import train_test_splitX_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=42)# 查看训练和测试样本的数量和类别分布
y_train.value_counts()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)# 初始化 LogisticRegressionlr = LogisticRegression(C=1.0, penalty='l1', tol=0.01)# 跳用LogisticRegression中的fit函数/模块来训练模型参数
lr.fit(X_train,y_train)lr_y_predict = lr.predict(X_test)

性能分析

from sklearn.metrics import classification_report# 利用逻辑斯蒂回归自带的评分函数score获得模型在测试集上的准确定结果
print '精确率为:',lr.score(X_test,y_test)print classification_report(y_test,lr_y_predict,target_names = ['Benign','Maligant'])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

词云(WordCloud)制作

以《神雕侠侣》为例,我们制作词云,看看有哪些高频词汇。 1. 导入一些包 # -*- coding:utf-8 -*- # Python Version: 3.7 # Time: 2020/11/27 19:32 # Author: Michael Ming # Website: https://michael.blog.csdn.net/ # File: word_cloud.py # Refere…

sklearn分类器性能评估

分类器性能评估在许多实际问题中,衡量分类器任务的成功程度是通过固定的性能指标来获取。一般最常见使用的是准确率,即预测结果正确的百分比。然而有时候,我们关注的是负样本是否被正确诊断出来。例如,关于肿瘤的的判定&#xff0…

构建iOS风格移动Web应用程序的8款开发框架

http://mobile.51cto.com/web-433992.htm转载于:https://www.cnblogs.com/daishuguang/p/3633409.html

sklearn分类器算法:决策树与随机森林及案例分析

分类算法之决策树决策树是一种基本的分类方法,当然也可以用于回归。我们一般只讨论用于分类的决策树。决策树模型呈树形结构。在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的集合。在决策树的结构中,每…

天池 在线编程 求和查找

文章目录1. 题目2. 解题1. 题目 来源:https://tianchi.aliyun.com/oj/164427478262600292/204998627646706400 2. 解题 暴力 哈希查找 class Solution { public:/*** param inputs: an integer array* param tests: an integer array* return: return true if s…

[转]python 中的字符串连接

python 中可使用 进行字符串的连接操作 但很多文档里都说,python 使用 进行字符串连接的效率低下 这直接导致本人在代码中不敢使用 进行字符串的连接操作 可事实又是怎样呢? 之所以说python 中使用 进行字符串连接的操作效率低下,是因为python中字符…

天池 在线编程 条件串(DP)

文章目录1. 题目2. 解题1. 题目 来源:https://tianchi.aliyun.com/oj/164427478262600292/204998627646706401 2. 解题 把字符串分成ace,bdf 两部分进行处理,求以某个字符结束时的最小删除次数 class Solution { public:/*** param s: wri…

用 Kaggle 经典案例教你用 CNN 做图像分类!

我们来看一个 Kaggle 上比较经典的一个图像分类的比赛 CIFAR( CIFAR-10 - Object Recognition in Images ),这个比赛现在已经关闭了,但不妨碍我们来去通过它学习一下卷积神经网络做图像识别的代码结构。相信很多学过深度学习的同学都尝试过这个比赛&…

ubuntu系统

作者简介: AndrewHudson是英国最大的Linux杂志LinuxFormat的一名定期自由撰稿人。他同时是Fedora5Unleashed一书的合著者。PaulHudson是一位专业的开发人员,FuturePublishing的一名全职新闻工作者。他经常为MacFormat、PC个Answers、PCFormat、PCPlus和LinuxFormat等…

Flask知识点回顾以及重点内容

1. HTTP通信与Web框架 1.1 流程 客户端将请求打包成HTTP的请求报文(HTTP协议格式的请求数据) 采用TCP传输发送给服务器端 服务器接收到请求报文后按照HTTP协议进行解析 服务器根据解析后获知的客户端请求进行逻辑执行 服务器将执行后的结果封装成HTTP的响…

C#操作AD的例子

一下连接中包含了使用c#对AD操作的各种列子 http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C#40 转载于:https://www.cnblogs.com/dereklovecc/p/3634537.html

机器学习回归算法—线性回归及案例分析

一、回归算法回归是统计学中最有力的工具之一。机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型、连续性而定义的。回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在给定…

LeetCode 1669. 合并两个链表

文章目录1. 题目2. 解题1. 题目 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: 请你返回结果…

机器学习回归算法—性能评估欠拟合与过拟合

机器学习中的泛化,泛化即是,模型学习到的概念在它处于学习的过程中时模型没有遇见过的样本时候的表现。在机器学习领域中,当我们讨论一个机器学习模型学习和泛化的好坏时,我们通常使用术语:过拟合和欠拟合。我们知道模…

Nginx安全配置

nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理,fastcgi管理进程选择cgi子进程处理结果并返回…

LeetCode 1670. 设计前中后队列(deque)

文章目录1. 题目2. 解题1. 题目 请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类: FrontMiddleBack() 初始化队列。 void pushFront(int val) 将 val 添加到队列的 最前面 。 void…

java 1.7 新特性

1.对Java集合(Collections)的增强支持 在JDK1.7之前的版本中,Java集合容器中存取元素的形式如下: 以List、Set、Map集合容器为例: 在JDK1.7中,摒弃了Java集合接口的实现类,如:ArrayL…

机器学习回归算法—岭回归及案例分析

一、回归算法之岭回归具有L2正则化的线性最小二乘法。岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠…

LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)

文章目录1. 题目2. 解题2.1 n^2 解法2.2 nlogn 解法197 / 1891,前10.4%435 / 6154,前7.07%前三题如下: LeetCode 5557. 最大重复子字符串 LeetCode 5558. 合并两个链表 LeetCode 5560. 设计前中后队列(deque) 1. 题目…

【leetcode刷题笔记】Single Number

题目: Given an array of integers, every element appears twice except for one. Find that single one. Note:Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory? 看了别人的解答才会的,…