终于把机器学习中的交叉验证搞懂了!!

  • 电脑网络维修
  • 2024-11-15
Google 开发者在线课程 开局学习

终于把机器学习中的交叉验证搞懂了!!

交叉验证是机器学习中用于评价模型泛化才干的一种方法,用于权衡模型在训练集之外的新数据上的体现。

当天给大家分享机器学习中的一个关键概念,交叉验证。

交叉验证是机器学习中用于评价模型泛化才干的一种方法,用于权衡模型在训练集之外的新数据上的体现。

它的外围现实是将数据集划分为多个子集,模型在不同的子集上交替启动训练和测试,从而缩小模型在某一特定数据宰割上的偏向。交叉验证能够有效地降低模型过拟合的危险,从而提高模型评价的稳固性和牢靠性。

K 折交叉验证将数据集分红 K 个不堆叠的子集(折),每次将其中一个子集(折)作为测试集,其他 K-1 个折作为训练集。

重复这个环节 K 次,每次用不同的折作为测试集,最终将 K 次测试的结果平均,以获取模型的总体性能。

好处

缺陷

from sklearn.model_selection import KFold, cross_val_scorefrom sklearn.datasets import load_irisfrom sklearn.ensemble import RandomForestClassifier# 加载数据data = load_iris()X, y =>

留一交叉验证是 K 折交叉验证的极其方式,其中 K 等于样本总数 N。

每次选取一个样本作为测试集,其他 N-1 个样本作为训练集,重复该环节 N 次,最后计算平均误差。

好处

缺陷

from sklearn.model_selection import LeaveOneOutfrom sklearn.datasets import load_irisfrom sklearn.ensemble import RandomForestClassifier# 加载数据data = load_iris()X, y =>

疏导法经过有放回地从原始数据集中抽取样本,生成多个子样本(通常与原始数据集大小相反)。

每次从生成的样本中训练模型,未被抽中的样本(称为“包外样本”)作为测试集。

重复该环节屡次,并对屡次测试结果启动平均。

好处

缺陷:

import numpy as npfrom sklearn.utils import resamplefrom sklearn.metrics import accuracy_scorefrom sklearn.ensemble import RandomForestClassifierfrom sklearn.datasets import load_iris# 加载数据data = load_iris()X, y =>

嵌套交叉验证关键用于模型选用和超参数优化。

外层交叉验证用于评价模型的性能,内层交叉验证用于选用模型的最佳超参数。

详细来说,外层将数据分红多个折,每个折作为验证集,残余部分作为训练集;而在每个外层折的训练集中,又经常使用内层交叉验证启动超参数搜查。

好处

缺陷

from sklearn.model_selection import GridSearchCV, cross_val_score, KFoldfrom sklearn.datasets import load_irisfrom sklearn.ensemble import RandomForestClassifier# 加载数据data = load_iris()X, y =>

分层交叉验证是一种不凡的交叉验证方法,特意实用于分类义务。

在分层交叉验证中,每个折内的类别散布与整个数据集的类别散布相反,从而在不同折中坚持相对分歧的标签散布,防止模型评价由于类别失衡而发生偏向。

好处

缺陷

from sklearn.model_selection import StratifiedKFold, cross_val_scorefrom sklearn.ensemble import RandomForestClassifierfrom sklearn.datasets import load_iris# 加载数据集data = load_iris()X, y =>

期间序列交叉验证是一种专门用于期间序列数据的模型评价方法。与传统交叉验证方法(如 K 折交叉验证)不同,期间序列交叉验证遵照期间的人造顺序,从过去到未来逐渐划分数据。这种方法实用于期间序列预测义务,能够防止将未来的数据走漏到模型训练环节中,从而保障模型的实在性能评价。

期间序列交叉验证的罕用方法

滚动预测法

在滚动预测法中,每次划分训练和测试集时,训练集的大小坚持不变,仅在期间上向前滚动。每次只经常使用最新的训练集数据来预测未来的测试集数据。适宜模拟模型实时滚动预测的状况。

优缺陷:

import numpy as npfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_error# 创立期间序列数据X = np.arange(1, 101).reshape(-1, 1)# 1到100的期间序列y = X.flatten() + np.random.normal(scale=5, size=X.shape[0])# 参与噪声# 定义滚动窗口的大小window_size = 20# 每次训练的窗口大小# 初始化模型model = LinearRegression()# 存储预测结果和误差predictions = []errors = []# 滚动窗口法启动预测for i in range(len(X) - window_size - 1):# 定义训练集和测试集X_train = X[i : i + window_size]y_train = y[i : i + window_size]X_test = X[i + window_size : i + window_size + 1]y_test = y[i + window_size : i + window_size + 1]# 训练模型model.fit(X_train, y_train)# 启动预测y_pred = model.predict(X_test)# 记载预测和误差predictions.append(y_pred[0])mse = mean_squared_error(y_test, y_pred)errors.append(mse)print(f"Window {i+1}: Predicted = {y_pred[0]:.2f}, Actual = {y_test[0]:.2f}, MSE = {mse:.2f}")# 计算平均误差average_mse = np.mean(errors)print(f"\nAverage MSE over all windows: {average_mse:.2f}")

扩展窗口法

在扩展窗口法中,训练集会随着期间始终扩展,即每次训练时,训练集蕴含更常年间段的数据,而测试集仍为后续的一小部分数据。这种方法能让模型在预测时应用更多历史数据。

优缺陷

from sklearn.model_selection import TimeSeriesSplitfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_errorimport numpy as np# 创立期间序列数据X = np.arange(1, 101).reshape(-1, 1)y = X.flatten() + np.random.normal(scale=5, size=X.shape[0])# 经常使用TimeSeriesSplit成功滚动预测法tscv = TimeSeriesSplit(n_splits=5)model = LinearRegression()for train_index, test_index in tscv.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)print("Test MSE:", mean_squared_error(y_test, y_pred)
  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/7722.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号