如何解读scikit-learn中多项式回归的系数并构建预测公式
多项式回归系数解读与预测公式构建
首先明确:你用的是2阶多项式回归,输入5个原始特征,PolynomialFeatures(degree=2, include_bias=False)会生成三类特征,总数正好是20个,对应你得到的20个系数:
- 5个原始1次特征:
feat_a,feat_b,feat_c,feat_d,feat_e - 10个两两特征的交互项(乘积项):比如
feat_a*feat_b、feat_a*feat_c,直到feat_d*feat_e(组合数计算:C(5,2)=10) - 5个特征的平方项:
feat_a²,feat_b², ...,feat_e²
快速匹配系数与对应特征
直接用PolynomialFeatures的get_feature_names_out()方法,就能拿到每个系数对应的特征名称,代码如下:
# 在拟合poly_features后添加这行代码 feature_names = poly_features.get_feature_names_out() # 逐个打印特征与对应系数 for name, coeff in zip(feature_names, coefficients): print(f"{name}: {coeff}")
构建完整预测公式
拿到特征与系数的对应关系后,预测公式可以写成:
Y = intercept + coeff_0*feat_a + coeff_1*feat_b + coeff_2*feat_c + coeff_3*feat_d + coeff_4*feat_e + coeff_5*feat_a*feat_b + coeff_6*feat_a*feat_c + ... + coeff_14*feat_d*feat_e + coeff_15*feat_a² + coeff_16*feat_b² + coeff_17*feat_c² + coeff_18*feat_d² + coeff_19*feat_e²
其中coeff_0到coeff_19就是你输出的coefficients数组里的元素,顺序和feature_names的输出顺序完全对应。
比如如果feature_names第一个元素是feat_a,那coefficients[0]就是feat_a项的权重;如果feature_names第6个元素是feat_a*feat_c,那coefficients[5]就是这个交互项的权重,以此类推。
内容的提问来源于stack exchange,提问作者Ziri
相关产品推荐
相关产品推荐

