在使用机器算法之前,我们先把数据做下预处理,先把特征和标签拆分出来
housing = strat_train_set.drop("median_house_value",axis=1) #原始数据集并未发生改变
housing_labels=strat_train_set["median_house_value"].copy()
数据清洗
大多数机器学习算法是不能在有缺失值的数据集上面运行的,而本数据集特征total_bedrooms
是存在数据缺失现象的,所以就需要想办法处理,有以下几个思路:
- 1.将存在缺失数据的样本去除掉
- 2.将存在缺失数据的特征去除掉
- 3.将缺失值用统一的值替换,如:均值、中值等
上面对应的操作:
housing.dropna(subset=["total_bedrooms"]) # 1.删除样本
housing.drop("total_bedrooms", axis=1) # 2.删除特征,注意参数的用法和1不一样
median = housing["total_bedrooms"].median()
housing["total_bedrooms"].fillna(median) # 3. 中值填充
去过采用的是方法3那么就需要将替换的值保存起来,在后续的工作中需要将它应用到测试集,以及可能添加的新数据。上面这个操作是使用pandas,sklearn提供了Imputer
,同样能够很好解决缺失值问题,下面其用法
from sklearn.preprocessing import Imputer
imputer = Imputer(strategy="median")
housing_num = housing.drop("ocean_proximity", axis=1) #去除非数值类特征
imputer.fit(housing_num)
imputer提供了以下几种填充策略
- If "mean", then replace missing values using the mean along the axis.
- If "median", then replace missing values using the median along the axis.
- If "most_frequent", then replace missing using the most frequent value along the axis.