机器学习中常见的数据分析,处理方式(以泰坦尼克号为例)

news/2024/9/24 17:15:57/

数据分析

  • 读取数据
  • 查看数据各个参数信息
  • 查看有无空值
  • 如何填充空值
  • 一些特殊字段如何处理
  • 读取数据
    • 查看数据中的参数信息
    • 实操
      • 具体问题具体分析
      • 年龄问题
    • 重新划分数据集
    • 如何删除含有空白值的行
    • 根据条件删除一些行
    • 查看特征和标签的相关性

读取数据

查看数据各个参数信息

查看有无空值

如何填充空值

一些特殊字段如何处理

读取数据

train=pd.read_csv('train.csv')
test=pd.read_csv('test.csv')
datas = pd.concat([train, test], ignore_index = True)
# 获取数据集

查看数据中的参数信息

我们可以使用head函数比如使用train.head()就可以查看到训练集中的数据,默认前五行
train.head()

在这里插入图片描述
我们可以使用shape函数比如使用train.shape就可以查看到训练集中行列数量

train.shape
#(891, 12)891行,12列
我们可以使用info函数比如使用train.info()就可以查看到数据中,每一行的类型和空行
train.info()

在这里插入图片描述
由以上数据可以看出Age,Fare,Cabin,Embarked,几列中数据有空值,应进行相应的填充

  • 填充情况当填充目标缺失很多时,建议直接删除
  • 当填充对象不多的时候,如果目标时数字型,如年龄,身高,价格,可以用中位数,或者众数,平均值。如果对象很重要建议使用随机森林构建模型预测填充。
  • 如果填充值是字符型缺失了一部分,不多也不少,建议将缺失的一部分单独设置为一类。

实操

通过info获知了那些列是空的,因此我们要把空列中的那些行查出,方便后续操作。

# Embarked 填充港口参数
# 查看港口那一列空值行
datas[datas['Embarked'].isnull()]

在这里插入图片描述

具体问题具体分析

根据人员信息看出,是两名女性,船票是一等票,建议填充为存活率高的港口分类。

#填充数据集中Embarked列的空白行为C
datas['Embarked'] = datas['Embarked'].fillna('C')

年龄问题

首先寻找特征,使用目标对象的年龄,性别,船票,训练一个模型,然后有那个模型

from sklearn.ensemble import RandomForestRegressor
ages = datas[['Age', 'Pclass','Sex']]
ages=pd.get_dummies(ages)
known_ages = ages[ages.Age.notnull()].values
unknown_ages = ages[ages.Age.isnull()].values
y = known_ages[:, 0]
X = known_ages[:, 1:]
rfr = RandomForestRegressor(random_state=60, n_estimators=100, n_jobs=-1)
rfr.fit(X, y)
pre_ages = rfr.predict(unknown_ages[:, 1::])
datas.loc[ (datas.Age.isnull()), 'Age' ] = pre_ages

重新划分数据集

从中取出关键列,或者认为构建的关键列
axis默认为0代表行,axis=1则使用列

#合并两个集合
datas=pd.concat([train, test])
#从集合中取出关键的列,有些是人为构建的
datas=datas[['Survived','Pclass','Sex','Age','Fare','Embarked','Title','Fam_type','Board','Ticketlabels']]
#将类别数据转换为向量
datas=pd.get_dummies(datas)
#train是有存活数据的数据集
train=datas[datas['Survived'].notnull()]
#test是没有没有存活信息的数据集,并且删除掉Survived那一列
test=datas[datas['Survived'].isnull()].drop('Survived',axis=1)
# X的值不包含第0列,从第一列开始到后面的所有列
X = train.values[:,1:]
# y仅有一列,就是Survived 第0列,用作模型的训练
y = train.values[:,0]
#fit(X,y)
#训练的数据是X,验证的结果集是y

如何删除含有空白值的行

如果数据集非常大,而这些缺失项很少,建议直接删除,该行

datas.dropna(axis=0, how='any')

根据条件删除一些行

从train数据集中删除票价大于的行

train = train.drop(index= train[train.Fare>= 700].index, axis=0)

查看特征和标签的相关性

train.corr()['Survived']

http://www.ppmy.cn/news/1433773.html

相关文章

YOLOv8 训练自己的数据集(20240423)

环境搭建请参考:Win10 搭建 YOLOv8 运行环境(20240423)-CSDN博客 环境测试请参考:本地运行测试 YOLOv8(20240423)-CSDN博客 一、使用 YOLOv8 的 coco128 数据集熟悉一下如何训练和预测 1.1、在项目根目录…

MySQL中创建和操纵表

目录 一、创建表 1.创建表 2.NULL值 3.主键 4.自动增量 5.默认值 二、更新、删除、重命名表 1.更新表 2.删除表 3.重命名表 三、引擎类型 一、创建表 1.创建表 CREATE TABLE tablename (cust_id int NOT NULL AUTO_INCREMENT,cust_name char(5…

利用AI知识库,优化医保系统售后信息管理流程

在医疗行业中,传统知识库管理虽能整合医疗行业知识,但搜索和管理效率有限,导致医护人员难以高效利用。特别是面对医保系统等复杂系统时,他们常需依赖人工客服或繁琐的电子产品手册解决问题。而HelpLook AI知识库利用AI技术&#x…

Redisson - 看门狗机制(Watch Dog)禁用方案

问题描述 Redis - Redisson tryLock 函数参数分析-CSDN博客 我们在这篇文章有提到过看门狗机制,其实有时候我们不想要看门狗机制的时候,如何禁用呢?!因为有时候不想续期,需要实时性比较高的业务,但是看门…

【学习】RESTful API

什么是RESTful API RESTful API 是一种设计风格,用于构建网络应用程序的 API。它基于 REST(Representational State Transfer)原则,提供了一种简单、灵活、可伸缩的方式来构建 Web 服务。RESTful API 设计的关键原则包括&#xf…

el-dialog 实现可以拖动的弹窗

实现可拖动弹窗。 一、在需要进行拖拽的弹窗组件添加如下代码 1.vue组件 el-dialog组件添加 v-el-drag-dialog 2.引入index 文件 import elDragDialog from ../index.js 3.引入指令 directives: {elDragDialog}, 二、index.js文件代码 ​ import drag from ./dragconst …

网络安全(黑客技术)—2024最新自学手册

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防…

【GEE】优雅地实现年度、季度、月度甚至旬度影像合成(附完整代码)

以下文章来源于GEE学习室 ,作者GEEStudyRoom 光学影像由于受到天气因素(云、雨和雾等)影响,导致单张影像数据存在大量坏死像元。此处,坏死像元指由于受到云遮挡等导致下垫面地物覆盖不能准确被卫星信息捕捉从而不能正…