Как предсказать пользовательское значение из обученной модели? - PullRequest
0 голосов
/ 03 июня 2018

Я довольно плохо знаком с Python, понимая архитектуру ML.

Я разработал сценарий, обучил свою модель, и результаты моего теста работают, как и ожидалось.У меня есть около 5 строк в моих тестовых данных. Мой вопрос: если я хочу протестировать одну запись и получить прогноз, как я могу это сделать?Я получаю ошибку ниже, когда тестирую с одной записью

Ниже приведен пример кода и ошибка.Пожалуйста, помогите

import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier

dataset = pd.read_csv('MLData2.csv')
# Data: 
#A  1   1
#A  1   1
#A  1   1
#A  2   1
#A  2   1
#B  3   3
#B  3   3
#B  3   3
#B  4   3
#B  5   3
#C  4   4
#C  1   4
#C  2   4
#C  3   4

X = dataset.iloc[:, :-1].values

y = dataset.iloc[:,2].values


#Encode data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:,0] = labelencoder_X.fit_transform(X[:,0])
X[:,1] = labelencoder_X.fit_transform(X[:,1])
#onehotencoder = OneHotEncoder(categorical_features = "all")
#X = onehotencoder.fit_transform(X).toarray()

#labelencoder_Y = LabelEncoder()
#y = labelencoder_Y.fit_transform(y)
#onehotencoder_y = OneHotEncoder(categorical_features = "all")
#y = np.reshape(y, (-1, 1))
#y = onehotencoder_y.fit_transform(y).toarray()

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 
0.2, random_state = 42)

from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier(criterion="entropy", random_state 
= 42)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
sTest = np.reshape([0,3], (-1,1))

#I want to test model for inputs C 3, which should return 4. How to 
test that?
y_pred1 = classifier.predict(sTest)

Ниже получена ошибка

ValueError: Number of features of the model must match the input. Model n_features is 2 and input n_features is 1

Чтобы быть коротким, мой вывод всегда должен быть 1 для A, 3 для B, 4 дляС (по моему сценарию)

1 Ответ

0 голосов
/ 03 июня 2018

Ошибка говорит:

ValueError: Number of features of the model must match the input. Model n_features is 2 and input n_features is 1

Это означает, что ваш вход в модель имеет форму, отличную от ожидаемой.

Ваша модель ожидает двухмерные выборки, которые представляют собой массив данных формы (n_samples, n_features) с n_features=2.В вашем случае вы хотите провести тестирование на одном образце, поэтому n_samples=1.Вам необходимо передать np.array с формой (1, 2).Попробуйте:

sTest = np.reshape([0,3], (1, -1))

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