
大约86%的值为“No”,将缺失值估计为“No”是安全的,因为正确的概率会更高。可以使用以下代码完成:
df['Self_Employed'].fillna('No',inplace=True)
额的缺失值:
table = df.pivot_table(values='LoanAmount', index='Self_Employed' ,columns='Education', aggfunc=np.median)# Define function to return value of this pivot_tabledef fage(x): return table.loc[x['Self_Employed'],x['Education']]# Replace missing valuesdf['LoanAmount'].fillna(df[df['LoanAmount'].isnull()].apply(fage, axis=1), inplace=True)
这样为你提供一个很好的方式来估算贷款额度的缺失值。
如何处理LoanAmount和ApplicantIncome分布中的极端值?
我们首先分析LoanAmount。 极端值可能有实际意义的,有些人可能因为特殊需要才申请高额贷款,所以不用把它们视为离群值,我们来尝试用对数变换来消除它们的影响:
df['LoanAmount_log'] = np.log(df['LoanAmount'])df['LoanAmount_log'].hist(bins=20)
再次查看直方图:

现在分布看起来更加接近正态分布,极端值的影响已经显示减弱。
对于变量ApplicantIncome,一个可能的直觉是,一些申请人申报收入较低,但是综合收入高也获得支持。所以把申报收入作为总收入结合在一起是一个好主意,并采取同样的对数变换。
df['TotalIncome'] = df['ApplicantIncome'] + df['CoapplicantIncome']df['TotalIncome_log'] = np.log(df['TotalIncome'])df['LoanAmount_log'].hist(bins=20)

现在我们看到分布比以前好多了。我会把性别、已婚、赡养者、贷款月数、信用历史等缺失值的估算留给大家完成。此外,我鼓励大家考虑可能从数据中发掘附加信息,例如,创建列LoanAmount / TotalIncome可能是有道理的,因为它给出了申请人如何适应偿还贷款的想法。
接下来,我们将看看创建预测模型。python基础教程 pdf
在Python中构建一个预测模型
现在,我们已经有对建模有用的数据,现在我们来看看python代码,在我们的数据集上创建一个预测模型。Skicit-Learn(sklearn)是Python中最常用的机器学习库,我们将会借助它来建模。
既然,sklearn要求所有输入都是数字,所以我们应该对类别进行编码,将所有的分类变量转换为数值变量。这可以使用以下代码完成:
from sklearn.preprocessing import LabelEncodervar_mod = ['Gender','Married','Dependents','Education','Self_Employed','Property_Area','Loan_Status']le = LabelEncoder()for i in var_mod: df[i] = le.fit_transform(df[i])df.dtypes
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-78832-7.html
声音太好听