我编写了以下代码来在 python 和 weka 之间建立连接,然后尝试对加载的数据进行聚类。第一次执行时它工作正常,但是当我尝试在同一 session 中第二次运行此代码时,它给出了一个错误。
jvm.start()
loader = Loader(classname="weka.core.converters.CSVLoader")
data = loader.load_file("/C:/Users/swati/Desktop/MTP_FINAL/Music_recommendation/recommendation/matrix2.csv")
convert = Filter(classname="weka.filters.unsupervised.attribute.NumericToNominal")
convert.inputformat(data)
data = convert.filter(data)
#print data
clusterer = Clusterer(classname="weka.clusterers.SimpleKMeans", options=["-N", "6"])
clusterer.build_clusterer(data)
#print(clusterer)
ans1=[]
for i in range(0,data.num_instances):
ans1.append(clusterer.cluster_instance(data.get_instance(i)))
n = data.num_instances
jvm.stop()
以下是错误。第二次无法启动jvm。请帮助我解决这个问题。如何纠正这个问题。
RuntimeError at /
Failed to start Java VM
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.7.4
Exception Type: RuntimeError
Exception Value:
Failed to start Java VM
Exception Location: C:\Python27\lib\site-packages\javabridge\jutil.py in start_vm, line 259
Python Executable: C:\Python27\python.exe
Python Version: 2.7.9
Python Path:
['C:\\Users\\swati\\Desktop\\MTP_FINAL\\Music_recommendation',
'C:\\Python27\\lib\\site-packages\\setuptools-12.0.5-py2.7.egg',
'C:\\Python27\\lib\\site-packages\\mysql_python-1.2.5-py2.7-win32.egg',
'C:\\Windows\\system32\\python27.zip',
'C:\\Python27\\DLLs',
'C:\\Python27\\lib',
'C:\\Python27\\lib\\plat-win',
'C:\\Python27\\lib\\lib-tk',
'C:\\Python27',
'C:\\Python27\\lib\\site-packages']
最佳答案
jvm.stop()
方法只是包装对 javabridge.kill_vm()
方法的调用。根据javabridge documentation ,一旦 JVM 被杀死,就无法再次启动它。通常,您会在调用 main 方法之前和之后启动和停止 JVM,类似于:
import traceback
import weka.core.jvm as jvm
def main():
# cool stuff happening here
pass
if __name__ == "__main__":
try:
jvm.start()
main()
except Exception, e:
print(traceback.format_exc())
finally:
jvm.stop()
关于python - python-weka 包装器中的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29249384/