如何访问Pipeline内部实例的属性?

来源:8-2 scikit-learn中的多项式回归与Pipeline

幕布斯742172

2021-05-07

老师您好,请教一下,把某个算法实例放入Pipeline以后,如何访问内部实例的相关参数呢?期待您的答复!感谢!

import numpy as np
import matplotlib.pyplot as plt
np.random.uniform(666)
x = np.random.uniform(-3, 3, size=100) # 从-3到3生成100个符合均匀分布的值
y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100) # 生成符合高斯分布的随机扰动
plt.scatter(x, y)
plt.show()

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
poly = PolynomialFeatures(degree=2)
lin_reg = LinearRegression()
poly_reg = Pipeline([(‘poly’, poly),
(‘lin_reg’,lin_reg )])
X = x.reshape(-1,1)
poly_reg.fit(X,y)
y_predict = poly_reg.predict(X)

此时我想看lin_reg的intercept_与coef_的取值

使用lin_reg.intercept_ 是有问题的,解释器报错说:Pipeline 没有lin_reg 这个属性

是否可以通过poly_reg实例访问到内部lin_reg的属性呢?

print(’[截距]:’, poly_reg. lin_reg.intercept_,’[特征权重]:’,lin_reg.coef_)
r2 = r2_score(y, y_predict)
print(‘poly_reg’,r2)

写回答

1回答

liuyubobobo

2021-05-08

可以在创建 Pipeline 的外面创建LogisticRegression的对象log_reg。将这个log_reg传给Pipeline之后,在Pipeline训练以后,直接取log_reg的coef_即可。完整的代码示意如下图(省略模拟数据的创建过程):


//img.mukewang.com/szimg/5b21631c00012c5612110623.jpg


继续加油!:)


0
0

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5858 学习 · 2437 问题

查看课程