sklearn中的验证
代码如下:
from sklearn.model_selection import train_test_split,cross_val_score,cross_validate # 交叉验证所需的函数
from sklearn.model_selection import KFold,LeaveOneOut,LeavePOut,ShuffleSplit # 交叉验证所需的子集划分方法
from sklearn.model_selection import StratifiedKFold,StratifiedShuffleSplit # 分层分割
from sklearn.model_selection import GroupKFold,LeaveOneGroupOut,LeavePGroupsOut,GroupShuffleSplit # 分组分割
from sklearn.model_selection import TimeSeriesSplit # 时间序列分割
from sklearn import datasets # 自带数据集
from sklearn import svm # SVM算法
from sklearn import preprocessing # 预处理模块
from sklearn.metrics import recall_score # 模型度量# 代码来自:
# https://blog.csdn.net/luanpeng825485697/article/details/79836262iris = datasets.load_iris() # 加载数据集
print('样本集大小:',iris.data.shape,iris.target.shape)# ===================================数据集随机划分,训练模型==========================
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.4, random_state=0)
# 交叉验证划分训练集和验证集.test_size为测试集所占的比例print('训练集大小:',X_train.shape,y_train.shape) # 训练集样本大小
print('测试集大小:',X_test.shape,y_test.shape) # 测试集样本大小
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train) # 使用训练集训练模型print('准确率:',clf.score(X_test, y_test))#测试完了顺便计算下score
# 上述代码中的测试指的是验证的意思。# 如果涉及到归一化,则在测试集上也要使用训练集模型提取的归一化函数。
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)) # 计算验证集的度量值(准确度)
# X_test_transformed是输入的验证数据
# y_test是验证数据集的标签print("---------------------------K折交叉验证、留一交叉验证、留p交叉验证、随机排列交叉验证---------------------------")
# k折划分子集
kf = KFold(n_splits=3)
for train, test in kf.split(iris.data):print("k折划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------留一划分子集---------------------------")
loo = LeaveOneOut()
for train, test in loo.split(iris.data):print("留一划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------留p划分子集---------------------------")
lpo = LeavePOut(p=5)
for train, test in lpo.split(iris.data):print("留p划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------随机排列划分子集????---------------------------")
ss = ShuffleSplit(n_splits=3, test_size=0.25,random_state=0)
for train_index, test_index in ss.split(iris.data):print("随机排列划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------分层K折交叉验证、分层随机交叉验证---------------------------") skf = StratifiedKFold(n_splits=3) #各个类别的比例大致和完整数据集中相同
for train, test in skf.split(iris.data, iris.target):print("分层K折划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------分层K折交叉验证、分层随机交叉验证(shuffle洗牌版本)---------------------------")
skf = StratifiedShuffleSplit(n_splits=3) # 划分中每个类的比例和完整数据集中的相同
for train, test in skf.split(iris.data, iris.target):print("分层随机划分:%s %s" % (train.shape, test.shape))breakprint("##############################组 k-fold交叉验证、留一组交叉验证、留 P 组交叉验证、Group Shuffle Split##############################")
X = [0.1, 0.2, 2.2, 2.4, 2.3, 4.55, 5.8, 8.8, 9, 10]#10个数据
y = ["a", "b", "b", "b", "c", "c", "c", "d", "d", "d"]
groups = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3]#这个groups的含义是:
#n_splits这里表示分成3份,其中两份归train,一份数据归test,train和test不能在同一组(也就是每条数据对应的group数值必须不一样)
# 但是有的时候n_splits的变化并不会生效。
print("-----------k折分组------------")
gkf = GroupKFold(n_splits=3) # 训练集和测试集属于不同的组
# 分割的时候n_splits≤groups中的取值种数
for train, test in gkf.split(X, y, groups=groups):print("组 k-fold分割:%s %s" % (train, test))print("train=",train)print("test=",test)print("-----------留一分组------------")
logo = LeaveOneGroupOut()
for train, test in logo.split(X, y, groups=groups):print("留一组分割:%s %s" % (train, test))print("-----------留p分组------------")
lpgo = LeavePGroupsOut(n_groups=2)
for train, test in lpgo.split(X, y, groups=groups):print("留 P 组分割:%s %s" % (train, test))print("-----------随机分组------------")
gss = GroupShuffleSplit(n_splits=4, test_size=0.5, random_state=0)
for train, test in gss.split(X, y, groups=groups):print("随机分割:%s %s" % (train, test))# # print("##############################时间序列分割##############################")
# #整个数据集按时间顺序切3刀,得到4份,最后一份留作验证
# tscv = TimeSeriesSplit(n_splits=3)
# # TimeSeriesSplit(max_train_size=None, n_splits=3)
# for train, test in tscv.split(iris.data):
# print("时间序列分割:%s %s" % (train, test))
sklearn中的验证相关推荐
- sklearn中的交叉验证(Cross-Validation)
sklearn中的交叉验证(Cross-Validation) cross validation大概的意思是:对于原始数据我们要将其一部分分为traindata,一部分分为test data.trai ...
- TF-IDF 原理及sklearn中的tf-idf实例分析
背景介绍 在一个大的文本语料库中,一些单词将出现很多次(例如 "the", "a", "is" 是英文),因此对文档的实际内容没有什么有意义 ...
- sklearn中的xgboost_xgboost来了
一.xgboost前奏 1,介绍一下啥是xgboost XGBoost全称是eXtreme Gradient Boosting,即极限梯度提升算法.它由陈天奇所设计,致力于让提升树突破自身的计算极限, ...
- 一个例子来使用sklearn中的TfidfVectorizer
TfidfVectorizer 作用 将文本进行向量化表示. 原理 这里的tf(term frequency)是词的频数,idf(inverse document frequency)是这个词的逆文档 ...
- Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略
Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略 目录 sklearn中的train_test_split函数的简介 train_tes ...
- Sklearn中的CV与KFold详解
关于交叉验证,我在之前的文章中已经进行了简单的介绍,而现在我们则通过几个更加详尽的例子.详细的介绍 CV %matplotlib inline import numpy as np from skle ...
- sklearn中的分类决策树
决策树 决策树简介 决策树是一种使用if-then-else的决策规则的监督学习方法. 其三要素为,枝节点,叶节点与分支条件,同时为了减少过拟合还有剪枝方法 为了便于记忆,可以称其为一方法三要素 决策 ...
- sklearn中GBDT的一些参数、属性、方法的理解
文章目录 GBDT 分类器 引入 重要参数 loss learning_rate subsample n_estimators criterion max_depth min_samples_leaf ...
- sklearn 中的线性回归、岭回归、Lasso回归参数配置及示例
文章目录 线性回归 引入 重要参数 重要属性 重要方法 例子 岭回归 引入 重要参数 重要属性 重要方法 示例 Lasso 回归 引入 重要参数 重要属性 重要方法 示例 本文主要讲一些sklearn ...
最新文章
- libev源码解析——定时器原理
- 中科院在2017年高被引科学家遴选中表现优异
- 云栖专辑|阿里开发者们的第二个感悟:PG大V德哥的使命感与开放心态
- mysql修改数据库名字_mysql 数据库修改名字
- 拖尾因子大怎么调整_乳房松弛下垂怎么改善?怎么快速调整乳房松弛下垂?
- C#中将字符串内容写入到txt文件中
- Eclipe 新建maven web 项目
- 商城计价中心 - 从容应对复杂场景价格计算
- 【转】软件需求分析方法
- “管理”解读——浅谈国内IT服务管理产品标准建立的必要性(之一)
- 史上最惨锦鲤即将来袭!奖品堪比5年高考3年模拟!
- 人工智能的本源与展望:从亚里士多德到平行智能
- 未来的云计算基础设施长什么样?
- EXCEL图表技巧:选择合适图表最全指南,建议收藏
- taobao API open淘宝 错误码一览表
- 基于mfc实现画图软件
- html怎么给图片加动画效果,html5怎么添加图片动画效果
- 【译】网页像素追踪原理
- 竞价推广过程中最难的问题是什么?
- 多边形颜色填充-X扫描线算法
热门文章
- SQLite数据库的简单读写操作
- c#操作word表格
- 浅析C++ Compile-time Assertion技术
- Vue项目实战08 : vue之mixin理解与使用
- mysql安装连接测试c_Ubuntu 12.04下安装mysql并用C程序测试连接
- mysql select 查询选后5个_mysql 查询select语句汇总
- 微博 用户画像_“肖战”被抵制?Python爬虫揭秘肖战粉丝的人群画像
- VuePress 添加百度统计代码
- 如何设置顶部和底部固定,中间填满
- 判断true的正确做法