数据处理笔记(一)

来源:互联网 发布:建站平台系统源码 编辑:程序博客网 时间:2024/06/05 16:28

一 处理缺失值的几种方法:

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 model2. 数据质量检查    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()
  • pandasget_dummies 可处理多维的数值型的跟字符型的。
    优势:

1)本身就是 pandas 的模块,所以对 DataFrame 类型兼容很好
2)不管你列是数值型还是字符串型,都可以进行二值化编码
3)能够根据指令,自动生成二值化编码后的变量名

劣势:
1)但毕竟不是 sklearn 里的transformer类型,所以得到的结果得手动输入到 sklearn 里的相应模块,也无法像 sklearn 的transformer一样可以输入到pipeline中 进行流程化地机器学习过程。
2)get_dummies 不像 sklearn 的 transformer一样,有 transform方法,所以一旦测试集中出现了训练集未曾出现过的特征取值,简单地对测试集、训练集都用 get_dummies 方法将导致数据错误