leave-one-out cross-validation python代码
时间: 2023-08-10 14:04:07 浏览: 160
python 的一个代码
下面是一个简单的 Python 代码实现 leave-one-out cross-validation:
```python
from sklearn.model_selection import LeaveOneOut
from sklearn.linear_model import LinearRegression
import numpy as np
# 生成一些随机数据
X = np.random.rand(10, 3)
y = np.random.rand(10)
loo = LeaveOneOut()
# 定义模型
model = LinearRegression()
# 进行 leave-one-out cross-validation
scores = []
for train_index, test_index in loo.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)
score = model.score(X_test, y_test)
scores.append(score)
# 输出结果
print("Mean R^2 score: ", np.mean(scores))
```
在这个例子中,我们使用了 scikit-learn 提供的 LeaveOneOut 类来实现 leave-one-out cross-validation。我们将数据集 X 和标签 y 分别传递给 LeaveOneOut 的 split 方法,它会返回一个迭代器,用于在每次迭代中选择一个样本作为测试集,其余样本作为训练集。
然后,我们可以在每个迭代中使用 train_index 和 test_index 来从原始数据集中获取训练集和测试集。我们使用 LinearRegression 来训练模型,并在测试集上计算 $R^2$ 分数。最后,我们将所有分数的平均值作为最终的模型性能评估指标。
阅读全文