pipeline实现多分类(比如用ovo)含多项式项的逻辑回归

来源:9-8 OvR与OvO

wxz123

2019-08-13

老师要用pipeline实现多分类(比如用ovo)含多项式项的逻辑回归模型,下面这两种写法哪个对呢,我运行了一下都是可以运行的
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.multiclass import OneVsOneClassifier
from sklearn.linear_model import LogisticRegression
import numpy as np

X = np.random.normal(0, 1, size=(200, 2))
y = np.array((X[:,0]**2+X[:,1]**2)<1.5, dtype=‘int’)

1、
log_reg = LogisticRegression()
def PolynomialLogisticRegression(degree):
return Pipeline([
(‘poly’, PolynomialFeatures(degree=degree)),
(‘std_scaler’, StandardScaler()),
(‘log_reg’, OneVsOneClassifier(log_reg))
])
poly_log_reg = PolynomialLogisticRegression(degree=2)
poly_log_reg.fit(X, y)
print(poly_log_reg.score(X, y))

2、
def PolynomialLogisticRegression(degree):
return Pipeline([
(‘poly’, PolynomialFeatures(degree=degree)),
(‘std_scaler’, StandardScaler()),
(‘log_reg’, LogisticRegression())
])
poly_log_reg = PolynomialLogisticRegression(degree=2)
poly_log_reg=OneVsOneClassifier(poly_log_reg)
poly_log_reg.fit(X, y)
print(poly_log_reg.score(X, y))

写回答

1回答

liuyubobobo

2019-08-14

从代码的角度,都是对的。


但是,你的第二中写法,LogisticRegression类的构建,multi_class参数没有传值,即使用默认值,是OvR的方式,可以参考 sklearn 文档,LogisticRegression 类的 multi_class 参数。

传送门:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html


继续加油!:)

0
3
wxz123
感谢老师!
2019-08-14
共3条回复

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

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

5893 学习 · 2454 问题

查看课程