自学内容网 自学内容网

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

读取数据

查看数据各个参数信息

查看有无空值

如何填充空值

一些特殊字段如何处理

读取数据

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

原文地址:https://blog.csdn.net/weixin_45079974/article/details/137993243

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!