sklearn之逻辑分类

‘‘‘
    逻辑分类:----底层为线性回归问题
        通过输入的样本数据,基于多元线型回归模型求出线性预测方程。
            y = w0+w1x1+w2x2
        但通过线型回归方程返回的是连续值,不可以直接用于分类业务模型,所以急需一种方式使得把连续的预测值->离散的预测值。
         [-oo, +oo]->{0, 1}
         逻辑函数(sigmoid):y = 1 / (1+e^(-x)), 该逻辑函数当x>0,y>0.5;当x<0, y<0.5;
        可以把样本数据经过线性预测模型求得的值带入逻辑函数的x,即将预测函数的输出看做输入被划分为1类的概率,
        择概率大的类别作为预测结果,可以根据函数值确定两个分类。这是连续函数离散化的一种方式。

    逻辑回归相关API:
            import sklearn.linear_model as lm
            # 构建逻辑回归器
            # solver:逻辑函数中指数的函数关系(liblinear为线型函数关系)
            # C:参数代表正则强度,为了防止过拟合。正则越大拟合效果越小。
            model = lm.LogisticRegression(solver=‘liblinear‘, C=正则强度)
            model.fit(训练输入集,训练输出集)
            result = model.predict(带预测输入集)

    案例:基于逻辑回归器绘制网格化坐标颜色矩阵。
‘‘‘
import numpy as np
import matplotlib.pyplot as mp
import sklearn.linear_model as lm

x = np.array([[3, 1],
              [2, 5],
              [1, 8],
              [6, 4],
              [5, 2],
              [3, 5],
              [4, 7],
              [4, -1]])
y = np.array([0, 1, 1, 0, 0, 1, 1, 0])
# 根据找到的某些规律,绘制分类边界线
l, r = x[:, 0].min() - 1, x[:, 0].max() + 1
b, t = x[:, 1].min() - 1, x[:, 1].max() + 1
n = 500
grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n))
# 构建逻辑回归模型,并训练模型
model = lm.LogisticRegression(solver=‘liblinear‘, C=1)
model.fit(x, y)
# 把网格坐标矩阵中500*500做类别预测
test_x = np.column_stack((grid_x.ravel(), grid_y.ravel()))      # grid_x,grid_y撑平后合并为两列
test_y = model.predict(test_x)
grid_z = test_y.reshape(grid_x.shape)

# 绘制样本数据
mp.figure(‘Simple Classification‘, facecolor=‘lightgray‘)
mp.title(‘Simple Classification‘)
mp.xlabel(‘X‘)
mp.ylabel(‘Y‘)
# 绘制分类边界线(填充网格化矩阵)
mp.pcolormesh(grid_x, grid_y, grid_z, cmap=‘gray‘)
mp.scatter(x[:, 0], x[:, 1], s=80, c=y, cmap=‘jet‘, label=‘Samples‘)

mp.legend()
mp.show()

  

原文地址:https://www.cnblogs.com/yuxiangyang/p/11186809.html

时间: 2024-07-29 18:44:01

sklearn之逻辑分类的相关文章

Sklearn实现逻辑回归

方法与参数 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=

sklearn特征选择和分类模型

数据格式: 这里.原始特征的输入文件的格式使用libsvm的格式,即每行是label index1:value1 index2:value2这样的稀疏矩阵的格式. sklearn中自带了非常多种特征选择的算法. 我们选用特征选择算法的根据是数据集和训练模型. 以下展示chi2的使用例.chi2,採用卡方校验的方法进行特征选择.比較适合0/1型特征和稀疏矩阵. from sklearn.externals.joblib import Memory from sklearn.datasets imp

Sklearn之支持向量机分类

''' 支持向量机: 支持向量机原理: 分类原则:寻求最优分类边界 1.正确:对大部分样本可以正确地划分类别. 2.泛化:最大化支持向量间距. 3.公平:与支持向量等距. 4.简单:线性,直线或平面,分割超平面. 基于核函数的升维变换:通过名为核函数的特征变换,增加新的特征,使得低维度空间中的线性不可分问题变为高维度空间中的线性可分问题. 1>线性核函数:linear,不通过核函数进行维度提升,仅在原始维度空间中寻求线性分类边界. 2>多项式核函数:poly,通过多项式函数增加原始样本特征的高

[ML]逻辑分类入门:两类

注明:本文仅作为记录本人的日常学习历程而存在. 这次要实现的功能是 使用已经划分为两类的数据进行训练参数theta,得到theta后,任意给出一组数据,与theta相乘,得到一个0-1之间的小数,分别对应了1st类和2nd类. 1.使用的训练数据集如下 Id,SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm,Species 1,5.1,3.5,1.4,0.2,Iris-setosa 2,4.9,3.0,1.4,0.2,Iris-setos

【编程语言业务逻辑分类】

1. 面向过程 按照业务逻辑和实现过程步骤来逐步垒代码,代码编写的逻辑即对应于实际实现的步骤过程,核心是过程两个字,从代码执行顺序上体现出设计者的逻辑过程,整个程序就是把若干个过程串起来的效果.本质上像是构建了一条生成流水线,每一道工序都通过代码块严格定义. 优点: 复杂问题简单化,把大的任务逐步分解成一个一个小的任务分步实现,实现了每个小的步骤即可完成整体任务.逻辑思想符合日常生活中的常规过程化思维,因而代码可读性较高. 缺点: 由于实现逻辑是自上而下的分步过程,任何一个环节的变动,都可能涉及

sklearn之人工分类和分类边界线

''' 人工分类:人为的按照自定的规则对事物进行分类 特征1 特征2 输出 3 1 0 2 5 1 1 8 1 6 4 0 5 2 0 3 5 1 4 7 1 4 -1 0 ... ... ... 6 8 1 5 1 0 分类边界线的绘制 ''' import numpy as np import matplotlib.pyplot as mp x = np.array([[3, 1], [2, 5], [1, 8], [6, 4], [5, 2], [3, 5], [4, 7], [4, -1

从概率模型到逻辑分类

数组的基本使用一.数组的定义概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致.格式一:数组存储的数据类型[] 数组名字;举例:int[]  arr;格式二:数组存储的数据类型 数组名字[];举例:int arr[];二.数组动态初始化格式:数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];举例:int[] arr = new int[5]; 数组定义格式详解: 数组存储的数据类型: 创建的数组容器可以存储什么数据类型. [] : 表示数组. 数组名字:

一个难懂的聚簇分类算法

1.抽取全部图像的surf特征(每个图像的特征行不固定,但是列是固定的70) 2.将图像分为两组,一组训练,一组测试 3.将训练图像全部合并为一个大矩阵,并将矩阵聚簇为30个特征. 4.将每一个图像代入聚簇函数,推测每一个图像属于若干个分组(若不够30个分组,后面补1) 5.每个图像就表示为30个特征向量 6.送入逻辑分类进行分类学习 7.得到训练结果 # -*- coding: utf-8 -*- """ Created on Thu Aug 11 20:51:19 201

关于随机森林样本和分类目标的示例

关于随机森林样本和分类目标的示例注意: 1.目标类别是3个以上(逻辑分类只能两个) 2.自变量X以行为单位 3.因变量y以列为单位(每一个值对应X的一行) 4.其它不用管了,交给程序去吧 # -*- coding: utf-8 -*- """ Created on Tue Aug 09 17:40:04 2016 @author: Administrator """ # -*- coding: utf-8 -*- ""&quo