函数1:train_test_split

from sklearn.model_selection import train_test_split # 数据划分所需的函数X_train, X_test, y_train, y_test = train_test_split(train_data, train_target, test_size=0.4, random_state=0)
# 划分训练集和测试集.test_size为测试集所占的比例
print('训练集大小:',X_train.shape,y_train.shape)  # 训练集样本大小
print('测试集大小:',X_test.shape,y_test.shape)  # 测试集样本大小

train_test_split 函数用于随机划分训练集和测试集的函数,其中参数:

  • train_data:样本特征集
  • train_target:样本的标签集
  • test_size:样本占比,测试集占数据集的比重,如果是整数的话就是样本的数量
  • random_state:是随机数的种子。在同一份数据集上,相同的种子产生相同的结果,不同的种子产生不同的划分结果
  • x_train,y_train:构成了训练集
  • x_test,y_test:构成了测试集

此外,该函数还存在一个参数stratify:是为了保持split前类的分布。比如有100个数据,80个属于A类,20个属于B类。如果train_test_split(test_size=0.25, stratify = y_all), 那么split之后数据如下:
training: 75个数据,其中60个属于A类,15个属于B类。
testing: 25个数据,其中20个属于A类,5个属于B类。

用了stratify参数,training集和testing集的类的比例是 A:B= 4:1,等同于split前的比例(80:20)。通常在这种类分布不平衡的情况下会用到stratify。

函数2:StandardScaler

#  如果涉及到归一化,则在测试集上也要使用训练集模型提取的归一化函数。
from sklearn import preprocessing  # 预处理模块
scaler = preprocessing.StandardScaler().fit(X_train)  # 通过训练集获得归一化函数模型,在训练集和测试集上都使用这个归一化函数
X_train_transformed = scaler.transform(X_train)
clf = svm.SVC(kernel='linear', C=1).fit(X_train_transformed, y_train) # 使用训练集训练模型X_test_transformed = scaler.transform(X_test)
print(clf.score(X_test_transformed, y_test))  # 计算测试集的度量值(准确度) 可见归一化后结果未必好

为什么要进行归一化?

  1. 归一化后加快了梯度下降求最优解的速度;如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。
  2. 归一化有可能提高精度;一些分类器需要计算样本之间的距离(如欧氏距离)如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

哪些机器学习算法不需要(需要)做归一化?

概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。

归一化方法

作用:去均值和方差归一化,且是针对每一个特征维度来做的,而不是针对样本。 标准差标准化(standardScale)使得经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:该值减去均值除以标准差!

其他的归一化类型

  • 线性归一化

这种归一化方法比较适用在数值比较集中的情况。缺陷:如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。实际使用中可以用经验常量值来替代max和min。

  • 非线性归一化

经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线

函数3:

# ===================================直接调用交叉验证评估模型==========================
from sklearn.model_selection import cross_val_score # 交叉验证所需的函数
clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, iris.data, iris.target, cv=5)
#参数分别是:模型,数据,标签,迭代次数print(scores)  # 打印输出每次迭代的度量值(准确度)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))  # 获取置信区间。(也就是均值和方差)

交叉验证优点:

1:交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。
2:还可以从有限的数据中获取尽可能多的有效信息。

此外还有一个KFold:

kfold是将数据集划分为K-折,只是划分数据集;

cross_val_score是根据模型进行计算,计算交叉验证的结果,你可以简单认为就是cross_val_score中调用了kfold进行数据集划分。

