请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

老师要用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 01:24:24

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


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

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


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 wxz123 #1
    老师我的第二种写法中,LogisticRegression类的构建,multi_class参数没有传值,使用默认值OvR的方式,但我后面用了poly_log_reg=OneVsOneClassifier(poly_log_reg)这样一行代码,这样是不是就实现了ovo的方式了?这样就和我上面写的第一种代码实现了完全相同的功能呢?
    回复 有任何疑惑可以回复我~ 2019-08-14 10:13:47
  • liuyubobobo 回复 提问者 wxz123 #2
    哦哦 我之前没有看见你后面那部分。没问题,也是ovo:)
    回复 有任何疑惑可以回复我~ 2019-08-14 11:54:53
  • 提问者 wxz123 #3
    感谢老师!
    回复 有任何疑惑可以回复我~ 2019-08-14 15:43:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信