如何访问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_即可。完整的代码示意如下图(省略模拟数据的创建过程):
继续加油!:)
00
相似问题
回答 4
回答 1