Как узнать, какой прогноз для каких данных?И как оценить прогноз? - PullRequest
0 голосов
/ 28 января 2019

У меня есть код ниже, который использует искусственную нейронную сеть (ANN) для прогнозирования класса в файле CSV.

Если я хочу найти прогнозы по тестовым данным, могу ли я сделать следующее?

    predictions = model.predict(X_test)
    # round predictions
    rounded = [round(x[0]) for x in predictions]
    prediction = pd.DataFrame(rounded,columns=['predictions']).to_csv('prediction.csv')

В этом случае у меня будет файл CSV со списком прогнозов (0 и 1).Мои вопросы:

  • Как узнать, для каких данных (строк) ссылается прогноз?

  • Как узнать точностьрезультирующие прогнозы?

    import numpy as np 
    import pandas as pd 
    from keras.layers import Dense, Dropout, BatchNormalization, Activation
    import keras.models as md
    import keras.layers.core as core
    import keras.utils.np_utils as kutils
    import keras.layers.convolutional as conv
    
    from keras.layers import MaxPool2D
    
    from subprocess import check_output
    dataset = pd.read_csv('mutation-train.csv')
    
    dataset = dataset[['CDS_Mutation',
                       'Primary_Tissue',
                        'Genomic',
                        'Gene_ID',
                        'Official_Symbol',
                        'Histology']]
    
    X = dataset.iloc[:,0:5].values
    y = dataset.iloc[:,5].values
    
    # Encoding categorical data
    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    labelencoder_X_0 = LabelEncoder()
    X[:, 0] = labelencoder_X_0.fit_transform(X[:, 0])
    labelencoder_X_1 = LabelEncoder()
    X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
    labelencoder_X_2= LabelEncoder()
    X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])
    labelencoder_X_4= LabelEncoder()
    X[:, 4] = labelencoder_X_4.fit_transform(X[:, 4])
    
    X = X.astype(float)
    labelencoder_y= LabelEncoder()
    y = labelencoder_y.fit_transform(y)
    
    onehotencoder0 = OneHotEncoder(categorical_features = [0])
    X = onehotencoder0.fit_transform(X).toarray()
    X = X[:,0:]
    onehotencoder1 = OneHotEncoder(categorical_features = [1])
    X = onehotencoder1.fit_transform(X).toarray()
    X = X[:,0:]
    onehotencoder2 = OneHotEncoder(categorical_features = [2])
    X = onehotencoder2.fit_transform(X).toarray()
    X = X[:,0:]
    onehotencoder4 = OneHotEncoder(categorical_features = [4])
    X = onehotencoder4.fit_transform(X).toarray()
    X = X[:,0:]
    
    # Splitting the dataset training and test sets
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2)
    
    # Feature scaling
    from sklearn.preprocessing import StandardScaler
    sc = StandardScaler()
    X_train = sc.fit_transform(X_train)
    X_test = sc.transform(X_test)
    
    # Evaluating the ANN
    from sklearn.model_selection import cross_val_score
    from keras.models import Sequential
    from keras.layers import Dense
    from keras.layers import Dropout
    
    model=Sequential()
    model.add(Dense(32, activation = 'relu', input_shape=(X.shape[1],)))
    model.add(Dense(16, activation = 'relu'))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ["accuracy"])
    
    # Compile model
    model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
    # Fit the model
    model.fit(X,y, epochs=3, batch_size=1)
    
    # Evaluate the model
    scores = model.evaluate(X,y)
    print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
    
    # Calculate predictions
    predictions = model.predict(X)
    prediction = pd.DataFrame(predictions,columns=['predictions']).to_csv('prediction.csv')
    

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вы можете легко добавить индексный столбец к dataset.Затем после train_test_split восстанавливаются новые расстановки индексов.

0 голосов
/ 28 января 2019

Как узнать, для каких данных (строк) ссылается прогноз?

Прогнозы имеют вектор такой же длины и порядка, что и входные данные.

Как я могу найти точность получаемых прогнозов?

Сравните прогноз с истинностью для ваших входных данных.Разделите правильные прогнозы на размер входного набора.

Если у вас нет истинности основания для вашего входного набора, то вы не сможете найти точность.Лучшее, что вы можете сделать, - это оценить точность как окончательную точность теста в конце обучения модели.

...