一、數據預處理
數據(Data.csv)
Country Age Salary Purchased
France 44.0 72000.0 No
Spain 27.0 48000.0 Yes
Germany 30.0 54000.0 No
Spain 38.0 61000.0 No
Germany 40.0 NaN Yes
France 35.0 58000.0 Yes
Spain NaN 52000.0 No
France 48.0 79000.0 Yes
Germany 50.0 83000.0 No
France 37.0 67000.0 Yes
-
缺失數據處理
dataset = pd.read_csv("Data.csv") X = dataset.iloc[:, :-1].values # 自變量 Y = dataset.iloc[:, 3].values # 因變量 # 處理缺失值, 將某列的平均值作爲彌補(strategy="mean": 取平均值彌補缺失值,axis=0: 對應數據列) imputer = Imputer(missing_values='NaN', strategy="mean", axis=0) imputer = imputer.fit(X[:, 1:3]) # 擬合所有行,1~3取不到第三列 X[:, 1:3] = imputer.transform(X[:, 1:3]) # 轉化爲處理後的缺失值
-
分類數據
對國家進行分類(虛擬編碼) France Spain Germany 0 0 1 Germany 0 1 0 Spain 1 0 0 France
label_encoder_X = LabelEncoder() X[:, 0] = label_encoder_X.fit_transform(X[:, 0]) one_hot_encoder = OneHotEncoder(categorical_features=[0]) # categorical_features: 對應列序號 X = one_hot_encoder.fit_transform(X).toarray() # 同上對Purchased分類 label_encoder_Y = LabelEncoder() Y = label_encoder_X.fit_transform(Y)
-
劃分數據集, 訓練數據集, 測試訓練集(比重一般不超過0.4)
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
-
特徵縮放(利用歐式距離判斷,爲了讓多個自變量變化程度縮小)
標準化(StandardDeviation: 標準方差) x(stand) = x-mean(x) / StandardDeviation(x) 正常化 x(norm) = x-min(x) / max(x)-min(x)
sc_x = StandardScaler() x_train = sc_x.fit_transform(x_train) # 對自變量進行特徵縮放(標準化) x_test = sc_x.transform(x_test) # 上一步sc_X已經被擬合好了 # 對因變量不需要縮放
二、總結
數據預處理步驟:導入標準庫->導入數據集->缺失數據處理(可能不需要)->分類數據(可能不需要)->將數據分成訓練集和測試集->特徵縮放(可能不需要)