首页 > 其他分享 >实验4-交叉验证

实验4-交叉验证

时间:2024-05-14 21:54:01浏览次数:22  
标签:iris 交叉 验证 print shape train 实验 split test

VMware虚拟机 Ubuntu20-LTS

python3.6

tensorflow1.15.0

keras2.3.1

运行截图:

 

代码:

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  # 模型度量

iris = 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))  # 计算测试集的度量值(准确率)


#  如果涉及到归一化,则在测试集上也要使用训练集模型提取的归一化函数。
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))  # 计算测试集的度量值(准确度)

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

# ===================================多种度量结果======================================
scoring = ['precision_macro', 'recall_macro'] # precision_macro为精度,recall_macro为召回率
scores = cross_validate(clf, iris.data, iris.target, scoring=scoring,cv=5, return_train_score=True)
sorted(scores.keys())
print('测试结果:',scores)  # scores类型为字典。包含训练得分,拟合次数, score-times (得分次数)


# ==================================K折交叉验证、留一交叉验证、留p交叉验证、随机排列交叉验证==========================================
# k折划分子集
kf = KFold(n_splits=2)
for train, test in kf.split(iris.data):
    print("k折划分:%s %s" % (train.shape, test.shape))
    break

# 留一划分子集
loo = LeaveOneOut()
for train, test in loo.split(iris.data):
    print("留一划分:%s %s" % (train.shape, test.shape))
    break

# 留p划分子集
lpo = LeavePOut(p=2)
for train, test in loo.split(iris.data):
    print("留p划分:%s %s" % (train.shape, test.shape))
    break

# 随机排列划分子集
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))
    break

# ==================================分层K折交叉验证、分层随机交叉验证==========================================
skf = StratifiedKFold(n_splits=3)  #各个类别的比例大致和完整数据集中相同
for train, test in skf.split(iris.data, iris.target):
    print("分层K折划分:%s %s" % (train.shape, test.shape))
    break

skf = StratifiedShuffleSplit(n_splits=3)  # 划分中每个类的比例和完整数据集中的相同
for train, test in skf.split(iris.data, iris.target):
    print("分层随机划分:%s %s" % (train.shape, test.shape))
    break


# ==================================组 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]
y = ["a", "b", "b", "b", "c", "c", "c", "d", "d", "d"]
groups = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3]

# k折分组
gkf = GroupKFold(n_splits=3)  # 训练集和测试集属于不同的组
for train, test in gkf.split(X, y, groups=groups):
    print("组 k-fold分割:%s %s" % (train, test))

# 留一分组
logo = LeaveOneGroupOut()
for train, test in logo.split(X, y, groups=groups):
    print("留一组分割:%s %s" % (train, test))

# 留p分组
lpgo = LeavePGroupsOut(n_groups=2)
for train, test in lpgo.split(X, y, groups=groups):
    print("留 P 组分割:%s %s" % (train, test))

# 随机分组
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))


# ==================================时间序列分割==========================================
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))

 

标签:iris,交叉,验证,print,shape,train,实验,split,test
From: https://www.cnblogs.com/liucaizhi/p/18192327

相关文章

  • 实验6-使用TensorFlow完成线性回归
    VMware虚拟机Ubuntu20-LTSpython3.6tensorflow1.15.0keras2.3.1运行截图:  代码: %matplotlibinlineimportnumpyasnpimporttensorflowastfimportmatplotlib.pyplotaspltplt.rcParams["figure.figsize"]=(14,8)n_observations=100xs=np.li......
  • 实验7-使用TensorFlow完成MNIST手写体识别
    VMware虚拟机Ubuntu20-LTSpython3.6tensorflow1.15.0keras2.3.1运行截图:  代码:importosos.environ['TF_CPP_MIN_LOG_LEVEL']='2'importnumpyasnpimporttensorflowastffromtensorflow_core.examples.tutorials.mnistimportinput_datai......
  • 实验1-波士顿房价预测
    VMware虚拟机Ubuntu20-LTSpython3.6tensorflow1.15.0keras2.3.1运行截图 代码:fromsklearn.linear_modelimportLinearRegression,SGDRegressor,Ridge,LogisticRegressionfromsklearn.datasetsimportload_bostonfromsklearn.model_selectionimporttrain_tes......
  • 实验2-鸢尾花分类
    VMware虚拟机Ubuntu20-LTSpython3.6tensorflow1.15.0keras2.3.1运行截图: 代码:fromsklearnimportdatasetsimportmatplotlib.pyplotaspltimportnumpyasnpfromsklearnimporttree#Iris数据集是常用的分类实验数据集,#由Fisher,1936收集整理。Iris也称鸢......
  • springboot国际化的使用(一_验证OK
    https://blog.csdn.net/weixin_39960529/article/details/86571962 步骤:1.首先建立一个meven项目2.在pom.xml中加如下依赖:<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-thymeleaf</artifactI......
  • 哈工大软件构造实验一报告
    2024年春季学期计算学部《软件构造》课程Lab1实验报告姓名 张皓涵学号 2022111897班号 2237102电子邮件 [email protected]手机号码 15134623385目录1实验目标概述 12实验环境配置 13实验过程 13.1MagicSquares 13.1.1isLegalMagicSquare() 13.1.2generateM......
  • TypeScript 的联合类型、交叉类型、映射类型
    当使用TypeScript时,联合类型、交叉类型和映射类型是常见的高级类型概念,它们提供了强大的工具来处理各种复杂的类型情况。###联合类型(UnionTypes):联合类型允许一个值属于多个类型之一。使用`|`符号来表示联合类型。例如:```typescriptletvalue:string|number;value="......
  • 第十一周实验
    Pixso特点实时协作——让所有人聚焦同一个目标当面对一个复杂的设计项目时,通过链接邀请团队成员,进行多人云端协作设计,实时同步字号、边框、颜色等各种细节。智能UI设计工具——快速上手专业技能传统产品,往往要多个工具协作才能预期效果。而Pixso自带组件变体、自动布局等......
  • k8s——configmap-secret-nginx实验
    简介configmapsecret一、实验环境二、实验描述三、实验1:步骤1.使用configmap投射到nginx.conf配置文件到pod里1.1需要准备nginx.conf配置文件1.2将nginx.conf内容存放到configmap里(通过文件的方式,,这样简单一点)1.3启动ngnix的pod,使用configmap里的nginx.conf配置文件2.......
  • FPGA/EDA实验箱-竞赛普及版(ALTERA)
    型号:XQEP4CE-TEBV6.11、产品概述FPGA/EDA实验箱是一款FPGA教学实验系统,由FPGA开发板、显示屏、下载器、应用模块及相关实验配件组成;FPGA开发板采用底板+核心板的设计架构,核心板板采用是六层PCB设计,采用大容量管脚更多的BGA封装,F484封装,使整个核心板的性能和稳定性有了很大的提......