机器学习之路02——模型评估之“交叉验证法(cross )”

先将数据集D划分为k个大小相似的互斥子集,即D=D~1∪D~2...∪D~k,D~i∩D~j=⊙(i≠j).每个子集D~i都尽可能保持数据分布的一致性,即从D中通过分层采样得到,然后,每次用k—1个子集的并集作为训练集,剩余的那个子集作为测试集(k组训练/测试集),从而可进行k次训练和测试,最终返回的就是这k个测试结果的均值
注意:
1.常见的为“10折交叉验证”
2.为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终结果是这p次k折交叉验证结果的均值
3.假定数据集D中包含m个样本,若另k=m,=>得到一个特例:留一法(Leave-One-Out,LOO),留一法不受随机样本划分方式的影响,因为m个样本只有唯一方式划分为m个子集——每个子集包含一个样本;留一法使用的训练集与初始数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似,因此,留一法的评估往往被认为比较准确,其缺陷是:在数据集较大时,训练m个模型的计算开销很大,也并不一定比其他评估方法准确
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数据归一化是指将数据按照一定的比例缩放,使其落入特定的范围,常用的方有MinMaxScaler、StandardScaler等。下面是使用MinMaxScaler对数据进行归一化的Python代码示例: ```python from sklearn.preprocessing import MinMaxScaler import numpy as np # 假设原始数据为一个二维数组X,每列为一个特征 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 创建MinMaxScaler对象 scaler = MinMaxScaler() # 对数据进行归一化 X_normalized = scaler.fit_transform(X) print(X_normalized) ``` PLSR(Partial Least Squares Regression)是一种回归分析方,它可以在存在多个自变量之间高度相关的情况下进行建模。交叉验证是一种评估模型性能的方,通过将数据集划分为训练集和测试集,并多次重复该过程,以获得更准确的模型评估结果。下面是使用PLSR进行交叉验证并绘制图形的Python代码示例: ```python from sklearn.cross_decomposition import PLSRegression from sklearn.model_selection import cross_val_predict from sklearn.metrics import r2_score import matplotlib.pyplot as plt # 假设原始数据为一个二维数组X,每列为一个自变量,最后一列为因变量 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) y = np.array([10, 20, 30]) # 创建PLSR对象 pls = PLSRegression(n_components=2) # 进行交叉验证并预测 y_pred = cross_val_predict(pls, X, y, cv=5) # 计算R^2评分 r2 = r2_score(y, y_pred) # 绘制真实值和预测值的散点图 plt.scatter(y, y_pred) plt.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=2) plt.xlabel('True values') plt.ylabel('Predicted values') plt.title(f'PLSR Cross-validation (R^2={r2:.2f})') plt.show() ``` 以上代码示例中,假设原始数据X为一个3x3的二维数组,每行代表一个样本,每列代表一个自变量,最后一列代表因变量。在PLSR中,设置了n_components参数为2,表示使用两个主成分进行建模。通过交叉验证得到预测结果y_pred,并计算了R^2评分。最后,使用matplotlib库绘制了真实值和预测值的散点图,并标注了R^2值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值