生成数据集以适合LogisticRegress,但不适合DecisionTreeClalefier



有一个研究案例,需要一些帮助。我有2个分类器,LogisticRegress和DeciestReeClalefier,具有深度3.需要在每个类中生成3个数据集1000x2,500个对象。第一个数据集应具有LR和SCORE&LT的得分> 0.9;0.7使用树木,第二个数据集应相反。第三应该有得分<两者都有0.7。对于这个问题,可以忽略过度拟合。有什么想法吗?

    from sklearn.linear_model import LogisticRegression
    from sklearn.tree import DecisionTreeClassifier
    clf1 = LogisticRegression(penalty='l2',C=1e9) # very weak l2-regularization
    clf2 = DecisionTreeClassifier(max_depth=3)
    import numpy as np
    y = np.zeros(1000)
    y[500:] = 1.
   #should change this
    x1 = np.zeros((1000,2))
    x2 = np.zeros((1000,2))

    x3 = np.zeros((1000,2))
    clf_names = ['LogReg', 'DT']
    clfs      = [clf1,     clf2]
    ​
    for dataset in [x1,x2,x3]:
        for i in range(2):
            print (clf_names[i], round(clfs[i].fit(dataset,y).score(dataset,y),3))
    LogReg 0.5
    DT 0.5
    LogReg 0.5
    DT 0.5
    LogReg 0.5
    DT 0.5

我可以为您提供可能根据我的理解而起作用的方法,但不能给您代码:D

逻辑回归和决策树之间的主要区别:1(logistic回归绘制直线以区分2类,其中决策树当无法区分2个类直线时,决策树可能很有用。您可以在这种情况下使用决策树,因为它可以给出非线性边界以区分类别。

方法: - 尝试从Python的随机模块生成数据集,并使用Matplotlib(根据您的决策变量y使用2种不同的颜色进行分类(。 - 从情节看,如果您不可能通过直线区分两类,而决策树的性能要比逻辑回归更好,反之亦然。

找出逻辑回归比决策树更好的方案要困难。

当数据随机分布时,两者都会表现最差,并且不可能通过直线/多项式曲线将其分开。

这是简单的解决方案:

x1 = np.linspace(0,1,2000)
x1[1000:] = np.linspace(0,1,1000)
x1[1500:] = np.linspace(0,1,500)
x1 = x1.reshape((1000,2))
x2 = np.ones((2000, 1))
x2[500:] = np.full((1500,1), -3)
x2[1000:] = np.full((1000,1), -1)
x2 = x2.reshape(1000,2)
x3 = np.random.randint(0,100,2000).reshape(1000,2)

给出:

LogReg 1.0
DT 0.627
LogReg 0.5
DT 1.0
LogReg 0.518
DT 0.555

最新更新