一 处理缺失值的几种方法:
1. 提交的kaggle代码转换成所要求的形式。
my_submission = pd.DataFrame({‘Id’:test.Id,’SalePrice’:predicted_prices})
my_submission.to_csv(‘submission.csv’,index = False)
1. 缺失值处理的几种方法
1. 直接把有缺失值的那一列去掉
2. 利用Imputation 来填充
3. 利用Pipeline 来填充(Pipelines simplify model building, model validation and model
2. 数据质量检查
1. train_df.isnull().any().any(): 检查每一列是否有空的值。
2. missingno 包:检查缺失值,一目了然。
1. zip(*function()): 有一个 * 行变为列。
二特征二值化编码:
1.
scikit-learn: OneHot Encoder(),LabelEncoder(), LabelBinarizer(), MultiLabelBinarizer()
pandas: get_dummies()
OneHotEncoder():
处理数值类型变量,输入为二维数组(重要),可用_feature_indices_
方法进行查看多个变量时,每个变量所占的列。- 处理字符型类型变量:方法一 先用
LabelEncoder()
转换成连续的数值型变量,再用OneHotEncoder()
二值化
方法二 直接用LabelBinarizer()
进行二值化
LabelBinarizer() , LabelEncoder()
输入被限定为一维的。为了处理多维的可用MultiLabelBinarizer()
。 pandas
的get_dummies
可处理多维的数值型的跟字符型的。
优势:
1)本身就是 pandas 的模块,所以对 DataFrame 类型兼容很好
2)不管你列是数值型还是字符串型,都可以进行二值化编码
3)能够根据指令,自动生成二值化编码后的变量名
劣势:
1)但毕竟不是 sklearn 里的transformer类型,所以得到的结果得手动输入到 sklearn 里的相应模块,也无法像 sklearn 的transformer一样可以输入到pipeline中 进行流程化地机器学习过程。
2)get_dummies 不像 sklearn 的 transformer一样,有 transform方法,所以一旦测试集中出现了训练集未曾出现过的特征取值,简单地对测试集、训练集都用 get_dummies 方法将导致数据错误