import numpy as np
import pandas as pd
from sklearn.preprocessing import PolynomialFeatures
#polynomial feature 多项式交叉特征defcol_pf(p=3,col=None,title='PF'):'''不含常数项,含自乘项'''assert p<=3assert p>1
l=len(col)+1
col=[]# for i in range(1,l):# col.append(title+str(i))if p>=2:
col=col+[title+str(i)+str(j)for i inrange(1,l)for j inrange(i+1,l)]if p>=3:
col=col+[title+str(i)+str(j)+str(k)for i inrange(1,l)for j inrange(i+1,l)for k inrange(j+1,l)]return col
defpoly_fea(input=None,degree=2,title='PF'):
poly=PolynomialFeatures(degree=degree,interaction_only=True,include_bias=False)
pf_trans=poly.fit_transform(input)
pf_trans=pf_trans[:,input.shape[1]:]
col=col_pf(p=degree,col=input.columns,title=title)return pd.DataFrame(pf_trans,index=input.index,columns=col)