返回顶部
首页 > 资讯 > 后端开发 > Python >Python sklearn转换器估计器和K-近邻算法
  • 900
分享到

Python sklearn转换器估计器和K-近邻算法

2024-04-02 19:04:59 900人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、转换器和估计器1. 转换器2.估计器(sklearn机器学习算法的实现)3.估计器工作流程二、K-近邻算法1.K-近邻算法(KNN)2. 定义3. 距离公式三、电影类型分析1

一、转换器和估计器

1. 转换器

想一下之前做的特征工程的步骤?

  • 1、实例化 (实例化的是一个转换器类(TransfORMer))
  • 2、调用fit_transform(对于文档建立分类词频矩阵,不能同时调用)

我们把特征工程的接口称之为转换器,其中转换器调用有这么几种形式:

  • 标准化:(x - mean) / std
  • fit_transform():fit() 计算 每一列的平均值、标准差,transform() (x - mean) / std进行最终的转换

这几个方法之间的区别是什么呢?我们看以下代码就清楚了

In [1]: from sklearn.preprocessing import StandardScaler
In [2]: std1 = StandardScaler()
In [3]: a = [[1,2,3], [4,5,6]]
In [4]: std1.fit_transform(a)
Out[4]:
array([[-1., -1., -1.],
       [ 1.,  1.,  1.]])
In [5]: std2 = StandardScaler()
In [6]: std2.fit(a)
Out[6]: StandardScaler(copy=True, with_mean=True, with_std=True)
In [7]: std2.transform(a)
Out[7]:
array([[-1., -1., -1.],
       [ 1.,  1.,  1.]])

从中可以看出,fit_transform的作用相当于transform加上fit。

但是为什么还要提供单独的fit呢, 我们还是使用原来的std2来进行标准化看看:

In [8]: b = [[7,8,9], [10, 11, 12]]
In [9]: std2.transform(b)
Out[9]:
array([[3., 3., 3.],
       [5., 5., 5.]])
In [10]: std2.fit_transform(b)
Out[10]:
array([[-1., -1., -1.],
       [ 1.,  1.,  1.]])

2.估计器(sklearn机器学习算法的实现)

在sklearn中,估计器(estimator)是一个重要的角色,是一类实现了算法的API

  • 1 实例化一个estimator
  • 2 estimator.fit(x_train, y_train) 计算—— 调用完毕,模型生成
  • 3 模型评估:1)直接比对真实值和预测值y_predict = estimator.predict(x_test)
    y_test == y_predict
    2)计算准确率accuracy = estimator.score(x_test, y_test)

种类:1、用于分类的估计器:

  • sklearn.neighbors k-近邻算法
  • sklearn.naive_bayes 贝叶斯
  • sklearn.linear_model.LoGISticRegression 逻辑回归
  • sklearn.tree 决策树与随机森林

2、用于回归的估计器:

  • sklearn.linear_model.LinearRegression 线性回归
  • sklearn.linear_model.Ridge 岭回归

3、用于无监督学习的估计器

  • sklearn.cluster.KMeans 聚类

3.估计器工作流程

二、K-近邻算法

1.K-近邻算法(KNN)

你的“邻居”来推断出你的类别

2. 定义

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

来源:KNN算法最早是由Cover和Hart提出的一种分类算法

3. 距离公式

两个样本的距离可以通过如下公式计算,又叫欧式距离

三、电影类型分析

假设我们有现在几部电影:

其中? 号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想

1 问题

如果取的最近的电影数量不一样?会是什么结果?
k = 1 爱情片
k = 2 爱情片
……
k = 6 无法确定
k = 7 动作片

如果取的最近的电影数量不一样?会是什么结果?

  • - k 值取得过小,容易受到异常点的影响
  • - k 值取得过大,样本不均衡的影响

2 K-近邻算法数据的特征工程处理

结合前面的约会对象数据,分析K-近邻算法需要做什么样的处理

  • 无量纲化的处理
  • 标准化

四、K-近邻算法API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)n_neighbors:k值

  • n_neighbors:int,可选(默认= 5),k_neighbors查询默认使用的邻居数
  • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可选用于计算最近邻居的算法:‘ball_tree’将会使用 BallTree,‘kd_tree’将使用 KDTree。‘auto’将尝试根据传递给fit方法的值来决定最合适的算法。 (不同实现方式影响效率)

