使用 KNNimputer 的最佳方式?
Best way to use KNNimputer?
我想用 KNN 来估算缺失值,我用这个方法 select 最好的 K:
for i, k in enumerate(neighbors):
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
train_accurate[i] = knn.score(X_train, y_train)
test_accurate[i] = knn.score(X_test, y_test)
然后我应用 n= 最准确的 KNNImputer。 KNNImputer 需要这个步骤还是它自己检查?如果这一步有效率,有没有短版不分裂train/test?
实际上有一种方法可以检查最佳 K,无需在训练和测试之间进行拆分。
方法是用不同的K数来研究Density,但它只是针对一个变量(我会select需要更多插补的那个)。最接近原始分布的是最好的 select.
n_neighbors = [1, 2, 3, 5, 7, 9, 20, 30]
fig, ax = plt.subplots(figsize=(16, 8))
# Plot the original distribution
sb.kdeplot(df.variableselected, label="Original Distribution")
for k in n_neighbors:
knn_imp = KNNImputer(n_neighbors=k)
density.loc[:, :] = knn_imp.fit_transform(datos)
sb.kdeplot(density.variableselected, label=f"Imputed Dist with k={k}")
plt.legend()
在锯下的示例中,任何 K 都是一样准确的,但这会因数据而异
我想用 KNN 来估算缺失值,我用这个方法 select 最好的 K:
for i, k in enumerate(neighbors):
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
train_accurate[i] = knn.score(X_train, y_train)
test_accurate[i] = knn.score(X_test, y_test)
然后我应用 n= 最准确的 KNNImputer。 KNNImputer 需要这个步骤还是它自己检查?如果这一步有效率,有没有短版不分裂train/test?
实际上有一种方法可以检查最佳 K,无需在训练和测试之间进行拆分。
方法是用不同的K数来研究Density,但它只是针对一个变量(我会select需要更多插补的那个)。最接近原始分布的是最好的 select.
n_neighbors = [1, 2, 3, 5, 7, 9, 20, 30]
fig, ax = plt.subplots(figsize=(16, 8))
# Plot the original distribution
sb.kdeplot(df.variableselected, label="Original Distribution")
for k in n_neighbors:
knn_imp = KNNImputer(n_neighbors=k)
density.loc[:, :] = knn_imp.fit_transform(datos)
sb.kdeplot(density.variableselected, label=f"Imputed Dist with k={k}")
plt.legend()
在锯下的示例中,任何 K 都是一样准确的,但这会因数据而异