#python #numpy #machine-learning #keras #scikit-learn
Вопрос:
Я перебираю строки своего фрейма данных и пытаюсь закодировать каждую строку данных с помощью своего кодера.
for index, row in self.data.iterrows():
data = self._encoder.transform(row)
try:
print(row.shape)
results["classes"].append((self._model.predict(data) > 0.5).astype("int32"))
results["probability"].append((self._model.predict(data)))
results["rows"].append(index)
except Exception as e:
print(e)
results["rows"].append(index)
results["classes"].append("ERROR")
results["probability"].append("ERROR")
А затем спрогнозируйте, используя мою модель. И кодер, и модель были созданы с помощью Scikit-learn и Keras, модель была сохранена с помощью встроенной функции сохранения keras, а кодер был экспортирован в файл joblib. Если я закодирую весь фрейм данных, все будет работать так, как ожидалось.
Я пытаюсь делать это последовательно, чтобы избежать потенциальных сбоев в работе моей программы, когда кодировщик выдает ошибку о данных, в частности, когда в одном из столбцов появляется новое значение, которое я кодирую одним горячим способом, значение, которое кодировщик раньше не видел.
Я пробовал использовать iterrows()
, и когда я пытаюсь закодировать каждую строку, я получаю следующую ошибку. IndexError: tuple index out of range
.
Я также пытался преобразовать каждую строку в отдельный фрейм данных, но при попытке кодирования я получаю следующее ValueError: Number of features of the input must be equal to or greater than that of the fitted transformer. Transformer n_features is 67 and input n_features is 1.
Каков был бы наилучший подход к циклическому просмотру моих данных и последовательному кодированию и прогнозированию каждой строки данных?
Полная трассировка второй ошибки
Traceback (most recent call last):
File "/home/build/x-predictive-model/main.py", line 18, in <module>
network.predictSequentially()
File "/home/build/x-predictive-model/myai.py", line 191, in predictSequentially
encoded = self._encoded_data = self._encoder.transform(pd.DataFrame(row))
File "/home/user1/anaconda3/envs/x-model-lib/lib/python3.7/site-packages/sklearn/compose/_column_transformer.py", line 571, in transform
.format(self._n_features, X.shape[1]))
ValueError: Number of features of the input must be equal to or greater than that of the fitted transformer. Transformer n_features is 67 and input n_features is 1.
Комментарии:
1. Пожалуйста, отформатируйте свой код либо с обратными кавычками, либо с отступом, но не с обоими (отредактировано).
2. Можете ли вы добавить формы ваших данных и полную обратную трассировку второй ошибки?
3. @ML_Engine форма данных (4722, 67), я опубликовал полную обратную связь в теле поста
Ответ №1:
Могу зацикливаться и прогнозировать с помощью индекса, используя синтаксис self.data[index:index 1]
, который я могу зацикливать на своих данных и делать прогнозы.