通过使用聚类作为特征来改善分类

问题描述 投票:-1回答:1

我正在尝试通过聚类来改善分类结果,并将聚类的数据用作另一个功能(或单独使用它来代替所有其他功能-尚不确定)。

因此,我们使用的是非监督算法-GMM:

gmm = GaussianMixture(n_components=4, random_state=RSEED)

gmm.fit(X_train)

pred_labels = gmm.predict(X_test)

我用训练数据训练了模型,并根据测试数据预测了聚类。

现在,我想使用分类器(例如KNN)并在其中使用群集数据。所以我尝试了:

#define the model and parameters
knn = KNeighborsClassifier()

parameters = {'n_neighbors':[3,5,7],
              'leaf_size':[1,3,5],
              'algorithm':['auto', 'kd_tree'],
              'n_jobs':[-1]}

#Fit the model
model_gmm_knn = GridSearchCV(knn, param_grid=parameters)
model_gmm_knn.fit(pred_labels.reshape(-1, 1),Y_train)
# model_gmm_knn.fit(X_clustered_train,Y_train)

model_gmm_knn.best_params_

但是我得到:

[ValueError:找到样本数量不一致的输入变量:[418,891]

培训与测试的尺寸不同。那么如何实现这种方法呢?

python machine-learning knn gmm
1个回答
0
投票

您的方法不正确-您正在尝试将您的[[test数据的簇标签(pred_labels)用作单个功能,并使用它来将分类器与您的training标签[C0 ]。即使在巧合的情况下,这些数据集的维度都是相同的(因此没有给出维度失配错误,如此处所示),这在概念上是错误的,实际上没有任何意义。

您实际要做的是:

    将GMM与您的训练数据相匹配
  1. 使用适合的GMM来获取训练和测试数据的集群标签。
  2. 在两个数据集中将群集标签作为新功能附加
  3. 使用此“增强型”训练数据为您的分类器设置。
  • 总共,并假设您的Y_trainX_train是熊猫数据帧,这是过程:

    X_test

  • © www.soinside.com 2019 - 2024. All rights reserved.