机器学习数据的清洗,转化,汇总及建模完整步骤(基于Titanic数据集)

news2024/9/23 5:30:14

目录

介绍: 

一、数据

二、检查数据缺失

 三、数据分析

四、数据清洗

 五、数据类别转化

六、数据汇总和整理

七、建模

介绍: 

线性回归是一种常用的机器学习方法,用于建立一个输入变量与输出变量之间线性关系的预测模型。线性回归的目标是找到一条最佳拟合直线,使得预测值与实际观测值之间的误差最小。

线性回归的训练过程是通过最小化目标变量与预测值之间的平方误差来确定模型的参数。常用的最小化目标函数是平方误差和(Sum of Squared Errors,SSE)。

线性回归模型的优点包括简单易懂、计算效率高、可解释性强。然而,线性回归模型的局限性在于假设了输入和输出之间的关系是线性的,无法很好地处理非线性关系。

线性回归模型可以通过添加多项式特征、交互项或者使用其他非线性变换方法来解决非线性问题。此外,还可以使用正则化技术(如岭回归、Lasso回归)来改善模型的泛化能力和抗噪能力。

参考:Logistic Regression逻辑线性回归(基于diabetes数据集)-CSDN博客

Ridge & Lasso Regression解决线性回归的过拟合(Overfitting)(基于波士顿房价预测)-CSDN博客

 Linear Regression线性回归(一元、多元)-CSDN博客

一、数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

data=pd.read_csv("Titanic.csv")

二、检查数据缺失

data.isnull()#true即为缺失,也可以用isna()

sns.heatmap(data.isnull())#可以看到age和cabin缺失数据比较多

 

sns.heatmap(data.isnull(),yticklabels=False,cmap='rainbow')

 

data['Age'].isnull().sum()
#结果:263

data['Cabin'].isnull().sum()
#结果:1014

 三、数据分析

sns.set_style('whitegrid')
sns.countplot(x='Survived',data=data)#死亡的人占大部分

data['Survived'].value_counts()

 

sns.set_style('whitegrid')
sns.countplot(x='Survived',hue='Pclass',data=data,palette='rainbow')#再分舱位

 

sns.displot(data['Age'],kde=True,color='darkred',bins=40)

 

sns.countplot(x='SibSp',data=data)#亲属

 

四、数据清洗

plt.figure(figsize=(12,7))
sns.boxplot(x='Pclass',y='Age',data=data)#可以看出舱位和年龄的关系

 

data[data['Pclass']==1]['Age'].median()#每个舱位的平均年龄
#39

data[data['Pclass']==2]['Age'].median()
#29

data[data['Pclass']==3]['Age'].median()
#24


def addage(X):
    Age = X[0]
    Pclass=X[1]
    
    if pd.isnull(Age):
        if Pclass == 1:
            return 39
        elif Pclass ==2:
            return 29
        else:
            return 24
    else:
        return Age

data['Age']=data[['Age','Pclass']].apply(addage,axis=1)#赋值给这个函数

data.drop('Cabin',axis=1,inplace=True)#因为船舱房间号缺失严重,删除这列数据

sns.heatmap(data.isnull(),yticklabels=False,cmap='rainbow')#都无缺失数据 

 ​​​​​​​

 五、数据类别转化

data.info()##需要转化object类型的数据
'''结果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1309 entries, 0 to 1308
Data columns (total 11 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  1309 non-null   int64  
 1   Survived     1309 non-null   int64  
 2   Pclass       1309 non-null   int64  
 3   Name         1309 non-null   object 
 4   Sex          1309 non-null   object 
 5   Age          1309 non-null   float64
 6   SibSp        1309 non-null   int64  
 7   Parch        1309 non-null   int64  
 8   Ticket       1309 non-null   object 
 9   Fare         1308 non-null   float64
 10  Embarked     1307 non-null   object 
dtypes: float64(2), int64(5), object(4)
memory usage: 112.6+ KB

'''

data['Embarked'].unique()
#array(['S', 'C', 'Q', nan], dtype=object)

pd.get_dummies(data['Embarked'],drop_first=True)#三个数据,用两个表示即可,00表示C

pd.get_dummies(data['Sex'],drop_first=True)#两个数据,一个表示即可,0表示falme

sex=pd.get_dummies(data['Embarked'],drop_first=True)
embark=pd.get_dummies(data['Sex'],drop_first=True)

六、数据汇总和整理

data=pd.concat([data,sex,embark],axis=1)#数据汇总

