Keras学习(四)-泰坦尼克号幸存数据处理

1.下载数据

import urllib.request
import os #用于确认数据是否已经存在

url="http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic3.xls"
filepath="data/titanic3.xls"
if not os.path.isfile(filepath):#判断文件存在就不会进行下载操作
    result=urllib.request.urlretrieve(url,filepath)
    print('downloaded:',result)

2.进行数据清洗

import numpy
import pandas as pd

#读入数据
all_df = pd.read_excel(filepath)#使用pandas的api读入数据

#提取有用信息,去除无用信息
cols=['survived','name','pclass' ,'sex', 'age', 'sibsp',
      'parch', 'fare', 'embarked']          #提取有用数据,去除无关数据
all_df=all_df[cols]   #刷新数据dataframe

#判断有用数据中响应列为空的情况
print(all_df.isnull().sum())

在这里插入图片描述
在这里插入图片描述

#删除训练中不需要的姓名列
df=all_df.drop(['name'], axis=1) #训练时不需要姓名这种离散型较大的数据,所以进行删除

#填补数据的空缺
age_mean = df['age'].mean()   #取现有年龄的平均值
df['age'] = df['age'].fillna(age_mean) #将平均值填补到空缺的age框中

fare_mean = df['fare'].mean()  #提取费用的平均值
df['fare'] = df['fare'].fillna(fare_mean) #填补空缺

#将离散化数据可计算化
df['sex']= df['sex'].map({'female':0, 'male': 1}).astype(int) #将离散化的数据,对应为可以计算的数字

在这里插入图片描述

#进行一位有效编码转换,将不同分类分开形成类似one-hot的作用的数据
x_OneHot_df = pd.get_dummies(data=df,columns=["embarked" ])#进行一位有效编码转换

在这里插入图片描述
在这里插入图片描述

3.将DataFrame转化为Array

  • 因为后续深度学习训练的格式必须为Array
#转化为Array
ndarray = x_OneHot_df.values #转化为一维,只取内部的值

#提取标签值和特征值
Label = ndarray[:,0]
Features = ndarray[:,1:]

4.对已经处理好的数据进行标准化,提高训练准确度

from sklearn import preprocessing

minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1)) #设置标准化后的取值范围(建立对象)

scaledFeatures=minmax_scale.fit_transform(Features) #进行标准化处理

在这里插入图片描述

5.训练集和测试集的划分

msk = numpy.random.rand(len(all_df)) < 0.8 #按照8:2的比例随机产生msk
train_df = all_df[msk]  #选择80%的训练集
test_df = all_df[~msk] #选择%20的测试集--测试集于训练集无交集

在这里插入图片描述

  • 封装之前的所有数据预处理操作为一个函数
def PreprocessData(raw_df): #封装之前所有的数据预处理操作
    df=raw_df.drop(['name'], axis=1)
    age_mean = df['age'].mean()
    df['age'] = df['age'].fillna(age_mean)
    fare_mean = df['fare'].mean()
    df['fare'] = df['fare'].fillna(fare_mean)
    df['sex']= df['sex'].map({'female':0, 'male': 1}).astype(int)
    x_OneHot_df = pd.get_dummies(data=df,columns=["embarked" ])

    ndarray = x_OneHot_df.values
    Features = ndarray[:,1:]
    Label = ndarray[:,0]

    minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1))
    scaledFeatures=minmax_scale.fit_transform(Features)    
    
    return scaledFeatures,Label

#处理所有未处理的训练和测试数据
train_Features,train_Label=PreprocessData(train_df)
test_Features,test_Label=PreprocessData(test_df)
  • 经封装的处理函数处理后
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hot7732788/article/details/89383763