我想知道是否有可能获得pandas.get_dummies的功能名称,所以我可以将它传递给export_graphviz。我使用get_dummies对我的数据集进行编码以获取sklearn DecisionTreeClassifier。当我导出树时,我希望节点的输出更容易阅读。
提前谢谢!
编辑:
这是我想要完成的一个例子:
body {
margin: 0;
padding: 0;
text-align: center;
}
#container {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
}
我希望能够使用feature_names参数
标记要素#Concatenate the sets
concated = pd.concat([train_file, test_file])
#Get the encoded set
concated_encoded = pd.get_dummies(concated, columns=cols_to_retain)
#Separate the sets
train = concated_encoded[concated_encoded["Train"] == 1]
test = concated_encoded[concated_encoded["Train"] == 0]
train = train.drop(["Train"], axis=1)
test = test.drop(["Train"], axis=1)
X_train, X_val, y_train, y_val = train_test_split(train, train_outcome, test_size=0.15)
clf = DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(X_train,y_train)
y_pred_val = clf.predict(X_val)
import StringIO
import pydot
dot_data = StringIO.StringIO()
答案 0 :(得分:0)
使用pd.get_dummies时,新列会接收与数据框中该要素的值对应的名称。在文档的以下示例中,您可以看到虚拟列如何接收名称<prefix>_<value>
:
>>> df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
'C': [1, 2, 3]})
>>> pd.get_dummies(df, prefix=['col1', 'col2'])
C col1_a col1_b col2_a col2_b col2_c
0 1 1 0 0 1 0
1 2 0 1 1 0 0
2 3 1 0 0 0 1
因此您可能只需要使用:
feature_names = list(train.columns)
export_graphviz(clf, out_file=dot_data, feature_names=feature_names)
答案 1 :(得分:0)
这是另一个使用prefix
get_dummies()
参数的想法。下面的单个字符串用于为创建的所有要素名称添加前缀。你可以制定一个更复杂的方案,因为prefix
也可以拿一个字典或列表。
visa_data_copy = pd.get_dummies(visa_data_copy, columns=categorical_cols, prefix='UID_001')
added_dummy_cols = [item for item in list(visa_data_copy.columns.values) if item.startswith('UID_001')]
因此added_dummy_cols
最终将成为get_dummies()
为您添加的列名列表,您可以在以后随时使用它。
答案 2 :(得分:0)
pd.get_dummies
实际上返回一个DataFrame(或sparseDataFrame)。对于DataFrame df
,您可以像使用每个df.columns
一样,通过请求DataFrame对象的columns属性来访问列(或特征)名称,如以下示例所示:
>>> df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
'C': [1, 2, 3]}) #creates sample dataframe
>>> df_dummified = pd.get_dummies(df) #returns new coded dataframe
>>> columns = df_dummified.columns #returns index object holding new column names
>>> columns.tolist() #converts the index object to a list
['C', 'A_a', 'A_b', 'B_a', 'B_b', 'B_c']