【问题标题】:Comparison ANN and logistic regression on 200 datasets在 200 个数据集上比较 ANN 和逻辑回归
【发布时间】:2017-08-13 16:51:44
【问题描述】:

我试图在 200 个不同的数据集上比较 ANN 和逻辑回归的性能。每个数据集都命名为Dataseti where i is a number from 15 to 214。因此我运行一个循环:

for i in range(15,215):

让人工神经网络和逻辑回归得到训练并对数据进行分类。我想捕捉的是逻辑回归的错误:

"ValueError: This solver needs samples of at least 2 classes in the data, but the data contains only one class: 0.0"

当错误被捕获时,我希望跳过此数据集并继续下一个 (i+1)。

这有可能吗?我对编程很陌生,不清楚如何处理这个异常。我已经考虑过以某种方式使用 if else 公式:

if(dataset[:,-1].max() == 1)
....
else: 

但我不知道要在 else 表达式中添加什么。如果有人能在这个问题上帮助我,那就太好了。谢谢!

【问题讨论】:

    标签: python pandas numpy logistic-regression


    【解决方案1】:

    使用try/except。以下是针对您的具体情况的一些伪代码:

    for i in range(15,215):
        dataset = datasets[i]
    
        # first, try to evaluate your desired code
        try: 
            ANN(dataset)
            logistic(dataset)
    
        # if a ValueError occurs, catch it, report on it, and continue
        except ValueError as e: 
            print("Error on dataset {i}: {err}".format(i=i, err=e))
    

    这是一个玩具数据的工作示例:

    data = [1, 2, "foo", 3]
    
    for i in range(0,4):
    
        try:
            print(int(data[i]))
    
        except ValueError as e:
            print("Error on item {i}: {err}".format(i=i, err=e))
    

    输出:

    1
    2
    Error on item 2: invalid literal for int() with base 10: 'foo'
    3
    

    【讨论】:

    • 哇,谢谢。我只是误解了逻辑并将尝试放在 for 循环之前。愚蠢的错误:D
    猜你喜欢
    • 2016-01-31
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2017-01-15
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多