Создайте 3 модели классификации, чтобы предсказать класс на основе других доступных столбцов - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть три типа классов (stetosa, versicolor, virginica), а также 4 других столбца: sepal_length, sepal_width, petal_length, petal_width с примерно 150 строками, каждый из которых заполнен собственной информацией (так что там нет ничего пустого). Мне нужно предсказать тип класса на основе других столбцов. Вот что я пробовал:

import numpy as np
import pandas as pd
df = pd.read_csv("data.csv")
X=df[["sepal_length","sepal_width","petal_length","petal_width"]]
y=df["class"]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1)

from sklearn.linear_model import LinearRegression
clf=LinearRegression()
clf.fit(y_train, X_train)
clf.predict(y_test)

Текст, помеченный как ответ на этот вопрос: ValueError: не удалось преобразовать строку в число с плавающей точкой: 'virginica' Мне нужно сделать это с помощью train и test.

1 Ответ

1 голос
/ 08 апреля 2020

Вам необходимо закодировать ваши данные. другими словами, преобразуйте каждую категорию в число (int или float).

Сопоставьте следующие категории следующим образом:

mapping={'setosa':0,'versicolor':1,'virginica':2}
y.map(mapping)

После обучения вашей модели вы получите 0,1 or 2 в результате. Преобразуйте его обратно, и вы получите свои прогнозы.

И, кстати, если вы предсказываете класс, вы должны изменить свою модель. LinearRegression() является числовым предиктором, он может предсказывать только числовые значения.

Попробуйте вместо этого использовать SVC, LogisticRegression или любую другую классификационную модель.

...