我可能有一个“怪异”的问题。我正在使用linux MINT和python,在一些“会话”之后,我认为Linux变得非常缓慢。我有时会中止一个python脚本,因为我发现它出错了或其他什么。如果我重新启动计算机,我知道它会很快...
对于其他一些迭代步骤也是如此:例如:
for test in tests:
os.system("python code.py "+something[i][0]+" "+something[i][1]+" 3 "+test+" usage")
在迭代2或3中,代码变得越来越慢。是否可能,我正在使用一些numpy数组不正确?或者是否有可能python不删除“最后”的版本,它是在Linux的“背景”中工作还是保存?对不起,如果问题有点“不好”,不要现在python的行为。
在2台计算机上的Linux Mint和Ubuntu上尝试过它。
我的电脑:
Xeon E3-1231 v3,16GB DDR3,
MCVE
import numpy as np
from sklearn.ensemble import RandomForestClassifier
target=int(sys.argv[3])
method=sys.argv[4]
vs=sys.argv[5]
def manu(test,test2): #split到X和y X = [] Y = []
for i,j in enumerate(test):
X.append(test[i][0])
y.append(float(test[i][1]))
x=np.array(X)
y=np.array(y)
pRF={
'class_weight':['balanced_subsample'],
'n_estimators':treeRange,
'max_features':['sqrt'],
'min_samples_leaf':[1,2,3]}
classifiers=[RandomForestClassifier(random_state=1)]
paraCV=[pRF]
titles=['RF']
for name, clf, parCV in zip(titles,classifiers,paraCV):
fol=10
skf = StratifiedKFold(y, n_folds=fol)
pre,sen,spe,ba,area,params,scores=[],[],[],[],[],[],[]
#outer loop
for train_index, test_index in skf:
#inner loop
#print train_index, test_index
predi=[]
train=train_index.tolist()
test=test_index.tolist()
X_train=[]
X_test=[]
y_train=[]
y_test=[]
for i in train:
X_train.append(x[i])
for i in test:
X_test.append(x[i])
for i in train:
y_train.append(y[i])
for i in test:
y_test.append(y[i])
gs = GridSearchCV(estimator=clf,param_grid=parCV,cv=fol,n_jobs=5).fit(X_train,y_train)
expected= [0.0 if z==2.0 else z for z in y_test]
predicted=gs.predict_proba(X_test)
predicted1= predicted[:,0].tolist()
params.append(gs.best_params_)
expi=expected
expected=np.array(expected)
# and so on.. code would be way to long for an MCVE
if __name__=="__main__":
train=sys.argv[1]
test=sys.argv[2]
并且这个代码将使用另一个python文件执行5次,就像我在开头用os.system命令提到的那样。
看起来,这只发生在Linux上,而不是发生在Windows上。