一、数据预处理
数据(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已经被拟合好了 # 对因变量不需要缩放
二、总结
数据预处理步骤:导入标准库->导入数据集->缺失数据处理(可能不需要)->分类数据(可能不需要)->将数据分成训练集和测试集->特征缩放(可能不需要)