【机器学习】西瓜书习题3.4Python编程比较 10 折交叉验证法和留一法所估计出的对率回归的错误率

3.4 选择两个 UCI 数据集,比较 10 折交叉验证法和留一法所估计出的对率回归的错误率.

参考代码

结合自己的理解,添加注释。

数据集链接,下载后的数据在后缀名是data的文件中,使用记事本打开,本次解题需要去掉第一行属性名称,再保存为txt格式文件。

代码

  1. 导入相关库
python 复制代码
import numpy as np
import pandas as pd
from sklearn import linear_model
from sklearn.model_selection import LeaveOneOut
from sklearn.model_selection import cross_val_score
  1. 读取数据,处理数据
python 复制代码
data_path = r'Transfusion.txt'
# 读取数据,将数据强制转换为int型
data = np.loadtxt(data_path, delimiter=',').astype(int)
# 前4列(属性值)赋值给X,第5列赋值给y(label值)
X = data[:, :4]
y = data[:, 4]

m, n = X.shape
# normalization,标准化,将数据减去均值,再除以方差,将数据平均数变成0,标准差变成1
X = (X - X.mean(0)) / X.std(0)
# np.arange返回一个有终点和起点的固定步长的排列(可理解为一个等差数组)
index = np.arange(m)
# shuffle打乱index排列
np.random.shuffle(index)
# 将数据按照打乱后的index重新排列
X = X[index]
y = y[index]
  1. 计算十折交叉验证的平均准确度
python 复制代码
# 使用sklarn 中自带的api先
# k-10 cross validation
lr = linear_model.LogisticRegression(C=2)  # C越大表示正则化程度越低
score = cross_val_score(lr, X, y, cv=10)
print(score.mean())

结果

复制代码
0.7674234234234236
  1. 使用留一法验证的平均准确度
python 复制代码
# 留一法leave-one-out
loo = LeaveOneOut()

accuracy = 0
for train, test in loo.split(X, y):
    lr_ = linear_model.LogisticRegression(C=2)
    X_train = X[train]
    X_test = X[test]
    y_train = y[train]
    y_test = y[test]
    lr_.fit(X_train, y_train)

    accuracy += lr_.score(X_test, y_test)

print(accuracy / m)

结果

复制代码
0.7687165775401069
相关推荐
meilindehuzi_a11 小时前
深入浅出数据结构:Python 字典(Dict)与集合(Set)的哈希表底层全链路追踪
数据结构·python·散列表
Lucas凉皮12 小时前
20243408 2025-2026-2 《Python程序设计》综合实践报告
python·实验报告
键盘上的猫头鹰12 小时前
【MySQL 教程(八)】索引、事务、用户管理、导入导出与分页查询
数据库·python·mysql
薛定谔的猫-菜鸟程序员12 小时前
2小时智能体开发一个智能体?我用CodeArts Agent 和 AtomCode 开发了一个适老化智能体。
人工智能·python·agent
bigfootyazi13 小时前
python爬虫-基本库-urllib库(常用速查)
开发语言·爬虫·python
瑶总迷弟13 小时前
使用 mis-tei 在昇腾310P上部署 bge-m3模型
pytorch·python·华为·语言模型·自然语言处理·cnn·unix
belong_my_offer14 小时前
认识到精通函数
开发语言·python
计算机安禾14 小时前
【算法分析与设计】第26篇:参数化算法与固定参数可解性理论
大数据·人工智能·算法·机器学习·剪枝
AI科技星15 小时前
基于**v=c(空间光速螺旋运动)唯一第一性原理**重新完整求导证明
人工智能·线性代数·算法·机器学习·架构·概率论·学习方法
卡次卡次115 小时前
vibecoding起步注意点:插件、Skills、MCP、Hooks
服务器·数据库·python·oracle