首先试验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,其余位置为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)