Пирадиомика: класс объектов glcm не распознается.Как это исправить? - PullRequest
0 голосов
/ 06 июня 2019

Я делаю проект с графическим интерфейсом для ультразвуковой диагностики печени.

Я использую PyQT5 (5.12.1) для GUI и sklearn (0.21.2) для статистических моделей. Основные особенности текстур, которые я получаю из пирадиомики (2.2.0).

Когда я компилирую свой проект в PyCharm 2019.1 - все работает совершенно нормально.

Но когда я пытаюсь собрать свой проект как файл .exe с помощью pyinstaller, у меня появляются некоторые ошибки. Я решил большинство из них (о пропавших библиотеках), но этот ушел.

Я получил ошибки:

    Feature class firstorder is not recognized
    Feature class glcm is not recognized
    Feature class glrlm is not recognized
    Feature class ngtdm is not recognized
    Feature class glszm is not recognized

и моя модель также выдает ошибку (когда я сопоставляю свои новые данные с моделями, которые уже были сохранены в файлах .sav из sklearn):

ValueEror: operands could not be broadcast together with shapes (1,3)(96,)(1,3)

1) Я пытался изменить с:

    extractor.enableFeatureClassByName('glcm')

до:

    extractor.enableFeatureClassByName(str('glcm'))

Это не помогло.

2) Также я пытался построить проект на разных версиях пирадиомики:

2.1.1 и 2.2.0 дать тот же результат (ошибка)

    import pandas as pd
    import numpy as np
    import pickle
    import sklearn
    ...
    folderName = "tmp"
    sl = "/"
    image_path_to = os.getcwd() + "/data/nrrd/" + folderName + sl + name_image
    label_path_to = os.getcwd() + "/data/nrrd/" + folderName + sl + name_label

    # Instantiate the extractor
    extractor = featureextractor.RadiomicsFeatureExtractor()

    # Switch on only needed feature class
    extractor.disableAllFeatures()
    extractor.enableFeatureClassByName('firstorder') <<< There is a problem
    extractor.enableFeatureClassByName('glcm')
    extractor.enableFeatureClassByName('glrlm')
    extractor.enableFeatureClassByName('ngtdm')
    extractor.enableFeatureClassByName('gldm')
    extractor.enableFeatureClassByName('glszm')

    # result -> ordered dict
    result = extractor.execute(image_path_to, label_path_to)
    df =  pd.DataFrame(result, index=[0])
    ...

    # Load the model from disk
    model_name = 'Multi-layer Perceptron'
    poolParam = ["diagnosis_code", "isnorm"]
    models = [0,5]
    for param in poolParam:
        filename = 'data/result/model/' + model_name + ' ' + param  + '.sav'
        file = open(filename, 'rb')
        loaded = pickle.load(file)
        print("Model <" + model_name + " " + param   + "> was loaded")

        # Test the classifier
        y_pred = int(loaded.predict(data)) <<< There is a problem
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...