怎么在python中通过资讯来填充缺失值?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
#,加载库 import numpy  as np 得到fancyimpute import 资讯 得到sklearn.preprocessing import  StandardScaler 得到sklearn.datasets import  make_blobs #,创建模拟特征矩阵 特性,,_ =, make_blobs (=n_samples 1000年, ,,,,,,,,,,,,,,,,,,,,,,,,n_features =, 2, ,,,,,,,,,,,,,,,,,,,,,,,,random_state =, 1) #,标准化特征 时间=scaler StandardScaler () 时间=standardized_features scaler.fit_transform(特性) standardized_features #,制造缺失值 时间=true_value standardized_features (0,0) standardized_features (0,0),=np.nan standardized_features #,预测 时间=features_knn_imputed 资讯(k=5,, verbose=0) .fit_transform (standardized_features)=#,features_knn_imputed 资讯(k=5, verbose=0) .complete (standardized_features) features_knn_imputed #,#对比真实值和预测值 print(“真实值:“,,true_value) print(“预测值:“,,features_knn_imputed [0]) #,加载库 import numpy  as np 得到fancyimpute import 资讯 得到sklearn.preprocessing import  StandardScaler 得到sklearn.datasets import  make_blobs #,创建模拟特征矩阵 特性,,_ =, make_blobs (=n_samples 1000年, ,,,,,,,,,,,,,,,,,,,,,,,,n_features =, 2, ,,,,,,,,,,,,,,,,,,,,,,,,random_state =, 1) #,标准化特征 时间=scaler StandardScaler () 时间=standardized_features scaler.fit_transform(特性) standardized_features #,制造缺失值 时间=true_value standardized_features (0,0) standardized_features (0,0),=np.nan standardized_features #,预测 时间=features_knn_imputed 资讯(k=5,, verbose=0) .fit_transform (standardized_features)=#,features_knn_imputed 资讯(k=5, verbose=0) .complete (standardized_features) features_knn_imputed #,#对比真实值和预测值 print(“真实值:“,,true_value) print(“预测值:“,,features_knn_imputed [0]) 真实值:0.8730186113995938 预测值:1.0955332713113226
<强>补充:scikit-learn中一种便捷可靠的缺失值填充方法:KNNImputer 强>
在数据挖掘工作中,处理样本中的缺失值是必不可少的一步。其中对于缺失值插补方法的选择至关重要,因为它会对最后模型拟合的效果产生重要影响。
在2019年底,scikit-learn发布了0.22版本,此次版本除了修复之前的一些错误外,还更新了很多新功能,对于数据挖掘人员来说更加好用了。其中我发现了一个新增的非常好用的缺失值插补方法:KNNImputer。这个基于资讯算法的新方法使得我们现在可以更便捷地处理缺失值,并且与直接用均值,中位数相比更为可靠。利用“近朱者赤”的资讯算法原理,这种插补方法借助其他特征的分布来对目标特征进行缺失值填充。
下面,就让我们用实际例子来看看KNNImputer是如何使用的吧?
使用KNNImputer需要从scikit-learn中导入:
得到sklearn.impute import KNNImputer
先来一个小例子开开胃,数据中第二个样本存在缺失值。
data =, [[2, 4, 8],, [3, np.nan,, 7],,[5, 8日,3],,[4,,3,,8]]
KNNImputer中的超参数与资讯算法一样,n_neighbors为选择“邻居”样本的个数,先试试n_neighbors=1。
imputer =, KNNImputer (n_neighbors=1) imputer.fit_transform(数据)
可以看的到,因为第二个样本的第一列特征3和第三列特征7,与第一行样本的第一列特征2和第三列特征8的欧氏距离最近,所以缺失值按照第一个样本来填充,填充值为4。那么n_neighbors=2呢?
imputer =, KNNImputer (n_neighbors=2) imputer.fit_transform(数据)
此时根据欧氏距离算出最近相邻的是第一行样本与第四行样本,此时的填充值就是这两个样本第二列特征4和3的均值:3.5 .
接下来让我们看一个实际案例,该数据集来自Kaggle皮马人糖尿病预测的分类赛题,其中有不少缺失值,我们试试用KNNImputer进行插补。
import numpy as np import pandas  as pd import pandas_profiling  as pp import matplotlib.pyplot  as plt import seaborn  as sns sns.set(上下文=皀otebook",,) import 警告 warnings.filterwarnings(& # 39;忽略# 39;) % matplotlib 内联 , 得到sklearn.impute import  KNNImputer怎么在python中通过资讯来填充缺失值