百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

分享几个Sklearn模块中不为人知又超级好用的API函数

toyiye 2024-04-27 03:47 23 浏览 0 评论

作者:俊欣

来源:关于数据分析与可视化

相信对于不少机器学习的爱好者来说,训练模型、验证模型的性能等等用的一般都是sklearn模块中的一些函数方法,今天小编来和大家聊一下该模块中那些不那么为人所知的API,可能知道的人不多,但是十分的好用。

极值检测

数据集当中存在着极值,这个是很正常的现象,市面上也有很多检测极值的算法,而sklearn中的EllipticalEnvelope算法值得一试,它特别擅长在满足正态分布的数据集当中检测极值,代码如下

import numpy as np
from sklearn.covariance import EllipticEnvelope

# 随机生成一些假数据
X = np.random.normal(loc=5, scale=2, size=100).reshape(-1, 1)

# 拟合数据
ee = EllipticEnvelope(random_state=0)
_ = ee.fit(X)

# 新建测试集
test = np.array([6, 8, 30, 4, 5, 6, 10, 15, 30, 3]).reshape(-1, 1)

# 预测哪些是极值
ee.predict(test)

output

array([ 1,  1, -1,  1,  1,  1, -1, -1, -1,  1])

在预测出来哪些数据是极值的结果当中,结果中“-1”对应的是极值,也就是30、10、15、30这些结果

特征筛选(RFE)

在建立模型当中,我们筛选出重要的特征,对于降低过拟合的风险以及降低模型的复杂度都有着很大的帮助。Sklearn模块当中递归式特征消除的算法(RFE)可以非常有效地实现上述的目的,它的主要思想是通过学习器返回的coef_属性或者是feature_importance_属性来获得每个特征的重要程度。然后从当前的特征集合中移除最不重要的特征。在剩下的特征集合中不断地重复递归这个步骤,直到最终达到所需要的特征数量为止。

我们来看一下下面这段示例代码

from sklearn.datasets import make_regression
from sklearn.feature_selection import RFECV
from sklearn.linear_model import Ridge

# 随机生成一些假数据
X, y = make_regression(n_samples=10000, n_features=20, n_informative=10)

# 新建学习器
rfecv = RFECV(estimator=Ridge(), cv=5)
_ = rfecv.fit(X, y)

rfecv.transform(X).shape

output

(10000, 10)

我们以Ridge()回归算法为学习器,通过交叉验证的方式在数据集中去掉了10个冗余的特征,将其他重要的特征保留了下来。

决策树的绘制

相信对不少机器学习的爱好者来说,决策树算法是再熟悉不过的了,要是我们同时能够将其绘制成图表,就可以更加直观的理解它的原理与脉络,我们来看一下下面的这个示例代码

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt
%matplotlib inline

# 新建数据集,用决策树算法来进行拟合训练
df = load_iris()
X, y = iris.data, iris.target
clf = DecisionTreeClassifier()
clf = clf.fit(X, y)

# 绘制图表
plt.figure(figsize=(12, 8), dpi=200)
plot_tree(clf, feature_names=df.feature_names, 
               class_names=df.target_names);

output

HuberRegressor回归

数据集当中要是存在极值会大大降低最后训练出来模型的性能,大多数的情况下,我们是通过可以通过一些算法来找到这些极值然后将其去除掉,当然这里还有介绍的HuberRegressor回归算法给我们提供了另外一个思路,它对于极值的处理方式是在训练拟合的时候给予这些极值较少的权重,当中的epsilon参数来控制应当是被视为是极值的数量,值越小说明对极值的鲁棒性就越强。具体请看下图

epsilon的值等于1.35、1.5以及1.75的时候,受到极值的干扰都比较小。该算法具体的使用方法以及参数的说明可以参照其官方文档。

https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.HuberRegressor.html

特征筛选 SelectFromModel

另外一种特征筛选的算法是SelectFromModel,和上述提到的递归式特征消除法来筛选特征不同的是,它在数据量较大的情况下应用的比较多因为它有更低的计算成本,只要模型中带有feature_importance_属性或者是coef_属性都可以和SelectFromModel算法兼容,示例代码如下

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import ExtraTreesRegressor

