机器学习数据的清洗,转化,汇总及建模完整步骤(基于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.rhkb.cn/news/221946.html

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

相关文章

3-10岁孩子语文能力培养里程碑

文章目录 基础能力3岁4岁5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&#xff09; 阅读推荐&父母执行3岁4-5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&a…

Elasticsearch:什么是文本分类?

文本分类定义 - text classification 文本分类是一种机器学习&#xff0c;它将文本文档或句子分类为预定义的类或类别。 它分析文本的内容和含义&#xff0c;然后使用文本标签为其分配最合适的标签。 文本分类的实际应用包括情绪分析&#xff08;确定评论中的正面或负面情绪&…

Linux操作系统(ACL)

ACL (针对特殊用户的特殊权限) 访问控制列表&#xff0c;可以针对文件和目录 ACL的真正效果主要体现在对文件的操作上 1. 如何查看ACL信息&#xff1a;getfacl 文件名(文件路径) 2. 如何设置普通文件ACL信息&#xff1a;setfacl -m u:用户名&#xff1a;权限 文件名 现在要求…

JVM垃圾收集器三色标记算法

垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法&#xff0c;这种算法没有什么新的思想&#xff0c;只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代&#xff0c;这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比…

NFT获工信部首肯!“符合中国国情”的Web3.0发展战略即将问世!

今年3月&#xff0c;香港立法会议员吴杰庄在出席中国全国两会时&#xff0c;提出《关于推动Web3.0产业发展的提案》&#xff0c;针对中国加强Web3.0技术研发、建立标准和培养人才等几方面提岀意见。 本月19日&#xff0c;中国工信部针对该提案提交答复&#xff0c;称该部高度重…

关于“Python”的核心知识点整理大全33

目录 12.8.3 将子弹存储到编组中 alien_invasion.py 注意 12.8.4 开火 game_functions.py 12.8.5 删除已消失的子弹 alien_invasion.py 12.8.6 限制子弹数量 settings.py game_functions.py 12.8.7 创建函数 update_bullets() game_functions.py alien_invasion.py…

【智慧之窗】AI驱动产品探索

一.初识 ChatGPT ChatGPT 是由 OpenAI 开发的自然语言处理&#xff08;NLP&#xff09;模型&#xff0c;基于 GPT&#xff08;Generative Pre-trained Transformer&#xff09;架构。GPT 系列的模型旨在理解和生成自然语言文本。ChatGPT 专注于支持对话性任务&#xff0c;即与…

如何通过ETLCloud的API对接功能实现各种SaaS平台数据对接

前言 当前使用SaaS系统的企业越来越多&#xff0c;当我们需要对SaaS系统中产生的数据进行分析和对接时就需要与SaaS系统提供的API进行对接&#xff0c;因为SaaS一般是不会提供数据库表给企业&#xff0c;这时就应该使用ETL&#xff08;Extract, Transform, Load&#xff09;的…

Spring MVC控制层框架

三、Spring MVC控制层框架 目录 一、SpringMVC简介和体验 1. 介绍2. 主要作用3. 核心组件和调用流程理解4. 快速体验 二、SpringMVC接收数据 1. 访问路径设置2. 接收参数&#xff08;重点&#xff09; 2.1 param 和 json参数比较2.2 param参数接收2.3 路径 参数接收2.4 json参…

Opencv入门五 (显示图片灰度值)

源码如下&#xff1a; #include <opencv2/opencv.hpp> int main(int argc, char** argv) { cv::Mat img_rgb, img_gry, img_cny; cv::namedWindow("Example Gray",cv::WINDOW_AUTOSIZE); cv::namedWindow("Example Canny", cv::WINDOW_…

Qt跨线程的槽函数执行

定义两个类&#xff1a;Receiver接收信号&#xff0c;等待2秒后执行。Sender发送信号触发Receiver槽函数的执行 class Receiver : public QObject {Q_OBJECT public slots:void exec() {QThread::sleep(1);qDebug() << QThread::currentThreadId() << "recei…

【lesson21】MySQL复合查询(2)子查询

文章目录 子查询测试要用到的表测试要用到的数据单行子查询案例 多行子查询案例 多列子查询案例 在from子句中使用子查询案例 合并查询union案例union all案例 子查询 子查询是指嵌入在其他sql语句中的select语句&#xff0c;也叫嵌套查询 测试要用到的表 测试要用到的数据 单…

多媒体信息化建设,动态数据中心,深入理解分布式系统

目录 一、前言二、双活数据中心三、数据备份方式四、设计双活数据中心需要考虑的问题1、延迟和稳定性2、Quorum/ Tie-Breaker3、工作负载 五、动态数据中心六、深入理解分布式系统1、内容介绍2、作者简介 大家好&#xff0c;我是哪吒。 文末送5本《深入理解分布式系统》 一、…

创建型模式 | 原型模式

一、原型模式 1、原理 原型模式&#xff0c;用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象&#xff0c;而且不需要知道任何创建的细节。原型像是一个模板&#xff0c;可以基于它复制好多…

Seata1.4.2分布式事务搭建部署【Spring cloud Alibaba】

包下载 https://github.com/apache/incubator-seata/releases下载并上传到服务器 //解压 tar -zxvf seata-server-1.4.2.tar.gz创建Seata的数据库及表&#xff0c;地址&#xff1a;https://github.com/seata/seata/tree/develop/script/server 根据数据类型复制相应的sql&…

选择服装店收银系统源码需要注意的三个关键点

当选择服装店收银系统源码时&#xff0c;有几个关键点需要注意。首先&#xff0c;确保系统具备完备的功能&#xff0c;以满足日常运营的需求。其次&#xff0c;易用性和用户体验也是重要的考虑因素。最后&#xff0c;安全性和稳定性是不可忽视的要素。商人宝开源收银系统今天分…

CentOS:Docker 创建及镜像删除

1、安装docker 远程连接服务器&#xff0c;可以直接下载netsarang比较好用 家庭/学校免费 - NetSarang Website 如果有残留docker未删除干净&#xff0c;请使用 sudo yum -y remove docker docker-common docker-selinux docker-engine Step1&#xff1a;安装必要的一些…

PyCharm添加自动函数文档注释

目录 1、背景2、开启PyCharm自动函数文档注释 1、背景 规范的函数文档注释有助于他人理解代码&#xff0c;便于团队协作、提高效率。但如果我们自己手写函数文档注释将非常耗时耗力。PyCharm安装后默认没有开启自动化函数文档注释&#xff0c;需要我们开启 2、开启PyCharm自动…

HBase基础知识(一):HBase简介、HBase数据模型与基本架构

第1章HBase简介 1.1HBase定义 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 1.2HBase数据模型 逻辑上&#xff0c;HBase的数据模型同关系型数据库很类似&#xff0c;数据存储在一张表中&#xff0c;有行有列。但从HBase的底层物理存储结构&#xff08;K-V&a…

进阶之路:高级Spring整合技术解析

Spring整合 1.1 Spring整合Mybatis思路分析1.1.1 环境准备步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:添加Mybatis核心配置文件步骤8:编写应用程序步骤9:运行程序 1.…