1.步骤

鸢尾花种类预测:数据,我们用的就是sklearn中自带的鸢尾花数据。

  • 1)获取数据
  • 2)数据集划分
  • 3)特征工程
  • 标准化
  • 4)KNN预估器流程
  • 5)模型评估

2.代码

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
def knn_iris():
    """
    用KNN算法对鸢尾花进行分类
    :return:
    """
    # 1)获取数据
    iris = load_iris()

    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)

    # 3)特征工程:标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)KNN算法预估器
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train, y_train)

    # 5)模型评估
    # 方法1:直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)
    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)
    return None

3.结果及分析

结果分析:准确率: 分类算法的评估之一

1、k值取多大?有什么影响?
k值取很小:容易受到异常点的影响

k值取很大:受到样本均衡的问题

2、性能问题?
距离计算上面,时间复杂度高

五、K-近邻总结

优点:简单,易于理解,易于实现,无需训练

缺点:

  • 懒惰算法,对测试样本分类时的计算量大,内存开销大
  • 必须指定K值,K值选择不当则分类精度不能保证

使用场景: 小数据场景,几千~几万样本,具体场景具体业务去测试

到此这篇关于python sklearn转换器估计器和K-近邻算法的文章就介绍到这了,更多相关Python sklearn 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python sklearn转换器估计器和K-近邻算法

本文链接: https://lsjlt.com/news/120244.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python sklearn转换器估计器和K-近邻算法
    目录一、转换器和估计器1. 转换器2.估计器(sklearn机器学习算法的实现)3.估计器工作流程二、K-近邻算法1.K-近邻算法(KNN)2. 定义3. 距离公式三、电影类型分析1...
    99+
    2024-04-02
  • 【python】机器学习-K-近邻(KNN)算法
             目录 一 . K-近邻算法(KNN)概述  二、KNN算法实现 三、 MATLAB实现 四、 实战 一 . K-近邻算法(KNN)概述          K-近邻算法(KNN)是一种基本的分类算法,它通过计算数据点之...
    99+
    2023-10-22
    python matlab 机器学习 算法
  • Python机器学习k-近邻算法怎么实现
    这篇文章主要介绍“Python机器学习k-近邻算法怎么实现”,在日常操作中,相信很多人在Python机器学习k-近邻算法怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python机器学习k-近邻算法怎...
    99+
    2023-06-21
  • python机器学习基础K近邻算法详解KNN
    目录一、k-近邻算法原理及API1.k-近邻算法原理2.k-近邻算法API3.k-近邻算法特点二、k-近邻算法案例分析案例信息概述第一部分:处理数据1.数据量缩小2.处理时间3.进一...
    99+
    2024-04-02
  • Python机器学习实战之k-近邻算法的实现
    目录K-近邻算法概述工作原理实施KNN算法示例:手写识别系统K-近邻算法概述 简单地说, k-近邻算法采用测量不同特征值之间的距离方法进行分类。 k-近邻算法 优点:精度高...
    99+
    2024-04-02
  • Python机器学习之KNN近邻算法
    目录一、KNN概述二、使用Python导入数据三、numpy.array()四、实施KNN分类算法五、计算已知类别数据集中的点与当前点之间的距离六、完整代码七、数据处理、分析、测试八...
    99+
    2024-04-02
  • python eval 转换k m到乘法计算的操作
    原数据 lambda函数处理 我之前写了各种if substr函数,各种报错 正确到热泪盈眶的函数 data['Followers/Fans'] = data['Followers/Fans'].str.rep...
    99+
    2022-06-02
    python eval 转换k m 乘法计算
  • 服务器并发量估算公式和计算方法
    最近需要对再次对服务器进行压力测试,这里整一下最近学习到的估算方案和估算方式。以下估算方式没有考虑类似于秒杀这种极端情况。 并发值估算 1.1 经典公式 一般来说,利用以下经验公式进...
    99+
    2024-04-02
  • 计算机组成原理机器数概念与转换的方法是什么
    本文小编为大家详细介绍“计算机组成原理机器数概念与转换的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“计算机组成原理机器数概念与转换的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2023-04-12
    计算机
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作