# 随机生成一些假数据
X, y = make_regression(n_samples=int(1e4), n_features=50, n_informative=15)

# 初始化模型
selector = SelectFromModel(estimator=ExtraTreesRegressor()).fit(X, y)

# 筛选出重要的模型
selector.transform(X).shape

output

(10000, 9)

相关推荐

如何在 Linux/Unix/Windows 中发现隐藏的进程和端口

unhide是一个小巧的网络取证工具,能够发现那些借助rootkit、LKM及其它技术隐藏的进程和TCP/UDP端口。这个工具在Linux、UNIX类、MS-Windows等操作系统下都...

跟老韩学Ubuntu Server 2204-Linux性能管理-uptime指令帮助手册

uptime指令是每个从事Linux系统工作的相关同学必知必会的指令之一,如下是uptime指令的帮助手册。UPTIME(1)...

Openwrt+Rclone+emby+KODI搭建完美家庭影音服务器

特别声明:本篇内容参考了波仔分享,在此表示感谢!上一篇《Openwrt+emby+KODI搭建家庭影音服务器》只适用影音下载到本地的情形,不能播放云盘中的影音,内容较少,缺少了趣味性,也不直观。...

Linux Shell脚本经典案例(linux shell脚本例子)

编写Shell过程中注意事项:开头加解释器:#!/bin/bash语法缩进,使用四个空格;多加注释说明。命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。默认变量是全局的,在函数...

解决 Linux 性能瓶颈的黄金 60 秒

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。...

跟老韩学Ubuntu Server 2204-Linux性能管理-vmstat指令帮助手册

vmstat可查看ubuntlinux的综合性能,是每个从事Linux人员必知必会、需掌握的核心指令之一。vmstat指令帮助手册如下。VMSTAT(8)...

Python 可视化工具包(python常见的可视化工具)

喜欢用Python做项目的小伙伴不免会遇到这种情况:做图表时,用哪种好看又实用的可视化工具包呢?本文将介绍一些常用的Python可视化包,包括这些包的优缺点以及分别适用于什么样的场景。这篇文章...

Python的GPU编程实例——近邻表计算

目录技术背景...

python算法体验-3.python实现欧式距离的三种方式

欧式距离也称欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的绝对距离。欧式距离源自N维欧氏空间中两点...

python实现Lasso回归分析(特征筛选、建模预测)

实现功能:...

python语言检测模块langid、langdetect使用

本文首发地址:https://blog.csdn.net/Together_CZ/article/details/86678423欢迎关注我的博客【Together_CZ】,我是沂水寒城!之前使用数据...

7天学会Python最佳可视化工具Seaborn(一):可视化变量间的关系

众所周知,Seaborn“可能”是Python下最友好、易用的可视化工具了,可视化效果也非常好。但是截止目前,并没有一份中文教程供广大国内Python使用者查阅学习。怎么能因为语言的问题,让大家错过这...

在Python中使用K-Means聚类和PCA主成分分析进行图像压缩

各位读者好,在这篇文章中我们尝试使用sklearn库比较k-means聚类算法和主成分分析(PCA)在图像压缩上的实现和结果。压缩图像的效果通过占用的减少比例以及和原始图像的差异大小来评估。图像压...

OpenCV-Python 相机校准 | 四十九

目标在本节中,我们将学习由相机引起的失真类型,如何找到相机的固有和非固有特性如何根据这些特性使图像不失真基础一些针孔相机会给图像带来明显的失真。两种主要的变形是径向变形和切向变形。径向变形会导致直线出...

python数据预处理技术(python 数据预处理)

在真实世界中,经常需要处理大量的原始数据,这些原始数据是机器学习算法无法理解的。为了让机器学习算法理解原始数据,需要对数据进行预处理。我们运行anaconda集成环境下的“jupyternotebo...

取消回复欢迎 发表评论:

请填写验证码