data.drop(['Sex','Embarked','Name','Ticket'],axis=1,inplace=True)#删除类别数据,无用数据

七、建模

#数据清洗完毕,开始建模
#y变量是0,1二分类,用from sklearn.linear_model import LogisticRegression#逻辑线性回归

X=data.drop('Survived',axis=1)
y=data['Survived']

from  sklearn.model_selection import train_test_split#将数据分成测试和训练集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)#测试集占百分之三十,random_state=0随机抽取数据集里的成为测试集

from sklearn.linear_model import LogisticRegression
logitmodel = LogisticRegression()
logitmodel.fit(X_train,y_train)

y_predictions= logitmodel.predict(X_test)#预测值

from sklearn.metrics import confusion_matrix
confusion_matrix(y_test,y_predictions)
'''结果:
array([[193,  29],
       [ 25, 146]], dtype=int64)
'''

from sklearn.metrics import accuracy_score
accuracy=accuracy_score(y_test,y_predictions)#模型值
#0.8625954198473282

from sklearn.metrics import classification_report
print(classification_report(y_test,y_predictions))
'''结果:
              precision    recall  f1-score   support

           0       0.89      0.87      0.88       222
           1       0.83      0.85      0.84       171

    accuracy                           0.86       393
   macro avg       0.86      0.86      0.86       393
weighted avg       0.86      0.86      0.86       393

​
'''

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

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

相关文章

vs code创建工程,以koa框架为例

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/x2OXMTaLlxb_Os7NDHrKsg 这里以应用 koa 框架写一个 http 服务器为例&#xff0c;来说明怎么用 vs code 创建工程。 进入 vs code 后&#xff0c…

云服务器 nginx自启动、mysql自启动、pyhton后端自启动

nginx自启动 方法一&#xff1a; 1、建立启动文件 vim /usr/lib/systemd/system/nginx.service [Unit] Descriptionnginx - high performance web server Afternetwork.target remote-fs.target nss-lookup.target[Service] Typeforking ExecStart/usr/local/nginx/sbin/ng…

DMA实验3-外设到内存搬运

实验要求 使用 DMA 的方式将串口接收缓存寄存器的值搬运到内存中&#xff0c;同时闪烁 LED1 。 CubeMX 配置 DMA 配置&#xff1a; 串口中断配置 代码实现 如何判断串口接收是否完成&#xff1f;如何知道串口收到数据的长度&#xff1f; 使用串口空闲中断&#xff08;IDL…

2023优秀开源项目获选榜名单(开放原子开源基金会)|JeecgBoot 成功入选

JeecgBoot 是一个开源的企业级低代码开发平台&#xff0c;它成功入选2023年度生态开源项目&#xff0c;这是对其十年坚持开源的认可。作为一个开源项目&#xff0c;JeecgBoot 在过去的十年里一直秉承着开放、共享、协作的理念&#xff0c;不断推动着开源社区的发展。 2023年开放…

华为配置IPv4静态路由与静态BFD联动示例

组网需求 如图1所示&#xff0c;SwitchA通过SwitchB和NMS跨网段相连。在SwitchA上通过静态路由与NMS进行正常通信。在SwitchA和SwitchB之间实现毫秒级故障感知&#xff0c;提高收敛速度 配置思路 采用如下思路配置IPv4静态路由与静态BFD联动&#xff1a; 在SwitchA和SwitchB上…

LVS+keepalived小白都看得懂也不来看?

1 高可用集群 1.1 一个合格的集群应该具备的特性 1.负载均衡 LVS Nginx HAProxy F5 2.健康检查&#xff08;使得调度器检查节点状态是否可以正常运行&#xff0c;调度器&#xff08;负载均衡器&#xff09;也要做健康检查&#xff09;for调度器/节点服务器 keeplived hearb…

aws配置以及下载 spaceNet6 数据集

一&#xff1a;注册亚马逊账号 注册的时候&#xff0c;唯一需要注意的是信用卡绑定&#xff0c;这个可以去淘宝买&#xff0c;搜索aws匿名卡。 注册完记得点击登录&#xff0c;记录一下自己的账户ID哦&#xff01; 二&#xff1a;登录自己的aws账号 2.1 首先创建一个用户 首…

2023 英特尔On技术创新大会直播 |AI小模型更有性价比

前言&#xff1a; 今年是引爆AI的一年&#xff0c;从幼儿园的小朋友到80岁的老奶奶都认识AI&#xff0c;享受AI带来的便捷&#xff0c;都在向市场要智能&#xff0c;但AI的快速发展离不开底层硬件设施的革新。 英特尔是全球知名的半导体公司&#xff0c;专注于计算机处理器和芯…

