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

目录

介绍: 

一、数据

二、检查数据缺失

 三、数据分析

四、数据清洗

 五、数据类别转化

六、数据汇总和整理

七、建模

介绍: 

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

线性回归的训练过程是通过最小化目标变量与预测值之间的平方误差来确定模型的参数。常用的最小化目标函数是平方误差和(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 inlinedata=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()
#结果:263data['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()#每个舱位的平均年龄
#39data[data['Pclass']==2]['Age'].median()
#29data[data['Pclass']==3]['Age'].median()
#24def addage(X):Age = X[0]Pclass=X[1]if pd.isnull(Age):if Pclass == 1:return 39elif Pclass ==2:return 29else:return 24else:return Agedata['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   float646   SibSp        1309 non-null   int64  7   Parch        1309 non-null   int64  8   Ticket       1309 non-null   object 9   Fare         1308 non-null   float6410  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表示Cpd.get_dummies(data['Sex'],drop_first=True)#两个数据,一个表示即可,0表示falmesex=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.8625954198473282from sklearn.metrics import classification_report
print(classification_report(y_test,y_predictions))
'''结果:precision    recall  f1-score   support0       0.89      0.87      0.88       2221       0.83      0.85      0.84       171accuracy                           0.86       393macro avg       0.86      0.86      0.86       393
weighted avg       0.86      0.86      0.86       393​
'''

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

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

相关文章

工业4.0|工业物联平台有多重要?IoTopo 深度解析

随着时代的发展&#xff0c;科学技术日新月异&#xff0c;人们进入了信息化的时代。现今&#xff0c;在物联网的逐渐普及下&#xff0c;物联网技术应用于工业中&#xff0c;也显得尤为重要&#xff1b;在工业网络和移动计算持续影响着制造业和工业环境的大环境中&#xff0c;这…

计算机毕业设计 基于SpringBoot的大学生平时成绩量化管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Python---TCP服务端程序开发

1. 开发 TCP 服务端程序开发步骤回顾 创建服务端端套接字对象绑定端口号设置监听等待接受客户端的连接请求接收数据发送数据关闭套接字 2. socket 类的介绍 导入 socket 模块import socket 创建服务端 socket 对象socket.socket(AddressFamily, Type) 参数说明: AddressF…

SpringMVC:执行原理详解、配置文件和注解开发实现 SpringMVC

文章目录 SpringMVC - 01一、概述二、SpringMVC 执行原理三、使用配置文件实现 SpringMVC四、使用注解开发实现 SpringMVC1. 步骤2. 实现 五、总结注意&#xff1a; SpringMVC - 01 一、概述 SpringMVC 官方文档&#xff1a;点此进入 有关 MVC 架构模式的内容见之前的笔记&a…

【AI数学】NeRF中的球面谐波函数(Spherical Harmonics)

球面谐波&#xff08;SH&#xff09;因为其良好的性质活跃在NeRF、Plenoxels、3DGS等显隐式场景表示的方法中。 问&#xff1a;球面谐波是什么&#xff1f; 答&#xff1a;一组基函数。可以理解为傅里叶分解的一种特殊形式&#xff0c;即“任何函数都可以用这组基的算术组合来近…

记录 | gdb调试的基本命令

r (run) 运行程序 b (breakpoint) 打断点&#xff0c;比如 b func(打到函数) b 5(打到第5行)(当前文件) b main.cpp:5(main.cpp的第5行) b MyClass::func() (打到类的成员函数func()、在类内可以 p this 打印、p *this、p this->name) tb (temporary breakpoint) 临时断…

ctfshow(web190-web200)

目录 web190 web191 web192 web193 web194 web195 web196 web197 web198 web199 web200 web190 为什么要有admin呢 这也是试出来的 这个admin必须是数据库中存在的 这样才能使用布尔注入 因为这个时候登录 有两种返回结果 一种密码错误 一种就是用户名错误 admin an…

前端性能监控和错误监控

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Ubuntu 常用命令之 passwd 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 在Ubuntu系统中&#xff0c;passwd命令用于更改用户的密码。系统管理员可以使用此命令更改任何用户的密码&#xff0c;而普通用户只能更改自己的密码。 passwd命令的参数如下 -l, --lock&#xff1a;锁定密码&#xff0c;使账户…

拥抱鸿蒙 - 在展讯T606平台上的探索与实践

前 言 自OpenHarmony 问世后受到了社会各界的广泛关注&#xff0c;OpenHarmony 的生态系统在如火如荼的发展。 酷派作为一家积极拥抱变化的公司&#xff0c;经过一段时间的探索与实践&#xff0c;成功实现将OpenHarmony 系统接入到展讯平台上&#xff0c;我们相信这是一个重要…

Android Studio 安装和使用

前些天&#xff0c;打开了几年前的一个Android Studio app项目&#xff0c;使用安卓虚拟机仿真app崩溃&#xff0c;怀疑是不是中间升级过Android Studio导致异常的&#xff0c;马上脑子一热卸载了&#xff0c;结果上次踩过的坑&#xff0c;一个没少又踩一次&#xff0c;谨以此文…

大数据技术基本功-数据采集

产品指南&#xff5c;DataScale自定义采集器功能介绍产品指南&#xff5c;开发 DataScale Collector​​​​​​​

python用什么软件编写程序,python编写的软件有哪些

大家好&#xff0c;本文将围绕python用什么软件编写程序展开说明&#xff0c;python编写的软件有哪些是一个很多人都想弄明白的事情&#xff0c;想搞清楚用什么软件编写python需要先了解以下几个事情。 大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python可以用什么…

word文档代码高亮_简单易操作_美化代码

跳转:代码高亮网站 复制-粘贴 简单易用 网站:https://highlightcode.com/高亮优化前: 高亮优化后:

一个很好用的Docker可视化管理工具

目录 前言Portainer安装部署使用 前言 一个好的docker可视化管理工具&#xff0c;可以提升我们不少的工作效率&#xff0c;下面我就推荐一个我使用过的&#xff0c;感觉很不错的一个可视化管理工具给大家 Portainer Portainer是一个开源的Docker管理工具&#xff0c;提供了容…

kindeditor The method toJSONString() is undefined for the type JSONObject

kindeditor 插件上传文件出错的 json_simple-1.1.jar 也不知道是多老的项目&#xff0c;多老的包了&#xff0c;稀有东西

【Date对象】js中的日期类型Date对象的使用详情

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

重温经典struts1之自定义转换器及注册的两种方式(Servlet,PlugIn)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 Struts的ActionServlet接收用户在浏览器发送的请求&#xff0c;并将用户输入的数据&#xff0c;按照FormBean中定义的数据类型&#xff0c;赋值给FormBean中每个变量&a…

“2024世亚软博会”促进软件产业国际化交流与合作的重要窗口

随着科技的飞速发展&#xff0c;软件行业在全球范围内呈现出井喷式的增长。未来&#xff0c;随着软件行业开放的深入&#xff0c;市场机制逐渐完善&#xff0c;人才和政策的持续支持&#xff0c;软件行业将继续保持蓬勃发展态势&#xff0c;为全球用户提供更加优质、智能的软件…

Ansible的脚本----playbook剧本

Playbook组成部分 tasks 任务&#xff1a;包含要在目标主机上执行的操作&#xff0c;使用模块定义这些操作。每个任务都是一个模块的调用。Variables 变量&#xff1a;存储和传递数据。变量可以自定义&#xff0c;可以在playbook当中定义全局变量&#xff0c;可以外部传参。T…