【机器学习】西瓜书习题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
相关推荐
AC赳赳老秦5 分钟前
OpenClaw email技能:批量发送邮件、自动回复,高效处理工作邮件
运维·人工智能·python·django·自动化·deepseek·openclaw
zhaoshuzhaoshu13 分钟前
Python 语法之数据结构详细解析
python
AI问答工程师39 分钟前
Meta Muse Spark 的"思维压缩"到底是什么?我用 Python 复现了核心思路(附代码)
人工智能·python
zfan5202 小时前
python对Excel数据处理(1)
python·excel·pandas
小饕2 小时前
我从零搭建 RAG 学到的 10 件事
python
春末的南方城市2 小时前
比肩顶尖闭源模型!京东开源240亿参数多模态模型JoyAI-Image:统一理解/生成/编辑,重塑AI图像编辑。
人工智能·深度学习·机器学习·计算机视觉·aigc
老歌老听老掉牙2 小时前
PyQt5+Qt Designer实战:可视化设计智能参数配置界面,告别手动布局时代!
python·qt
哥布林学者2 小时前
深度学习进阶(七)Data-efficient Image Transformer
机器学习·ai
做cv的小昊2 小时前
【TJU】应用统计学——第五周作业(3.1 假设检验的基本思想、3.2 单个正态总体参数的假设检验)
学习·线性代数·机器学习·数学建模·矩阵·概率论·tju
kyle-fang2 小时前
大模型微调
人工智能·深度学习·机器学习