这里是一个创建两个数据集的示例:
from sklearn.linear_model import LogisticRegressionfrom sklearn.datasets import make_classification# 数据集 1X1, y1 = make_classification(n_classes=2, n_features=5, random_state=1)# 数据集 2X2, y2 = make_classification(n_classes=2, n_features=5, random_state=2)
我想使用LogisticRegression
估计器,并使用相同的参数值在每个数据集上拟合一个分类器:
lr = LogisticRegression()clf1 = lr.fit(X1, y1)clf2 = lr.fit(X2, y2)print "数据集1的分类器: "print " - 截距: ", clf1.intercept_print " - 系数: ", clf1.coef_print "数据集2的分类器: "print " - 截距: ", clf2.intercept_print " - 系数: ", clf2.coef_
问题在于两个分类器是相同的:
数据集1的分类器: - 截距: [ 0.05191729] - 系数: [[ 0.06704494 0.00137751 -0.12453698 -0.05999127 0.05798146]]数据集2的分类器: - 截距: [ 0.05191729] - 系数: [[ 0.06704494 0.00137751 -0.12453698 -0.05999127 0.05798146]]
对于这个简单的例子,我可以使用如下方法来避免这个问题:
lr1 = LogisticRegression()lr2 = LogisticRegression()clf1 = lr1.fit(X1, y1)clf2 = lr2.fit(X2, y2)
然而,问题依然存在:如何一般性地复制/拷贝一个估计器及其特定的参数值?
回答:
from sklearn.base import clonelr1 = LogisticRegression()lr2 = clone(lr1)