I am trying to check if the train data is linearly separable or not. For that I am using the following code.
try:
        import os
        import random
        import traceback
        import numpy as np
        import scipy.io as sio
        from scipy.optimize import linprog
        os.system('cls')
        dicA  = sio.loadmat('A.mat')
        A = dicA.get('A')
        lengthA = int(len(A)/1000)
        aRange = range(0,lengthA)
        selectedIndexes = random.sample(aRange,lengthA)
        A1 = A[selectedIndexes]
        del A
        b = -1*np.ones(len(A1),np.int64)
        c = np.zeros(11,np.int64)
        del dicA
        res = linprog(c, A_ub=A1, b_ub=b, bounds=(-float('inf'), float('inf')),options={"disp": True})
        print(res)
except:
        print('exception')
        tb = traceback.format_exc()
        print(tb)
finally:
        print('reached finally')
I am using the equation mentioned at this link. I get following output when I run the script.
Iteration limit reached.
     fun: -0.0
 message: 'Iteration limit reached.'
     nit: 1000
  status: 1
 success: False
       x: nan
reached finally
So, does the iteration limit reached means that data is not linearly separable, if not then how do I increase the limit.
I think you can add maxiter to options.
options = {"disp": True, "maxiter": 5000}
res = linprog(c, A_ub=A1, b_ub=b, bounds=(None, None), options=options)
According with documentation you can use None in bounds to specify no bounds in the given direction.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With