educoder机器学习基本模型与算法在线实验挑战
任务描述
本关任务:读取“银行贷款审批数据.xlsx”表,自变量为x1-x15,决策变量为y(1-同意贷款,0-不同意贷款),其中x1-x6为数值变量,x7-x15为名义变量,请对x1-x6中存在的缺失值用均值策略填充,x7-x15用最频繁值策略填充。
相关知识
为了完成本关任务,你需要掌握三种缺失值处理办法:1.均值策略填充;2.中位数填充;3.最频繁值策略填充。
方法步骤
填充的数据结构要求为数组或数据框,类型为数值类型。使用Scikit-learn中的数据预处理模块进行缺失值填充的基本步骤如下:
#1.导入数据预处理中的填充模块Imputer
from sklearn.preprocessing import Imputer
#2.利用Imputer创建填充对象imp
imp = Imputer(missing_values='NaN', strategy='mean', axis=0) #创建按列均值填充策略对象
'''其对象参数说明:
strategy:均值(mean)、中位数(median)、最频繁值(most_frequent)三种填充方法
axis=0:按列填充方式
axis=1:按行填充方式'''
#3.调用填充对象imp中的fit()拟合方法,对待填充数据进行拟合训练
imp.fit(Data) #Data为待填充数据集变量
#4.调用填充对象imp中的transform()方法,返回填充后的数据集
FData=imp.transform(Data) #返回填充后的数据集FData
均值策略填充
定义待填充的数据变量data、c、C:
对C数据框中的数据采用按列均值填充,代码如下:
from sklearn.preprocessing import Imputer
fC=C
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit(fC)
fC=imp.transform(fC)
输出:
中位数填充
对c数组中的数据采用按行中位数填充,代码如下:
imp = Imputer(missing_values='NaN', strategy='median', axis=1)
fc=c
imp.fit(fc)
fc=imp.transform(fc)
输出:
最频繁值策略填充
对data数据中的a、c列采用按列最频繁值填充进行填充,代码如下:
fD=data[['a','c']]
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
imp.fit(fD)
fD=imp.transform(fD)
输出:
编程要求
根据提示,在右侧编辑器补充代码,实现缺失值填充。
测试说明
平台会对你编写的代码进行测试。
开始你的任务吧,祝你成功!
# ** ** ** ** ** Begin ** ** ** ** ** #
# 读取“ 银行贷款审批数据.xlsx” 表, 自变量为x1~x15, 决策变量为y( 1 - 同意贷款, 0 - 不同意贷款)
# 其中x1~x6为数值变量, x7~x15为名义变量
# 请对x1~x6中存在的缺失值用均值策略填充, x7~x15用最频繁值策略填充
# 最后返回填充处理后的X( 即x1~x15), 以及决策变量Y(即y)
def return_values():
import pandas as pd
# 读取Excel文件
df = pd.read_excel('银行贷款审批数据.xlsx')
# 填充缺失值
df.fillna(df.mean(), inplace = True)
# 使用最频繁值填充名义变量
for col in df.columns[6: ]:
df[col].fillna(df[col].mode()[0], inplace = True)
# 分离自变量和因变量
X = df.iloc[: ,: -1]
Y = df.iloc[: , -1]
# 返回结果
return (X, Y)
# ** ** ** ** ** End ** ** ** ** ** #