大家好,在昨天完成資料處理,將資料型態轉為數值,並且分成訓練資料、驗證資料和測試資料後,今天要接著進行資料的標準化以及準備訓練資料。
將資料標準化的目的是資料縮放到相同的大小,之所以要進行資料標準化,是因為如果資料的量級差距過大,可能會造成神經網路較重視數值大的資料,而忽略數值小的資料,以這次使用的資料集中的資料為例:房屋臥室的數量與房屋居住坪數的量級就差距過大,房屋臥室數量大約是1至5間,但居住坪數大多都是千位數,為避免忽略居住臥室數量資料,就需要將資料標準化。這次要使用的是標準分數(Standard Score),或稱為Z分數(z-score),給定資料一個平均數後,計算距離平均數有幾個標準差,大於平均數為正值,小於平均數為負值,這樣就可以讓資料聚集在0的附近。
下面是資料標準化的程式:
train_validation_data = pd.concat([train_data, val_data])
mean = train_validation_data.mean()
std = train_validation_data.std()
train_data = (train_data-mean)/std
val_data = (val_data -mean)/std
標準化完成後將訓練資料建立成Numpy array:
x_train=np.array(train_data.drop('price ', axis= 'columns '))
y_train=np.array(train_data['price '])
x_val=np.array(val_data.drop('price ', axis= 'columns '))
y_val=np.array(val_data['price '])
x代表訓練用的資料,y代表預期輸出的標記答案。
執行x_train.shape會顯示有12967筆資料與21種資訊,代表著建立模型的輸入資料維度為21。