当前位置: 首页 > article >正文

模型的评估与选择——交叉验证(基于Python实现)

模型的评估与选择——交叉验证

1. 交叉验证-模拟1

交叉验证是一种用于估计机器学习模型性能的统计方法。它涉及将数据划分为子集,在一些子集上训练模型,并在剩余的子集上验证模型。这个过程会重复多次,以确保模型的性能是一致的,并且不依赖于特定的数据子集。

以下是最常见的交叉验证技术的简要概述:

  1. K折交叉验证:将数据分成k个大小相等的折叠。模型在k-1个折叠上训练,并在剩余的一个折叠上验证。这个过程重复k次,每个折叠恰好用一次作为验证数据。

  2. 留一法交叉验证(LOOCV):k折交叉验证的一种特殊情况,其中k等于数据点的数量。每个数据点恰好用一次作为验证集,模型在剩余的数据上训练。

  3. 分层K折交叉验证:类似于k折交叉验证,但折叠的创建方式使得每个折叠中的类别比例与原始数据集中的比例相同。这对于不平衡数据集特别有用。

  4. 时间序列交叉验证:用于时间序列数据,其中数据点的顺序很重要。数据被分成训练和验证集,方式是尊重时间顺序。

以下是使用scikit-learn在Python中进行k折交叉验证的示例:

import numpy as np
from sklearn.model_selection import KFold
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 样本数据
X = np.random.rand(100, 5)
y = np.random.rand(100)

# K折交叉验证
kf = KFold(n_splits=5)
model = LinearRegression()
mse_scores = []

for train_index, test_index in kf.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]

    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    mse_scores.append(mean_squared_error(y_test, y_pred))

print("每个折叠的均方误差:", mse_scores)
print("平均均方误差:", np.mean(mse_scores))

这段代码演示了如何执行k折交叉验证来评估线性回归模型的性能。

#生成数据
# 模拟1
import random
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier

nq=5000
Q=np.empty((50,nq))
for i in range(50):
    for j in range(nq):
        Q[i,j]=random.gauss(0,1)
N1=np.zeros(25)
N2=np.ones(25)
N=np.hstack((N1,N2))
random.shuffle(N) #打乱成数组或列表
# 交叉验证
b=np.empty(nq)
nc=100
for i in range(nq):
  b[i]=np.corrcoef(N,Q[:,i]

http://www.kler.cn/a/406268.html

相关文章:

  • OpenCV相机标定与3D重建(3)校正鱼眼镜头畸变的函数calibrate()的使用
  • Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
  • 区块链网络示意图;Aura共识和Grandpa共识(BFT共识)
  • 游戏陪玩系统开发功能需求分析
  • wsl虚拟机中的dockers容器访问不了物理主机
  • 如何删除Kafka中的数据以及删除topic
  • Vue3项目实战(vue3+vite+pinia+element-plus+axios+mock)
  • DBeaver错误:Public Key Retrieval is not allowed
  • 人工智能|计算机视觉——微表情识别(Micro expression recognition)的研究现状
  • 智慧营区整体解决方案
  • 04高可用高并发(D2_高可用 - D1_负载均衡)
  • 二次封装的天气时间日历选择组件
  • 鸿蒙安全控件之粘贴控件简介
  • 通威传媒:移动AI数字人OLED透明屏应用案例
  • FPGA 第十讲 避免latch的产生
  • 太速科技-232-基于FMC的2收2发TLK2711子卡
  • Go语言的并发与管道
  • 【头歌实训:利用kmp算法求子串在主串中不重叠出现的次数】
  • 使用 前端技术 创建 QR 码生成器 API1
  • HTML详解(1)
  • 『 Linux 』网络层 - IP协议(一)
  • wireshark网络安全流量分析基础
  • 量化交易系统开发-实时行情自动化交易-3.4.3.4.期货衍生数据
  • 沥川的算法学习笔记:基础算法(3)----高精度算法
  • C++学习 - 03(单例模式)
  • 蓝队技能-应急响应篇Rookit后门进程提取网络发现隐藏技术Linux杀毒OpenArk