我正在尝试通过聚类来改善分类结果,并将聚类的数据用作另一个功能(或单独使用它来代替所有其他功能-尚不确定)。
因此,我们使用的是非监督算法-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]
培训与测试的尺寸不同。那么如何实现这种方法呢?
您的方法不正确-您正在尝试将您的[[test数据的簇标签(pred_labels
)用作单个功能,并使用它来将分类器与您的training标签[C0 ]。即使在巧合的情况下,这些数据集的维度都是相同的(因此没有给出维度失配错误,如此处所示),这在概念上是错误的,实际上没有任何意义。
Y_train
和X_train
是熊猫数据帧,这是过程:X_test