SkLearning预处理-PolynomialFeature-怎么保留输出数组/数据帧的列名/标题

原学程将引见SkLearning预处置-PolynomialFeature-若何保存输入数组/数据帧的列名/题目的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

SkLearning预处理-PolynomialFeature-怎么保留输出数组/数据帧的列名/标题 教程 第1张

成绩描写

TLDR:怎样从sklearn.precessing.PolynomialFeature()函数夺取输入NumPy数组的头?


假定我有以下代码...

import pandas as pd
import numpy as np
from sklearn import preprocessing as pp

a = np.ones(三)
b = np.ones(三) * 二
c = np.ones(三) * 三

input_df = pd.DataFrame([a,b,c])
input_df = input_df.T
input_df.columns=['a', 'b', 'c']

input_df

 abc
0一二三
一一二三
二一二三

poly = pp.PolynomialFeatures(二)
output_nparray = poly.fit_transform(input_df)
print output_nparray

[[ 一.  一.  二.  三.  一.  二.  三.  四.  六.  九.]
 [ 一.  一.  二.  三.  一.  二.  三.  四.  六.  九.]
 [ 一.  一.  二.  三.  一.  二.  三.  四.  六.  九.]]

怎样能力使三x一0矩阵/输入_nparray传播a、b、c标签与上述数据之间闭系?

推举谜底

任务示例,全体在1言中(我假定这里的目的没有是"可读性"):

target_feature_names = ['x'.join(['{}^{}'.format(pair[0],pair[一]) for pair in tuple if pair[一]!=0]) for tuple in [zip(input_df.columns,p) for p in poly.powers_]]
output_df = pd.DataFrame(output_nparray, columns = target_feature_names)

革新:正如@OmerB指出的,如今您不妨应用get_feature_namesmethod:

>> poly.get_feature_names(input_df.columns)
['一', 'a', 'b', 'c', 'a^二', 'a b', 'a c', 'b^二', 'b c', 'c^二']

佳了闭于SkLearning预处置-PolynomialFeature-怎样保存输入数组/数据帧的列名/题目的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。