交叉学习验证 西瓜书_机器学习:数据划分与交叉验证相关推荐

  1. 周志华西瓜书《机器学习》习题提示——第2章

    2.1:分层采样, [ ( 500 500 × 70 % ) ] 2 \left[ \binom{500}{500\times 70\%} \right]^2 [(500×70%500​)]2 2.2 ...

  2. 机器学习学习笔记-西瓜书

    #西瓜书笔记 文章目录 模型评估和选择 线性模型 决策树 神经网络 支持向量机 贝叶斯分类 集成学习 聚类 性能度量与距离计算 原型聚类 密度聚类 层次聚类 降维与度量学习 特征选择与稀疏学习 计算学 ...

  3. 【机器学习】聚类学习笔记+西瓜书数据集K-means实现

    聚类 聚类的提出 聚类的是目标通过对无标记训练样本的学习来揭示数据内部潜在性质及规律. 在机器学习中有: 监督学习 无监督学习 强化学习 聚类则属于无监督学习,挖掘数据之间的隐含特征,其作为其他学习任 ...

  4. 西瓜书_学习任务_更新至9.5号

    任务1 西瓜书3.1/3.2/3.3 章节学习 描述对数几率回归算法的过程 任务2 详细解释逻辑回归模型中每个超参的意义 任务3 西瓜书3.3节的扩展内容:softmax回归和3.6节学习 任务4 理 ...

  5. 【机器学习】西瓜书_周志华,python实现基于信息熵进行划分选择的决策树算法

    python:实现基于信息熵进行划分选择的决策树算法 本文主要介绍本人用python基于信息熵进行划分选择的决策树代码实现,参考教材为西瓜书第四章--决策树.ps.本文只涉及决策树连续和离散两种情况, ...

  6. 霍夫丁不等式(Hoeffding‘s inequality)-集成学习拓展-西瓜书式8.3

    本文参考书目: 书名:机器学习中的数学修炼 作者:左飞 1.引入 假设有一个罐子,其中装有绿色和橘色两种颜色的小球.其中橘色小球所占比例u未知,为了推测这个未知的u,可以从罐子里面随机抽取一组样本,在 ...

  7. 机器学习_周志华_西瓜书_学习笔记_第二章--模型的评估与选择

    2 模型的评估与选择 2.1 误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异成为:误差(error).定义: 在训练集上的误差称为训练误差(training error)或经验 ...

  8. 集成学习(西瓜书学习)

    集成学习 概述 一.Boosting 1.Boosting 2.GBDT (Gradient Boosting Decision Tree) 3.XGBoost(Extreme Gradient Bo ...

  9. 零基础学习python入门书_零基础学习Python不可错过的5本书籍

    原标题:零基础学习Python不可错过的5本书籍 Python作为目前编程开发的主流语言之一,在企业中的应用范围越来越广,广阔的发展前景吸引了很多小伙伴想要入行Python,下面小U就为大家介绍一下零 ...

最新文章

  1. python爬取动态网页图片_python爬虫之爬取动态加载的图片_百度
  2. 数据中心网络组网的不同方案
  3. JVM -- Java虚拟机
  4. RunJar是什么进程?
  5. sqlserver 事务日志 异常增长原因排查_小白入门学习打日志
  6. spring aop实现原理_Spring 异步实现原理与实战分享
  7. 初识 JAVA IO
  8. 按键精灵定义全局变量_按键精灵中如何定义和使用变量
  9. vba 判断是否为数字
  10. AIRSDK 3.7 加载远程的含有代码的swf文件
  11. 2013程序员考证下午题练习
  12. 技术分享 | Online DDL 工具 gh-ost
  13. c语言错误1083,terminal services 无法启动,尝试启动报错误1083
  14. 2021-2025年中国共享Web托管服务行业市场供需与战略研究报告
  15. Power BI报表常见格式 1 - 报告
  16. 虚拟服务器liter,liter_sheng
  17. FC200 长广防盗维修专家
  18. MySQL千万级别表数据中提高RAND随机查询的实验
  19. 中科创达邹鹏程:与openEuler的结缘并非偶然,操作系统的未来离不开创新
  20. 狂风暴雨——雨过天晴篇:数据流层发布

热门文章

  1. CentOS 7安装配置vsftpd做FTP服务
  2. Rails核心成员纷纷离职,“推手”竟是其创始人?
  3. 从 Windows 切换到 Mac,这些不能错过的 Tips
  4. 六招制敌,搞定 core dump 问题
  5. 阿里云技术天团空降 CSDN 独家在线峰会,揭秘核心竞争力
  6. AI 实战:GPS实景识别网络项目(源码共享)
  7. 只需三种手段,将传统的网站的性能提高 24%!
  8. 开发者应当熟知的 C# 序列化和反序列化
  9. 挚同道合,物所不能!挚物·AIoT产业领袖峰会报名进入倒计时!
  10. 华为最强自研 NPU 问世,麒麟 810 测评远超骁龙系列!