FPGA模块——以太网芯片MDIO读写

FPGA模块——以太网MDIO读写 MDIO接口介绍MDIO接口代码&#xff08;1&#xff09;MDIO接口驱动代码&#xff08;2&#xff09;使用MDIO驱动的代码 MDIO接口介绍 MDIO是串行管理接口。MAC 和 PHY 芯片有一个配置接口&#xff0c;即 MDIO 接口&#xff0c;可以配置 PHY 芯片的工…

【实时绘画】krita + comfyUI 实时绘画 儿童海报

1&#xff1a;打开comfyUI 2: 打开krita 打开 cd custom_nodes 输入命令 安装控件 git clone https://github.com/Acly/comfyui-tooling-nodes.git

人工智能与底层架构:构建智能引擎的技术支柱

导言 人工智能与底层架构的交融塑造了智能系统的基石&#xff0c;是推动智能时代发展的关键动力&#xff0c;本文将深入研究人工智能在底层架构中的关键作用&#xff0c;以及它对智能引擎的技术支持&#xff0c;探讨人工智能在计算机底层架构中的作用&#xff0c;以及这一融合如…

第11章 《GUI》Page404 课堂作业,验证鼠标事件的坐标,GUI编程如何在控制台输出调试

首先选中工程&#xff0c;点击右键&#xff0c;选择Properties 在Build targets一栏里&#xff0c;将Type(下拉列表)改为Console application 然后在代码中写上调试输出语句&#xff0c;就可以了 从图中&#xff0c;我们可以看出&#xff0c;我们划线的起点非常接近窗口左上角(…

JWT身份验证

JWT知识点 jwt&#xff0c;全称 json web token, JSON Web 令牌是一种开放的行业标准 RFC 7519 方法&#xff0c;用于在两方之间安全地表示声明。 详情可以参考&#xff1a; hhttps://jwt.io/introduction 1. 数据结构 JSON Web Token由三部分组成&#xff0c;它们之间用圆点.进…

LLama Factory 安装部署实操记录(二)

1. 项目地址 GitHub - hiyouga/LLaMA-Factory: Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM)Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM) - GitHub - hiyouga/LLaMA-Factory: Easy…

javascript_0

Javascript是一种脚本语言&#xff0c;可以用来更改页面内容&#xff0c;控制多媒体&#xff0c;制作图像、动画等等 例 修改页面内容 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport…

LuaJava操作Java的方法

最近在学习lua&#xff0c;然后顺便看了下luaj&#xff0c;可能用的人比较少&#xff0c;网上关于luaj的文章较少&#xff0c;其中在网上找到这个博主的相关文章&#xff0c;很详细&#xff0c;对于要学习luaj的小伙伴可以两篇一起查看&#xff0c;本文在此基础上进行扩展。 …

DDPM详解

DDPM详解 参考 https://www.bilibili.com/video/BV1pa411u7G3/ 系列 DDPM 可以分为 Diffusion 和 Reverse 两个阶段。其中 Diffusion 阶段通过不断地对真实图片添加噪声&#xff0c;最终得到一张噪声图片。而 Reverse 阶段&#xff0c;模型需要学习预测出一张噪声图片中的噪声部…

LLM 和搜索引擎是一样的吗?

在这篇文章中&#xff0c;了解更多关于 AI 大型语言模型&#xff08;如 ChatGPT&#xff09;的潜力。了解他们如何彻底改变生产力&#xff0c;并探索他们与搜索引擎不断变化的关系。 像 ChatGPT 这样的 AI 大型语言模型 &#xff08;LLM&#xff09; 已经风靡全球&#xff0c;并…

【力扣】148.排序链表

148.排序链表 怎么说&#xff0c;这道题看上去挺简单的&#xff0c;但是要搞清楚的知识点那还真不少&#xff0c;刷题好痛苦&#xff0c;但是要刷&#xff01;嘿嘿~ 首先&#xff0c;要搞懂归并排序&#xff0c;然后是递归。这道题我刚开始想的是递归&#xff0c;但是题友说时…

macOS制作dmg包

macOS制作dmg包 准备&#xff1a;磁盘工具、以及要制作的软件&#xff0c;这里以Firefox为例 图片素材 背景图&#xff1a; 找到Firefox&#xff0c;点击显示简介&#xff0c;查看包的大小 打开磁盘工具 文件–>新建映像–>空白映像 填写信息&#xff0c;大小…