Цепь Маркова, Достижение массива в списке задач - PullRequest
0 голосов
/ 16 декабря 2018

Недавно я попытался создать код, похожий на цепь Маркова, который вычисляет вероятности переходов в заданных результатах (= список).Я написал код в нескольких ячейках и т. Д. И знаю, что он работает, но теперь я хотел бы определить одну функцию, чтобы иметь возможность выполнять всю работу в рамках этой одной функции.

Цель: 1) Создать список, в который все результаты (пустые списки) загружаются из файла на рабочем столе 2) Использовать принцип Маркова для каждого объекта в списке 3) Сохранить результаты как .npy по порядкучтобы использовать его позже

Я застрял на уровне 2. Это мой код до сих пор.Может быть, это немного грязно, но я относительно новичок в области кодирования :)

%matplotlib inline

import numpy as np
import random
import matplotlib.pyplot as plt
import scipy.spatial as spatial
import sklearn.decomposition as PCA
import networkx as nx
import os
import matplotlib
import random
import glob
import pandas as pd

def Markov_Chain():
    tracking_files_npy = glob.glob('path of file/*.npy')
    tracking_files_npy.sort           # Find and sort all the tracking data
    loaded_tracks = []                # Create empty list for later
    print(tracking_files_npy)
    for file in tracking_files_npy:
        transitions_from_videos = np.load (file)
        loaded_tracks.append(transitions_from_videos)    # load all the npy files and add them to the list
    for objects in loaded_tracks:
        amount_of_classes = np.max(objects) +1           # calculate the amount of the classes in each video
        transition_matrix_tryout = np.zeros(shape =(amount_of_classes,amount_of_classes)) # create an array, size = classes
    for transition_lists in loaded_tracks:
        for first_state in range(amount_of_classes):
            initional_state = np.argwhere (loaded_tracks[transition_lists][:-1] == first_state) # try to reach the list which contains the loaded tracks
            index_next_state = initional_state + 1
            transition_to_state_two = loaded_tracks[transition_lists][index_next_state] # go for second state
            for second_state in range (amount_of_classes):
                if first_state == second_state:
                    continue
                transition_curr_state_to_next_state = np.argwhere(transition_to_state_two == second_state)
                if len(np.argwhere(transition_to_state_two != first_state)) == 0:
                    print(first_state, second_state)
                    continue
                probability_one_to_two = (len(transition_curr_state_to_next_state)/len(np.argwhere(transition_to_state_two != first_state)))
                transition_matrix_tryout[first_state,second_state] = probability_one_to_two
        print(transition_matrix_tryout)
        sum_of_probabiilities_tryout = np.sum(transition_matrix_tryout,1)    
        print(sum_of_probabiilities_tryout)

Markov_Chain()

Теперь я застрял в той части, где я пытаюсь найти массив в списке.В этом цикле я стараюсь сделать все для первого, второго, третьего, ... массива в списке «loaded_tracks ».

Спасибо за вашу помощь, ребята, и не стесняйтесь задавать вопросы.С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...