怎么在python中通过资讯来填充缺失值

  介绍

怎么在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中通过资讯来填充缺失值