一、使用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》,清华大学出版社