Машинное обучение Python - обучение / тестирование и применение прогнозов к новому набору данных - PullRequest
0 голосов
/ 04 октября 2019

Я прошел обучение и тестирование только на одном наборе данных. У меня есть проблема с обучением под наблюдением: Данные 1 Обучение / Тестирование и Данные 2: Нет ярлыков. Я использую фрейм данных панд.

Набор данных 1: контролируемый

text        y_variable
apple       fruit
orange      fruit
celery      vegetable
mango       fruit

Набор данных 2: без метки

text        to_be_predicted
orange      ?
celery      ?
mango       ?

Я использую Scikit Learn:

X = df['text']
y = df['y_variable']

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2

Это разбивает существующий массив данных на обучение и тестирование. Как обучить / протестировать первый набор данных 1 и применить его ко второму набору данных? Машинное обучение.

Набор данных 2: без метки

text        to_be_predicted
orange      fruit
celery      vegetable
mango       fruit

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Прежде чем приступить к обучению, вам необходимо преобразовать категориальные характеристики в числовые переменные. В противном случае ни одна модель не сможет обработать эти данные.

Для преобразования в числовые функции вам потребуется использовать OneHotEncoder: https://scikit -learn.org / stable / modules / generate / sklearn.preprocessing.OneHotEncoder.html

Далее, поскольку у вас есть ярлыки в обучающем наборе, вам необходимо обучение под наблюдением. Подробнее здесь: https://scikit -learn.org / stable / tutorial / statistics_inference / supervised_learning.html

0 голосов
/ 04 октября 2019

Многие контролируемые Scikit-Learn классификаторы имеют возможность predict с новыми данными.

Например, посмотрите документацию для K ближайших соседей:

knn.predict(new_data) # will predict classes for new data

ОБНОВЛЕНИЕ

Когда вы прогнозируетеклассы, основанные на новых данных, вам нужно только указать новый X. Вот более длинная версия кода, чтобы описать лучше:

import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# make some example data
X, y = make_blobs(n_samples = 100, n_features = 2, 
                  centers = 2, random_state = 123)

# fit supervised KNN classifier
knn = KNeighborsClassifier()
knn.fit(X, y) 

# create 50 new data points
# with the same number of features as the training set
new_data = np.random.randn(50, 2)

# predict new labels
new_labels = knn.predict(new_data)

# plot training clusters
plt.plot(X[y== 1, 0], 
         X[y==1,1], 
         "C1o", label = "training cluster 1")
plt.plot(X[y== 0, 0], 
         X[y==0,1], 
         "C0o", label = "training custer 2")

# plot predictions on new data
plt.plot(new_data[new_labels== 1, 0], 
         new_data[new_labels==1,1], 
         "ro", label = "new data assigned to cluster 1")
plt.plot(new_data[new_labels== 0, 0], 
         new_data[new_labels==0,1], 
         "bo", label = "new data assigned to cluster 2")
plt.legend()

enter image description here

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