【发布时间】:2020-10-02 03:20:27
【问题描述】:
我正在尝试通过进行聚类来改进我的分类结果,并将聚类数据用作另一个特征(或单独使用它而不是所有其他特征 - 尚不确定)。
假设我正在使用无监督算法 - 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.best_params_
但我得到了:
ValueError: Found input variables with inconsistent numbers of samples: [418, 891]
Train 和 Test 的维度不同。 那么我该如何实现这种方法呢?
【问题讨论】:
-
请再想一想你在上一个
fit中要做什么;您正在尝试将测试数据的集群特征与训练数据的标签一起使用,来做...究竟是什么?除了明显的尺寸不匹配外,这些标签甚至与给定的特征不对应。 -
其实我并不确定我的方法是否正确,但是我被要求尝试通过使用无监督聚类算法来改善分类结果,我仍然不知道如何!基于这个例子 (kaggle.com/sudeep88/titanic-survivors-classification-using-pca) 他们使用 PCA 拟合的结果作为另一个特征,并在以后使用它进行预测。
标签: python machine-learning cluster-analysis knn gmm