【线性回归、岭回归、Lasso回归分别预测患者糖尿病病情】数据挖掘实验一

news2025/6/20 10:39:02

Ⅰ、项目任务要求

  • 任务描述:将“diabetes”糖尿病患者数据集划分为训练集和测试集,利用训练集分别结合线性回归、岭回归、Lasso回归建立预测模型,再利用测试集来预测糖尿病患者病情并验证预测模型的拟合能力。
  • 具体任务要求如下:
    • 搜集并加载“diabetes”患者糖尿病指数数据集。
    • 定义训练集和测试集(训练集和测试集比例分别为8:2;7:3;6:4)。
    • 建立线性回归模型。
    • 分别利用可视化方法和交叉验证法确定惩罚参数λ并建立岭回归模型。
    • 分别利用可视化方法和交叉验证法确定惩罚参数λ并建立Lasso回归模型。
    • 分别用岭回归模型和Lasso回归模型通过测试集预测患者糖尿病病情。
    • 利用最小平均均方误差来评估上述三个预测模型的拟合能力。
    • 结果分析(上述三种预测模型的对比分析),建议图表结合说明并写出预测模型方程。

参考资料网址:

  • 机器学习总结(一):线性回归、岭回归、Lasso回归
  • 吴裕雄 数据挖掘与分析案例实战(7)——岭回归与LASSO回归模型
  • Python数据挖掘课程 五.线性回归知识及预测糖尿病实例
  • 数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归
  • 用岭回归和LASSO糖尿病治疗效果好坏

II、数据集描述(10)

。。。。。。(详细描述数据集:如特征属性名称及意义、记录数等)

III、主要算法原理及模型评价方法陈述(15分)

。。。。。。(写出项目中涉及的主要算法原理及模型评价方法)

IV、代码实现(45分)

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model, model_selection


# from sklearn import datasets, linear_model, discriminant_analysis, model_selection

# todo: 查看数据(训练集:X_train, y_train; 测试集X_test, y_test)
def check_data():
    with open("data/X_train.txt", "w") as file:
        for i in range(len(X_train)):
            file.write(f"【样本{i+1}】:{X_train[i]}\n")
    with open("data/y_train.txt", "w") as file:
        for i in range(len(y_train)):
            file.write(f"【样本{i+1}】:{y_train[i]}\n")
    with open("data/X_test.txt", "w") as file:
        for i in range(len(X_test)):
            file.write(f"【样本{i+1}】:{X_test[i]}\n")
    with open("data/y_test.txt", "w") as file:
        for i in range(len(y_test)):
            file.write(f"【样本{i+1}】:{y_test[i]}\n")

# todo: 可视化展示
def show_plot(alphas, scores):
    figure = plt.figure()
    ax = figure.add_subplot(1, 1, 1)
    ax.plot(alphas, scores)
    ax.set_xlabel(r"$\alpha$")
    ax.set_ylabel(r"score")
    ax.set_xscale("log")
    ax.set_title("Ridge")
    plt.show()


# Todo: 加载数据
# 加载糖尿病数据集
diabetes = datasets.load_diabetes()
# 使用 model_selection.train_test_split() 将数据集分成训练集和测试集,其中训练集占 75%,测试集占 25%(最佳)
# random_state 参数设置了随机种子,以确保结果的可重复性
X_train, X_test, y_train, y_test = model_selection.train_test_split(diabetes.data, diabetes.target, test_size=0.25, random_state=0)
# 查看划分数据(保存至data/*)
check_data()


# Todo: 建立线性回归模型
print('========== ※ 线性回归模型 ※ ==========')
# 通过sklearn的 linear_model 创建线性回归对象
linearRegression = linear_model.LinearRegression()
# 进行训练
linearRegression.fit(X_train, y_train)
# 通过LinearRegression的coef_属性获得权重向量,intercept_获得b的值
print("权重向量:%s, b的值为:%.2f" % (linearRegression.coef_, linearRegression.intercept_))
# 计算出损失函数的值
print("损失函数的值: %.2f" % np.mean((linearRegression.predict(X_test) - y_test) ** 2))
# 计算预测性能得分
print("预测性能得分: %.2f" % linearRegression.score(X_test, y_test))


# Todo: 分别利用可视化方法和交叉验证法确定惩罚参数λ并建立岭回归模型
print('========== ※ 岭回归模型 ※ ==========')
ridgeRegression = linear_model.Ridge()
ridgeRegression.fit(X_train, y_train)
print("权重向量:%s, b的值为:%.2f" % (ridgeRegression.coef_, ridgeRegression.intercept_))
print("损失函数的值:%.2f" % np.mean((ridgeRegression.predict(X_test) - y_test) ** 2))
print("预测性能得分: %.2f" % ridgeRegression.score(X_test, y_test))

# todo: 测试不同的α值对预测性能的影响
alphas = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000]
scores = []
for i, alpha in enumerate(alphas):
    ridgeRegression = linear_model.Ridge(alpha=alpha)
    ridgeRegression.fit(X_train, y_train)
    scores.append(ridgeRegression.score(X_test, y_test))
show_plot(alphas, scores)


# Todo: 分别利用可视化方法和交叉验证法确定惩罚参数λ并建立Lasso回归模型
print('========== ※ Lasso归模型 ※ ==========')
lassoRegression = linear_model.Lasso()
lassoRegression.fit(X_train, y_train)
print("权重向量:%s, b的值为:%.2f" % (lassoRegression.coef_, lassoRegression.intercept_))
print("损失函数的值:%.2f" % np.mean((lassoRegression.predict(X_test) - y_test) ** 2))
print("预测性能得分: %.2f" % lassoRegression.score(X_test, y_test))

# todo: 测试不同的α值对预测性能的影响
alphas = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000]
lassos_scores = []
for i, alpha in enumerate(alphas):
    lassoRegression = linear_model.Lasso(alpha=alpha)
    lassoRegression.fit(X_train, y_train)
    lassos_scores.append(lassoRegression.score(X_test, y_test))
show_plot(alphas, lassos_scores)

V、运行结果截图(15分)

在这里插入图片描述

  • 岭回归
    在这里插入图片描述
  • Lasso回归
    在这里插入图片描述

VI、结果分析(15分)

。。。。。。(详细分析结果)

VII、小组分工及贡献比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1021383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务网格和微服务架构的关系:理解服务网格在微服务架构中的角色和作用

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

现在进入广告行业好做吗?

广告行业真的很好,大家快来…… 在这里你可以无限发挥你的创意和想象力,有趣的同事,不刻板的工作内容,与爱豆合作,偶尔见见明星,出入城市CBD,一身名牌,精美PPT挥斥方遒,…

grafana结合Skywalking追踪Trace(一)

SW应用中对Trace的跟踪一直占有重要的地位,即可以用户指定的tag值,可以筛选出感兴趣的trace(跟踪链),用户可以通过跟踪链追踪各个Span的详细情况。 但是在使用SW OAP原生页面中会存在两个问题: 1) Trace数量太多了&…

Linux Ubuntu命令行快速配置C++开发环境

本文介绍在Linux操作系统的Ubuntu版本中,基于命令行,快速配置C 编辑、编译、运行的代码开发环境的简便方法。 在之前的文章Linux操作系统Ubuntu 22.04配置Visual Studio Code与C代码开发环境的方法(https://blog.csdn.net/zhebushibiaoshifu/article/det…

Springboot项目升级2.2.x升至2.7.x

依赖管理 spring-boot-starter-parent 升级为2.7.1 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId> <!-- 升级为2.7.x的版本--><version>2.7.1</version>…

【STM32】WWDG—窗口看门狗

在一个设定好的区间进行喂狗 与独立看门狗不同的是&#xff0c;独立看门狗只需要在计时到0之前喂狗。而窗口看门狗需要在设定好的区间内进行喂狗&#xff0c;否则进行reset。 下限 递减计数器不断的往下递减计数&#xff0c;当减到一个固定值 0X40时还不喂狗的话&#xff0c…

《ADS2011射频电路设计与仿真实例》功率放大器设计的输入输出匹配

徐兴福这本书的6.6 Smith圆图匹配这一节中具体匹配时&#xff0c;直接给出了电容与串联微带的值&#xff0c;没有给出推导过程&#xff0c;我一开始以为是省略了详细推导过程&#xff0c;后来发现好像基本上是可以随便自己设的。以输入匹配&#xff08;书本6.6.4输入匹配电路的…

​安徽农业大学《乡村振兴战略下传统村落文化旅游设计》许少辉博士新著——2023学生开学季辉少许流动站

​安徽农业大学《乡村振兴战略下传统村落文化旅游设计》许少辉博士新著——2023学生开学季辉少许流动站

Archicad 26 for Mac - 打造卓越的3D建模工具

随着建筑设计和规划的日益复杂化&#xff0c;寻找一款功能强大且易于使用的3D建模工具变得至关重要。而Archicad 26 for Mac正是您在建筑设计领域中的理想选择。无论您是一名建筑师、室内设计师还是建筑工程师&#xff0c;Archicad 26都将成为您的得力助手。 作为一款全球领先…

计算机竞赛 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

python脚本(渗透测试)

python爬取edusrc 通过此脚本&#xff0c;可以爬取edusrc的目标信息&#xff0c;生成目标字典&#xff0c;为下一步开发自动化测试工具做准备 import queue import threading import timeimport requests from bs4 import BeautifulSoup import re def get_edu_name():while …

算法-单词搜索 II

算法-单词搜索 II 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/word-search-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 DFS 2.1 解题思路 每个格子往上下左右四个方向DFS&#xff0c;拼接后的单词如果在答案集中&…

【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执

【测试开发】基础篇 文章目录 【测试开发】基础篇1. 软件测试生命周期1.1 软件生命周期1.2 软件测试生命周期 2. 描述bug3. 如何定义bug的级别3.1 为什么要对bug进行级别划分3.2 bug的一些常见级别 4. bug的生命周期5. 产生争执这么怎么办&#xff08;处理人际关系&#xff09;…

启山智软/电商商城100%开源

介绍 想要了解代码规范&#xff0c;学习商城解决方案&#xff0c;点击下方官网链接联系客服 作者&#xff1a;启山智软 官网及博客&#xff1a;启山智软官网、CSDN、掘金、gitee 简介&#xff1a;启山智软目前开发了全渠道电商商城系统&#xff0c;本商城是基于SpringCloud的商…

阿里云配置炼丹环境全流程 (从购买云服务器到成功运行代码)

自己的小破笔记本实在炼不动高品阶的丹药, 不得已用了云服务器. 捣鼓了一天, 终于是成功把代码在云服务器上跑起来了. 将这一过程记录一下, 方便之后参考. 第一步, 创建云服务器实例 找到控制台, 点 “云服务器 ECS”, 然后点击创建实例. 会出现以下界面: 这里如何选择合适的…

竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…

RocketMQ编程使用和应用场景

RocketMQ消息模型 一、RocketMQ客户端基本使用 引入RocketMQ依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.9.5</version> </dependency>ncy> RocketMQ…

哈希及哈希表的实现

目录 一、哈希的引入 二、概念 三、哈希冲突 四、哈希函数 常见的哈希函数 1、直接定址法 2、除留余数法 五、哈希冲突的解决 1、闭散列 2、开散列 一、哈希的引入 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找…

【Java 基础篇】Java标准输入流详解:读取用户输入的完整指南

Java是一门流行的编程语言&#xff0c;常用于开发各种类型的应用程序&#xff0c;包括控制台应用、桌面应用、Web应用等。在这些应用中&#xff0c;与用户进行交互是一项重要的任务。本文将重点介绍Java标准输入流&#xff0c;它是Java程序中用于从用户获取输入的关键组成部分。…

【unity小技巧】Unity 存储存档保存——PlayerPrefs、JsonUtility和MySQL数据库的使用

文章目录 前言PlayerPrefs一、基本介绍二、Demo三、优缺点 JsonUtility一、基本使用二、Demo三、优缺点 Mysql&#xff08;扩展&#xff09;完结 前言 游戏存档不言而喻&#xff0c;是游戏设计中的重要元素&#xff0c;可以提高游戏的可玩性&#xff0c;为玩家提供更多的自由和…