我有一个这样的分类训练集
col1 col2 col3 col4 9 8 10 910 8 9 9.....................
当我在其上应用MCA(多重对应分析)进行降维后,我得到了这样的结果
dim1 dim20.857 -0.5750.654 0.938.............
现在我的问题是,如何找到像这样的新数据作为输入时的(dim1, dim2)?
col1 col2 col3 col410 9 8 8
在训练集上执行MCA后的输出是特征值、惯性等
我的Python代码如下:
from sklearn.cluster import KMeansimport princedata = pd.read_csv("data/training set.csv")X = data.loc[:, 'OS.1':'DSA.1']size = len(X)X = X.values.tolist()#...#数据预处理#...df = pd.DataFrame(X)mca = prince.MCA( n_components=2, n_iter=3, copy=True, check_input=True, engine='auto', random_state=42 )mca = mca.fit(df)X = mca.transform(df)km = KMeans(n_clusters=3)km.fit(X)
1.我想从用户那里获取输入2.在使用MCA进行降维之前对其进行预处理3.使用K-means预测其所属的聚类
回答:
你只需要保持你的MCA对象mca
存活,以便能够使用它来转换新的输入数据。要做到这一点,只需在你的新数据上调用transform方法
from sklearn.cluster import KMeansimport princedata = pd.read_csv("data/training set.csv")X = data.loc[:, 'OS.1':'DSA.1']size = len(X)X = X.values.tolist()#...#数据预处理#...df = pd.DataFrame(X)mca = prince.MCA( n_components=2, n_iter=3, copy=True, check_input=True, engine='auto', random_state=42 )mca = mca.fit(df)X = mca.transform(df)km = KMeans(n_clusters=3)km.fit(X)# 新数据输入到x_new中# 1. 像预处理x一样预处理x_new# 重用mca处理x_newdf_new = pd.DataFrame(x_new)X_new = mca.transform(df_new)# 预测km.predict(X_new)