Python用KNN处理缺失值(4月30-5月1日)

 首先试验KNN的简单示例代码

#方法3:
# 本论文拟采用的填充缺失值的方法为KNN:
import pandas as pd
from sklearn.impute import KNNImputer
#创建一个包含缺失值的数据集
data_KNN={
    '第一列':[1,2,None,4,5],
    '第二列':[3,None,5,7,9],
    '第三列':[2,4,6,None,10]
}
df=pd.DataFrame(data_KNN)
print("未使用KNN填补缺失值的数据:")
print(df)
#创建一个KNNImputer对象
imputer=KNNImputer(n_neighbors=2)
#对缺失值进行插补,使用2个邻居
imputed_data=imputer.fit_transform(df)
#将插补后的数据保存到新的数据框中
imputed_df=pd.DataFrame(imputed_data,columns=df.columns)

print("使用KNN填补缺失值后的数据:")
print(imputed_df)
#在上面的示例中,我们首先创建了一个包含缺失值的数据集df。然后,我们
# #创建了一个KNNImputer对象,并指定最近邻数量为2。接下来,我们
# #使用fit_transform()方法对数据集df进行插补,得到插补后的数据imputed_data。
# 最后,我们将插补后的数据保存到一个新的数据框imputed_df中,并打印出来。

结果如下:

 使用试验.xls文件做KNN填补缺失值

首先,直接将原始数据导入python就报错了,询问GPT发现是因为KNN算法只能处理数值型数据, 那么需要将非数值型数据(如string和枚举型)转换成数值型数据

将非数值型数据(如string和枚举型)转换成数值型数据

在使用KNN算法时,需要将非数值数据转换为数值型数据。一种常用的方法是使用独热编码(One-Hot Encoding)将字符串类型的数据转换为数值型数据。具体步骤如下:

  1. 首先,将字符串类型的数据转换为分类变量,即将每个不同的字符串值映射为一个类别。

  2. 然后,对每个类别进行独热编码,即将每个类别表示为一个向量,向量的长度为所有类别的数量,其中对应类别的位置为1,其余位置为0。

例如,对于一个包含"red"、"green"和"blue"三种颜色的字符串列,可以将其转换为三个二进制列,分别表示"red"、"green"和"blue"的存在与否。

在Python中,可以使用pandas库的get_dummies函数来进行独热编码。示例代码如下:

import pandas as pd

# 加载xls表格数据
data = pd.read_excel('your_data.xls')

# 对包含字符串型、枚举型和字符型数据的列进行独热编码
encoded_data = pd.get_dummies(data)

print(encoded_data)

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值