预处理

一、使用Pandas DataFrame读取数据并进行预处理(以泰坦尼克数据为例)

1、读取titanic.xls

all_df=pd.read_excel(filepath)

2、查看前两项数据

all_df[:2]

3、把需要的字段选取到DataFrame中(去掉不需要的特征字段)

cols=['survived','name','pclass','sex','age','sibsp','parch','fare','embarked']
all_df=all_df[cols]

4、显示出前两项数据,进行预处理

①姓名name字段在预测阶段会使用,但是训练时不需要,必须先删除(用drop)

df=all_df.drop(['name'],axis=1)

②找出含有null值的字段

all_df.isnull().sum()

③将age字段为null的数据替换成平均值

age_mean=df['age'].mean()
df['age']=df['age'].fillna(age_mean)

④转换性别字段为0和1

df['sex']=df['sex'].map({'female':0,'male':1}).astype(int)

⑤将embarked字段进行一位有效编码转换

x_OneHot_df=pd.get_dummies(data=df,columns=["embarked"])

二、DataFrame转换为Array

ndarray=x_OneHot_df.values

三、使用sklearn提供的preprocessing数据预处理模块进行标准化

将ndarray特征字段进行标准化

from sklearn import preprocessing    #导入sklearn的数据预处理模块

minmax_scale=preprocessing.MinMaxScaler(feature_range=(0,1))     #建立MinMaxScaler标准化刻度minmax_scale
scaledFeatures=minmax_scale.fit_transform(Features)  #使用minmax_scale.fit_transform对Features进行标准化

四、将数据分为训练数据与测试数据

将数据以随机方式分为训练数据与测试数据

msk=np.random.rand(len(all_df))<0.8    #按照8:2的比例使用np.random.rand产生msk
train_df=all_df[msk]                              
test_df=all_df[~msk]


以上,可以创建一个PreprocessData函数,方便后续使用

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,colums=["embarked"])

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

    minmax_scale=preprocessing.MinMaxScaler(feature_range(0,1))
    scaleFeatures=minmax_scale.fit_transfrom(Features)

    return scaleFeatures,Label

根据实际需要可以修改,思路相同

整体前期处理步骤

读取数据—>把需要的字段选取到DataFrame中—>依照比例将数据分为训练数据与测试数据—>显示训练数据与测试数据的项数—>将训练数据与测试数据进行预处理


参考:林大贵,《Tensorflow+Keras》,清华大学出版社

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值