Scikit-learn方法使用总结
在机器学习和数据挖掘的应用中,scikit-learn是一个功能强大的python包。在数据量不是过大的情况下,可以解决大部分问题。近期在学习使用scikit-learn的过程中,我自己也在补充着机器学习和数据挖掘的知识。以下是我做一个总结的笔记。后续会结合竞赛实操。
1 scikit-learn基础介绍
1.1 估计器(Estimator)
常直接理解成分类器,主要包含两个函数:
- fit():训练算法,设置内部参数。接收训练集和类别两个参数。
- predict():预测测试集类别,参数为测试集。
大多数scikit-learn估计器接收和输出的数据格式均为numpy数组或类似格式。
1.2 转换器(Transformer)
转换器用于数据预处理和数据转换,主要是三个方法:
- fit():训练算法,设置内部参数。
- transform():数据转换。
- fit_transform():合并fit和transform两个方法。
1.3 流水线(Pipeline)
sklearn.pipeline包
功能:
- 跟踪记录各步骤的操作(以方便地重现实验结果)
- 对各步骤进行一个封装
- 确保代码的复杂程度不至于超出掌控范围
使用方法:
流水线的输入为一连串的数据挖掘步骤,其中最后一步必须是估计器,前几步是转换器。输入的数据集经过转换器的处理后,输出的结果作为下一步的输入。最后,用位于流水线最后一步的估计器对数据进行分类。
每一步都用元组( ‘名称’,步骤)来表示。现在来创建流水线。
scaling_pipeline = Pipeline([
('scale', MinMaxScaler()),
('predict', KNeighborsClassifier())
])
1.4 预处理
主要在sklearn.preprcessing包下。
规范化:
- MinMaxScaler :最大最小值规范化
- Normalizer :使每条数据各特征值的和为1
- StandardScaler :为使各特征的均值为0,方差为1
编码:
- LabelEncoder :把字符串类型的数据转化为整型
- OneHotEncoder :特征用一个二进制数字来表示
- Binarizer :为将数值型特征的二值化
- MultiLabelBinarizer:多标签二值化
1.5 特征
1.5.1 特征抽取
包:sklearn.feature_extraction
特征抽取是数据挖掘任务最为重要的一个环节,一般而言,它对最终结果的影响要高过数据挖掘算法本身。只有先把现实用特征表示出来,才能借助数据挖掘的力量找到问题的答案。特征选择的另一个优点在于:降低真实世界的复杂度,模型比现实更容易操纵。
一般最常使用的特征抽取技术都是高度针对具体领域的,对于特定的领域,如图像处理,在过去一段时间已经开发了各种特征抽取的技术,但这些技术在其他领域的应用却非常有限。
- DictVectorizer: 将dict类型的list数据,转换成numpy array
- FeatureHasher : 特征哈希,相当于一种降维技巧
- image:图像相关的特征抽取
- text: 文本相关的特征抽取
- text.CountVectorizer:将文本转换为每个词出现的个数的向量
- text.TfidfVectorizer:将文本转换为tfidf值的向量
- text.HashingVectorizer:文本的特征哈希
1.5.2 特征选择
包:sklearn.feature_selection
特征选择的原因如下:
(1)降低复杂度
(2)降低噪音
(3)增加模型可读性
- VarianceThreshold: 删除特征值的方差达不到最低标准的特征
- SelectKBest: 返回k个最佳特征
- SelectPercentile: 返回表现最佳的前r%个特征
单个特征和某一类别之间相关性的计算方法有很多。最常用的有卡方检验(χ2)。其他方法还有互信息和信息熵。
- chi2: 卡方检验(χ2)
1.6 降维
包:sklearn.decomposition
- 主成分分析算法(Principal Component Analysis, PCA)的目的是找到能用较少信息描述数据集的特征组合。它意在发现彼此之间没有相关性、能够描述数据集的特征,确切说这些特征的方差跟整体方差没有多大差距,这样的特征也被称为主成分。这也就意味着,借助这种方法,就能通过更少的特征捕获到数据集的大部分信息。
1.7 组合
包:**sklearn.ensemble **
组合技术即通过聚集多个分类器的预测来提高分类准确率。
常用的组合分类器方法:
(1)通过处理训练数据集。即通过某种抽样分布,对原始数据进行再抽样,得到多个训练集。常用的方法有装袋(bagging)和提升(boosting)。
(2)通过处理输入特征。即通过选择输入特征的子集形成每个训练集。适用于有大量冗余特征的数据集。随机森林(Random forest)就是一种处理输入特征的组合方法。
(3)通过处理类标号。适用于多分类的情况,将类标号随机划分成两个不相交的子集,再把问题变为二分类问题,重复构建多次模型,进行分类投票。
- BaggingClassifier: Bagging分类器组合
- BaggingRegressor: Bagging回归器组合
- AdaBoostClassifier: AdaBoost分类器组合
- AdaBoostRegressor: AdaBoost回归器组合
- GradientBoostingClassifier:GradientBoosting分类器组合
- GradientBoostingRegressor: GradientBoosting回归器组合
- ExtraTreeClassifier:ExtraTree分类器组合
- ExtraTreeRegressor: ExtraTree回归器组合
- RandomTreeClassifier:随机森林分类器组合
- RandomTreeRegressor: 随机森林回归器组合
1.8 模型评估(度量)
包:sklearn.metrics
sklearn.metrics包含评分方法、性能度量、成对度量和距离计算。
分类结果度量
参数大多是y_true和y_pred。
- accuracy_score:分类准确度
- condusion_matrix :分类混淆矩阵
- classification_report:分类报告
- precision_recall_fscore_support:计算精确度、召回率、f、支持率
- jaccard_similarity_score:计算jcaard相似度
- hamming_loss:计算汉明损失
- zero_one_loss:0-1损失
- hinge_loss:计算hinge损失
- log_loss:计算log损失
其中,F1是以每个类别为基础进行定义的,包括两个概念:准确率(precision)和召回率(recall)。准确率是指预测结果属于某一类的个体,实际属于该类的比例。召回率是被正确预测为某类的个体,与数据集中该类个体总数的比例。F1是准确率和召回率的调和平均数。
回归结果度量
- explained_varicance_score:可解释方差的回归评分函数
- mean_absolute_error:平均绝对误差
- mean_squared_error:平均平方误差
多标签的度量
- coverage_error:涵盖误差
- label_ranking_average_precision_score:计算基于排名的平均误差Label ranking average precision (LRAP)
聚类的度量
- adjusted_mutual_info_score:调整的互信息评分
- silhouette_score:所有样本的轮廓系数的平均值
- silhouette_sample:所有样本的轮廓系数
1.9 交叉验证
包:sklearn.cross_validation
- KFold:K-Fold交叉验证迭代器。接收元素个数、fold数、是否清洗
- LeaveOneOut:LeaveOneOut交叉验证迭代器
- LeavePOut:LeavePOut交叉验证迭代器
- LeaveOneLableOut:LeaveOneLableOut交叉验证迭代器
- LeavePLabelOut:LeavePLabelOut交叉验证迭代器
if name == ‘main’:
show_cross_val(“lpo”)
常用方法
- train_test_split:分离训练集和测试集(不是K-Fold)
- cross_val_score:交叉验证评分,可以指认cv为上面的类的实例
- cross_val_predict:交叉验证的预测。
1.10 网格搜索
包:sklearn.grid_search
网格搜索最佳参数
- GridSearchCV:搜索指定参数网格中的最佳参数
- ParameterGrid:参数网格
- ParameterSampler:用给定分布生成参数的生成器
- RandomizedSearchCV:超参的随机搜索
通过best_estimator_.get_params()方法,获取最佳参数。
1.11 多分类、多标签分类
包:sklearn.multiclass
- OneVsRestClassifier:1-rest多分类(多标签)策略
- OneVsOneClassifier:1-1多分类策略
- OutputCodeClassifier:1个类用一个二进制码表示
最后奉献sklearn处理数据流程图一张:
Scikit-learn方法使用总结的更多相关文章
- Scikit Learn: 在python中机器学习
转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...
- scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)
scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...
- (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探
一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...
- (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探
目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...
- Scikit Learn
Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.
- Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)
所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的 ...
- Python第三方库(模块)"scikit learn"以及其他库的安装
scikit-learn是一个用于机器学习的 Python 模块. 其主页:http://scikit-learn.org/stable/. GitHub地址: https://github.com/ ...
- 机器学习-scikit learn学习笔记
scikit-learn官网:http://scikit-learn.org/stable/ 通常情况下,一个学习问题会包含一组学习样本数据,计算机通过对样本数据的学习,尝试对未知数据进行预测. 学习 ...
- Linear Regression with Scikit Learn
Before you read This is a demo or practice about how to use Simple-Linear-Regression in scikit-lear ...
- Scikit Learn安装教程
Windows下安装scikit-learn 准备工作 Python (>= 2.6 or >= 3.3), Numpy (>= 1.6.1) Scipy (>= 0.9), ...
随机推荐
- Scrapyd 项目爬虫部署
scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API来部署爬虫项目和控制爬虫运行 scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们 安装扩展 ...
- 4.9版本的linux内核中eeprom存储芯片at24c512的驱动源码在哪里
答:drivers/misc/eeprom/at24.c,内核配置项为CONFIG_EEPROM_AT24 Location: -> Device Drivers -> Misc devi ...
- 分布式文档存储数据库(MongoDB)副本集配置
副本集特征: N 个节点的集群 任何节点可作为主节点 所有写入操作都在主节点上 自动故障转移 自动恢复 相关文章: http://www.cnblogs.com/huangxincheng/archi ...
- 谈一谈URL
作者:ManfredHu 链接:http://www.manfredhu.com/2017/08/16/22-url/index.html 声明:版权所有,转载请保留本段信息,谢谢大家 URL URL ...
- python ConfigParse模块(转)
最近写程序要用到配置文件,那么配置文件的解析就很重要了,下文转自chinaunix 一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ...
- asp.net core开发注意事项
1.类库的创建尽量选择.net standard. 如果选择.net core 则.net framework不能调用该类库, .net core和.net framework都可以调用.net st ...
- oracle 12c 报错 ora-03137 来自客户机的格式错误的TTC包被拒绝
昨天下午,实施报了一个oracle的报错ora-03137 说是数据库在11g时没有问题,升级到12c 时,就报错了. 本地调试,看到执行完sql后,报异常,如下: 把SqL在12c的数据库执行一下, ...
- How to implement multiple constructor with different parameters in Scala
Using scala is just another road, and it just like we fall in love again, but there is some pain you ...
- C和C#两种方式实现邮件的简单发送
内容为通过两种方式发送邮件--1.C语言发送邮件 2.C#发送邮件 一,C语言进行邮件的发送 C语言发送邮件的步骤的简单解析: 1.创建TCP连接 socket() 2.连接到邮箱服务器 ...
- ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbilisi, November 24, 2010
ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbil ...