Python-sklearn-diabetes项目实战

目录

1 下载数据集和预处理

1.1 加载/下载数据集

1.2 数据可视化

1.3 数据清洗

1.4 特征工程

1.5 构建特征集和标签集

1.6 拆分训练集和测试集

2 训练模型

2.1 选择算法和确定模型

2.2 训练拟合模型

3 评估并优化模型性能


本文以糖尿病数据集diabetes为基础进行线性回归训练:

1 下载数据集和预处理

1.1 加载/下载数据集

"""
@Title: 收集数据
@Time: 2024/3/11
@Author: Michael Jie收集数据和预处理:
1、收集数据;
2、数据可视化;
3、数据清洗;
4、特征工程;
5、构建特征集和标签集(仅监督学习需要);
6、拆分训练集和测试集。
"""import sklearn.datasets as ds
import pandas as pd# 加载并返回糖尿病数据集(回归)
diabetes = ds.load_diabetes(# 若为True,返回(data, target)元组,而非Bunch对象return_X_y=False,# 若为True,以pandas DataFrame/Series形式返回数据集as_frame=False,# 若为True,返回归一化后的特征集scaled=False
)# Bunch对象本质是一个字典
print(diabetes.keys())
"""
dict_keys(['data',  # 特征集 'target',  # 标签集'frame',  # 包含特征值和标签的数组,当as_frame=True时存在'DESCR',  # 数据集描述'feature_names',  # 特征集列名'data_filename',  # 内存中的特征集文件名'target_filename',  # 内存中的标签集文件名'data_module'
])
"""# 特征集
data = diabetes.data
print(type(data), data.shape)
"""
<class 'numpy.ndarray'> 
(442, 10)
"""
feature_names = diabetes.feature_names
print(feature_names, type(feature_names))
"""
['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']
<class 'list'>
"""# 标签集
target = diabetes.target
print(type(target), target.shape)
"""
<class 'numpy.ndarray'> 
(442,)
"""# 数据集描述
print(diabetes.DESCR)
"""
Diabetes dataset
----------------Ten baseline variables, age, sex, body mass index, average blood
pressure, and six blood serum measurements were obtained for each of n =
442 diabetes patients, as well as the response of interest, a
quantitative measure of disease progression one year after baseline.**Data Set Characteristics:**:Number of Instances: 442:Number of Attributes: First 10 columns are numeric predictive values:Target: Column 11 is a quantitative measure of disease progression one year after baseline:Attribute Information:- age     age in years- sex- bmi     body mass index- bp      average blood pressure- s1      tc, total serum cholesterol- s2      ldl, low-density lipoproteins- s3      hdl, high-density lipoproteins- s4      tch, total cholesterol / HDL- s5      ltg, possibly log of serum triglycerides level- s6      glu, blood sugar levelNote: Each of these 10 feature variables have been mean centered and scaled by the standard deviation times the square root of `n_samples` (i.e. the sum of squares of each column totals 1).Source URL:
https://www4.stat.ncsu.edu/~boos/var.select/diabetes.htmlFor more information see:
Bradley Efron, Trevor Hastie, Iain Johnstone and Robert Tibshirani (2004) "Least Angle Regression," Annals of Statistics (with discussion), 407-499.
(https://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf)
"""# 下载数据集
data_csv = pd.DataFrame(data=data, columns=feature_names)
target_csv = pd.DataFrame(data=target, columns=['target'])
diabetes_csv = pd.concat([data_csv, target_csv], axis=1)
diabetes_csv.to_csv(r'diabetes_datasets.csv', index=False)

1.2 数据可视化

"""
@Title: 数据可视化
@Time: 2024/3/11
@Author: Michael Jie
"""import pandas as pd
import matplotlib.pyplot as plt# 读取数据
csv = pd.read_csv(r'diabetes_datasets.csv')
print(csv.shape)  # (442, 11)# 可视化数据
plt.figure(figsize=(19.2, 10.8))
for i in range(csv.shape[1] - 1):plt.subplot(2, 5, i + 1).scatter(csv[csv.columns[i]], csv["target"])# 保存图片
plt.savefig(r'diabetes_datasets.png')
# plt.show()

1.3 数据清洗

"""
@Title: 数据清洗
@Time: 2024/3/11
@Author: Michael Jie
"""import pandas as pd"""
1、处理缺失数据:剔除残缺数据,也可以用平均值、随机值或者0来补值;
2、处理重复数据:删除完全相同的重复数据处理;
3、处理错误数据:处理逻辑错误数据;
4、处理不可用数据:处理格式错误数据。
"""# 读取数据
csv = pd.read_csv(r'diabetes_datasets.csv')# 统计NaN出现的次数
print(csv.isna().sum())
"""
age       0
sex       0
bmi       0
bp        0
s1        0
s2        0
s3        0
s4        0
s5        0
s6        0
target    0
dtype: int64
"""

1.4 特征工程

"""
@Title: 特征工程
@Time: 2024/3/11
@Author: Michael Jie
"""import numpy as np
import sklearn.datasets as ds# 标准化
def z_score_normalization(x, axis=0):x = np.array(x)x = (x - np.mean(x, axis=axis)) / np.std(x, axis=axis)return x# 若为True,返回归一化后的特征集
diabetes_pre = ds.load_diabetes(scaled=True)
print(diabetes_pre.data)# 手动标准化特征集
diabetes = ds.load_diabetes(scaled=False)
print(z_score_normalization(diabetes.data))

1.5 构建特征集和标签集

无。

1.6 拆分训练集和测试集

"""
@Title: 
@Time: 2024/3/11
@Author: Michael Jie
"""import sklearn.datasets as ds
from sklearn.model_selection import train_test_split# 加载数据
diabetes = ds.load_diabetes(scaled=False)# 将数据集进行80%训练集和20%的测试集的分割
x_train, x_test, y_train, y_test = train_test_split(diabetes.data, diabetes.target, test_size=0.2, random_state=0
)
print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)
"""
(353, 10) (89, 10) (353,) (89,)
"""

2 训练模型

2.1 选择算法和确定模型

# 创建基本线性回归类
linear = LinearRegression(# 是否计算截距fit_intercept=True,# 是否拷贝特征集copy_X=True,
)# 创建正则线性回归类
ridge = Ridge(# 学习率alpha=1.0,# 是否计算截距fit_intercept=True,# 是否拷贝特征集copy_X=True,# 最大训练轮次max_iter=None,# 最小损失差tol=1e-4,
)

2.2 训练拟合模型

"""
@Title: 训练模型和评估
@Time: 2024/3/11
@Author: Michael Jie
"""import sklearn.datasets as ds
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.model_selection import train_test_split# 加载数据
diabetes = ds.load_diabetes(scaled=True)# 将数据集进行80%的训练集和20%的测试集的分割
x_train, x_test, y_train, y_test = train_test_split(diabetes.data, diabetes.target, test_size=0.2, random_state=0
)# 创建基本线性回归类
linear = LinearRegression()
# 训练
linear.fit(x_train, y_train)
print(linear.coef_, linear.intercept_)
"""
[ -35.55025079 -243.16508959  562.76234744  305.46348218 -662.70290089324.20738537   24.74879489  170.3249615   731.63743545   43.0309307 ] 152.5380470138517
"""# 创建正则线性回归类
ridge = Ridge()
# 训练
ridge.fit(x_train, y_train)
print(ridge.coef_, ridge.intercept_)
"""
[  21.34794489  -72.97401935  301.36593604  177.49036347    2.82093648-35.27784862 -155.52090285  118.33395129  257.37783937  102.22540041] 151.9441509473086
"""

3 评估并优化模型性能

# 创建基本线性回归类
linear = LinearRegression()
linear.fit(x_train, y_train)
# 评估模型,结果在0-1之间,越大证明模型越拟合数据
print(linear.score(x_test, y_test))
"""
0.33223321731061806
"""# 创建正则线性回归类
ridge = Ridge()
ridge.fit(x_train, y_train)
# 评估模型
print(ridge.score(x_test, y_test))
"""
0.3409800318493461
"""

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git 学习笔记 三个区域、文件状态、分支、常用命令

Git 学习 GitGit概念VS Code中使用仓库&#xff08;repository&#xff09;示例 Git 使用时的三个区域示例 Git 文件状态示例 Git 暂存区示例 Git 回退版本删除文件忽略文件示例 分支分支的使用分支的合并与删除分支的合并冲突 Git常用命令Git远程仓库 (HTTP)步骤远程仓库 克隆…

LAMP网站部署(Discuz论坛网站部署)

目录 mysql命令 语法 选项 参数 实例 安装php 安装Mariadb 关掉防火墙和selinux 启动HTTP服务 初始化数据库 查看数据库是否创建成功 修改HTTP的配置文件 浏览器打开 将以下所有目录都加上权限 最后首页效果 mysql命令 是MySQL数据库服务器的客户端工具&#xff0c;它工作在命…

D-Star 寻路算法

D-Star 寻路算法 下面简写 D-Star 为 D* D算法&#xff1a;D 算法”的名称源自 Dynamic A Star,最初由Anthony Stentz于“Optimal and Efficient Path Planning for Partially-Known Environments”中介绍。它是一种启发式的路径搜索算法&#xff0c; 适合面对周围环境未知或者…

Python自然语言处理库之lida使用详解

概要 在当今信息爆炸的时代,自然语言处理(Natural Language Processing, NLP)技术变得越来越重要。Python 作为一种功能强大且广泛应用的编程语言,拥有众多的 NLP 库,其中 lida 库就是其中之一。本文将深入探讨 lida 库的各个方面,包括其基本概念、主要功能、使用方法以…

吴恩达prompt 笔记2:迭代提示开发(Iterative Prompt Develelopment)

1 前言 我们很难在初次尝试中就设计出最佳的提示&#xff0c;因此需要根据ChatGPT的反馈进行分析&#xff0c;分析输出具体在哪里不符合期望&#xff0c;然后不断思考和优化提示。如果有条件的话&#xff0c;最好是利用批量的样本来改善提示&#xff0c;这样可以对你的优化结…

PHP中的反序列化漏洞

PHP中的反序列化漏洞 目录 PHP 中的序列化与反序列化 概述 序列化 基本类型的序列化 对象的序列化 反序列化 示例序列化与反序列化 反序列化漏洞 - PHP 中的魔术方法 - Typecho_v1.0 中的反序列化漏洞 POP链的构造思路 pop链案例 反序列化逃逸 字符串逃逸&#xff…

发布组件到npm

1.环境准备&#xff0c;需要装好node&#xff0c;注册号npm账号,这里不做详解 2.创建编写组件和方法的文件夹package 3.在文件夹中创建需要定义的组件&#xff0c;并且加上name属性 //组件 <template><div><button>按钮组件</button></div> &…

微服务分布式springcloud的体育场地预约系统演kdm1z

体育场馆设施预约系统是在实际应用和软件工程的开发原理之上&#xff0c;运用java语言以及Springcloud框架进行开发。首先要进行需求分析&#xff0c;分析出体育场馆设施预约系统的主要功能&#xff0c;然后设计了系统结构。整体设计包括系统的功能、系统总体结构、系统数据结构…

MySQL order by 语句执行流程

全字段排序 假设这个表的部分定义是这样的&#xff1a; CREATE TABLE t (id int(11) NOT NULL,city varchar(16) NOT NULL,name varchar(16) NOT NULL,age int(11) NOT NULL,addr varchar(128) DEFAULT NULL,PRIMARY KEY (id),KEY city (city) ) ENGINEInnoDB; 有如下 SQL 语…

【深度学习笔记】9_8 区域卷积神经网络(R-CNN)系列

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 9.8 区域卷积神经网络&#xff08;R-CNN&#xff09;系列 区域卷积神经网络&#xff08;region-based CNN或regions with CNN feature…

基于物联网的智能家居监测与控制系统(全套资料)

项目源码资料下载地址&#xff1a; http://comingit.cn/?id29 易学蔚来全套毕设演示&#xff08;看上哪个选那个&#xff09;&#xff1a; https://www.yuque.com/javagongchengshi/ccadbu/nh92kcpyqodhf07l 毕设服务真实反馈&#xff0c;在线观看&#xff1a; https://www.yu…

Java基于微信小程序的校园订餐小程序的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…