2017-09-04 1 views
0

필자는 그래프 인스턴스를 여러 개 가지고 있으며 밀도, 순서, 크기, 노드 차수 등의 기능을 Python에서 networkx를 사용하여 측정했습니다. 지금, 나는 각 인스턴스의 특징 벡터가 저장된 파일을 만들려면, 그래서 유사한 방식으로, MATLAB에로드 할 수 있습니다파이썬에서 matlab 데이터 세트를 만드는 방법은 무엇입니까?

load hald

을 처리하기 위해.

인스턴스의 특징 벡터의 파이썬 사전이다 :을 analize 쉽게 그래서

{'orden': 100, 'name': 'random_P1_N100_I1', 'density': 0.1006060606060606, 'diameter': 4, 'radius': 3, 'size': 498} 

내가 그 특징 벡터의 여러 가지고, 지금은 .mat 파일에 넣어하려는 Matlab의 데이터.

나는 scipy.io.savemat을 시도했지만 성공하지 못했습니다. 그래서 아마 "수동"방법이 존재합니까?

+1

"성공하지 못했습니다"란 의미는 무엇입니까? – Chris

+0

오류 메시지를 공유 할 수 있습니까? –

+0

하나의 특성 벡터를 하나의 .mat 파일로 저장할 수 있었지만 동일한 .mat 파일에 여러 특성 벡터가 필요합니다. 또한 일부 기능은 목록 (예 : 노드 각도)입니다. 그래서, 파이썬 사전을 재구성해야합니까? 아마도 각 사전 키당 관측 목록을 가지고 있을까요?나는 각 기능의 가치를 얻을 수 있도록하고 싶습니다, 예를 들어, 모든 밀도 또는 모든 주문, MATLAB 벡터/필드로,하지만 각 인스턴스의 특성 값이 일치하는 인스턴스를 잃지 않고 ... – user3117891

답변

0

글쎄, 나는 그것을 할 수 있었다, 여기에 내가 함께 온 것이다.

먼저 키의 기능 이름과 비어있는 목록을 값으로 사용하여 파이썬 사전을 만들었습니다.

WholeDict = {'name':list(), 'order':list(), 'size':list(), 'density':list(), 'diameter':list(), 'radius':list(), 'nodesEccentricity':list()} 

는 그럼 인스턴스의 기능을 측정하고, 사전에 각 기능 키에 각 특징 량을 추가. 나는 각 인스턴스에 대해 그렇게한다. 이 프로세스가 끝나면 각 항목은 여러 인스턴스에서 측정 된 피쳐의 값을 나타내는 목록입니다.

WholeDict['name'].append(instanceName) 
WholeDict['order'].append(order) 
WholeDict['size'].append(size) 
WholeDict['density'].append(density) 
WholeDict['diameter'].append(diameter) 
WholeDict['radius'].append(radius) 
WholeDict['nodesEccentricity'].append(nodesEccentricity.items()) 

는 파이썬 사전에이 내용이, 세 가지 다른 인스턴스를 측정 갖는

{'diameter': [2, 3, 3], 'name': ['c3c3', 'c3c4', 'c3c5'], 'density': [0.5, 0.36363636363636365, 0.2857142857142857], 'nodesEccentricity': [[(1, 2), (2, 2), (3, 2), (4, 2), (5, 2), (6, 2), (7, 2), (8, 2), (9, 2)], [(1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (6, 3), (7, 3), (8, 3), (9, 3), (10, 3), (11, 3), (12, 3)], [(1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (6, 3), (7, 3), (8, 3), (9, 3), (10, 3), (11, 3), (12, 3), (13, 3), (14, 3), (15, 3)]], 'radius': [2, 3, 3], 'order': [9, 12, 15], 'size': [18, 24, 30]} 

다행스럽게도,이 기능은 노드 기발처럼, 값 목록입니다 느릅 나무도 작동합니다. 그래서이 사용하여 저장할 수 있습니다

sio.savemat('aMatFile', {'featureSet':WholeDict}) 

과 함께 매트랩을 엽니 다

>> featureSet 

featureSet = 

     diameter: [2 3 3] 
      name: [3x4 char] 
      density: [0.5 0.363636363636364 0.285714285714286] 
nodesEccentricity: {[9x2 int64] [12x2 int64] [15x2 int64]} 
      radius: [2 3 3] 
      order: [9 12 15] 
      size: [18 24 30] 
: 매트랩

load aMatFile 

, 사전이가되는 구조체는 다음과 같이보고, featureSet라고

특징 값은 다음과 같이 접근 가능합니다.

>> featureSet.name 

ans = 

c3c3 
c3c4 
c3c5 
내가 인스턴스 c3c3의 노드 편심보고 싶다면

는 :

featureSet.nodesEccentricity{1} 

ans = 

       1     2 
       2     2 
       3     2 
       4     2 
       5     2 
       6     2 
       7     2 
       8     2 
       9     2 

을 나는이 나를 위해 작동합니다 생각하고, 나는 또한 다른 사람에 유용 바랍니다. 감사합니다 여러분.

관련 문제