2017-08-24 21 views
2

電車のデータが直線的に分離可能かどうかを確認しようとしています。そのために私は次のコードを使用しています。pythonのscipy.optimize.linprog関数の反復回数を増やすには?

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') 

私はこのlinkに記載の式を使用しています。私はスクリプトを実行すると出力を得る。

Iteration limit reached. 
    fun: -0.0 
message: 'Iteration limit reached.' 
    nit: 1000 
    status: 1 
success: False 
     x: nan 
reached finally 

したがって、反復制限に達すると、データが線形に分離できないことを意味します。そうでない場合、制限をどのように増やしますか。

答えて

2

私はオプションにmaxiterを追加できると思います。

options = {"disp": True, "maxiter": 5000} 
res = linprog(c, A_ub=A1, b_ub=b, bounds=(None, None), options=options) 

ドキュメントによると、あなたは、与えられた方向に何の境界を指定しない場合はboundsNoneを使用することができます。

関連する問題