我使用FeatureAgglomeration将我的105x105数据帧集群到基于Spearman的40个集群中。现在,我想使用feature_names_in和输出获得输出特性名,但是它似乎不起作用,而且我再也找不到解决方案了。这是我的密码:
import pandas as pd
import numpy as np
from sklearn.cluster import FeatureAgglomeration
features = np.array([...])
print(features.shape)
>>> (105,)
Class1_rank=pd.read_excel(r'H:\PycharmProjects\RadiomicsPipeline\Class1_rank.xlsx')
print(Class1_rank)
>>> original_shape_Elongation ... original_ngtdm_Strength
original_shape_Elongation 1.000000 ... -0.054310
original_shape_Flatness 0.616327 ... -0.019544
original_shape_LeastAxisLength 0.271645 ... -0.293157
>>> [105 rows x 105 columns]
print(agglo.n_features_in_)
>>> 105
print(agglo.feature_names_in_(Class1_rank))
print(agglo.get_feature_names_out())
df_reduced = agglo.transform(Class1)在print(agglo.feature_names_in_()),我得到以下错误:
TypeError: 'numpy.ndarray' object is not callable但是,Class1_rank是一个DataFrame,因此不应该给出这个错误?我在这里做错了什么?
我试过的是:
print(agglo.feature_names_in_(Class1_rank))。工作,但是print(agglo.get features out)给出了以下结果,而不是我所包含的特性的名称。
['featureagglomeration0' 'featureagglomeration1' 'featureagglomeration2' 'featureagglomeration3' 'featureagglomeration4'....]features作为两个函数的输入,会产生相同的错误。Class1_rank的字符串插入,会产生相同的错误。发布于 2022-07-20 16:40:48
feature_names_in_是一个数组,不是一个可调用的数组,所以agglo.feature_names_in_是正确的,但是它后面的括号(空或非)是不正确的。
get_feature_names_out()给出了每个集群的名称,这些名称与输入特性并不是1-1对应的,所以它不能给出类似于原始功能名称的名称。您可以使用labels_属性查找哪些输入特性进入哪些输出特性,例如这个答案。
https://stackoverflow.com/questions/73053157
复制相似问题