sklearn обеспечивает функции, упорядоченные, как ожидается, для прогнозирования - PullRequest
0 голосов
/ 10 апреля 2019

Я тренирую модель, используя sklearn, обученную на данных в кадре данных панд.Ниже приведен фрагмент кода, который может воспроизвести модель, которую я тренирую.

import pandas as pd 
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
dataset = load_iris()

X = pd.DataFrame(dataset['data'], columns=dataset['feature_names'])
y = pd.DataFrame(dataset['target'], columns=['target_names'])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
logistic_regression = LogisticRegression()
logistic_regression.fit(X_train, y_train)

Теперь, когда я хочу делать прогнозы, пользователь отправляет прогнозы через словарь, где каждый ключ - это имя функции, а каждое значение - это значение для этой функции.

Кажется, что нет никакого принуждения, чтобы объекты в прогнозе были названы согласно функциям в DataFrame.Я понимаю это, но вопрос в том, когда функции именуются пользователем, как я могу узнать, как они упорядочены?

example = {
 'a':1, # randomly named features 
 'b':2,
 'c':3,
 'd':4
}
logistic_regression.predict(pd.DataFrame.from_records(example, index=[0]))  # works

Как узнать, отправил ли прогноз эти значения как [1,2,3,4] или [2,1,3,4] и т. Д.

1 Ответ

0 голосов
/ 10 апреля 2019

Один из способов сделать это - сохранить порядок feature_names обучающих данных, чтобы при появлении новых данных в виде словаря вы могли использовать этот сохраненный порядок для сортировки значений.

Другой способ, если вы не хотите хранить дополнительный объект, - это добавить в ключи словаря какой-то «идентификатор заказа». Например, если, скажем, порядок d b c a, то вы можете изменить имя ключа словаря как 1_d, 2_b, 3_c, 4_a, так что если вы преобразуете его в список, вы получите способ сортировки без использования оригинального списка функций.

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