机器学习第一天有两个找不到原有包的问题。
问题1:发现调用sklearn.preprocessing 库中的 Imputer用作处理丢失数据报错。
原因是Imputer的在数据库中的位置发生了改变,改用最新的导入方法即可。
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = np.nan, strategy = "mean",
fill_value=None, verbose=0, copy=True,
add_indicator=False)
参数含义
- missing_values:int, float, str, (默认)np.nan或是None, 即缺失值是什么。
- strategy:空值填充的四种选择(默认)mean、median、most_frequent、constant;mean表示该列的缺失值由该列的均值填充;median为中位数,most_frequent为众数。constant表示将空值填充为自定义的值,但这个自定义的值要通过fill_value来定义。
- fill_value:str或数值,默认为Zone。当strategy == "constant"时,fill_value被用来替换所有出现的缺失值(missing_values)。fill_value为Zone,当处理的是数值数据时,缺失值(missing_values)会替换为0,对于字符串或对象数据类型则替换为"missing_value" 这一字符串。
- verbose:int,(默认)0,控制imputer的冗长。
- copy:boolean,(默认)True,表示对数据的副本进行处理,False对数据原地修改。
- add_indicator:boolean,(默认)False,True则会在数据后面加入n列由0和1构成的同样大小的数据,0表示所在位置非缺失值,1表示所在位置为缺失值。
Imputer参数详解
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
axis: 默认为 axis=0
axis = 0, 按列处理
aixs =1 , 按行处理
问题2:交叉验证cross_validation无法调用
原因同样是包的位置改变,改为调用一下语句。
from sklearn.model_selection import train_test_split
参考文献: (1条消息) 缺失值处理:SimpleImputer(简单易懂 + 超详细)_Dream丶Killer的博客-CSDN博客_simpleimputer