Классификация SVM - ошибка формы ввода - PullRequest
0 голосов
/ 28 февраля 2020

У меня ошибка ввода неправильной формы. Я попытался найти, но пока не могу понять, так как я новичок в SVM.

train.csv
testing.csv

# importing required libraries
import numpy as np

# import support vector classifier
from sklearn.svm import SVC 
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)


X = pd.read_csv("train.csv")
y = pd.read_csv("testing.csv")

clf = SVC()
clf.fit(X, y)
clf.decision_function(X)
print(clf.predict(X))



raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (1, 6)

1 Ответ

0 голосов
/ 06 марта 2020

Проблема здесь в том, что вы просто вставляете всю таблицу с данными обучения (плюс метки) в качестве входных данных только для данных обучения, а затем пытаетесь предсказать таблицу данных тестирования (данные и метки) с помощью SVM .

Это не работает таким образом.

То, что вам нужно сделать, это обучить SVM с вашими данными обучения (таким образом, точки данных + метка для каждой точки данных), а затем протестировать его с вашими данными тестирования (точки данных тестирования + метки).

Ваш код должен выглядеть следующим образом:

# Load training and testing dataset from .csv files
training_dataset = pd.read_csv("train.csv")
testing_dataset = pd.read_csv("testing.csv")

# Load training data points with all relevant features
X_train = training_dataset[['feature1','feature2','feature3','feature4']]

# Load training labels from dataset
y_train = training_dataset['label']

# Load testing data points with all relevant features
X_test = testing_dataset[['feature1','feature2','feature3','feature4']]

# Load testing labels from dataset
y_test = testing_dataset['label']


clf = SVC()

# Train the SVC with the training data (data points and labels)
clf.fit(X_train, y_train)

# Evaluate the decision function with test samples
clf.decision_function(X_test)

# Predict the test samples
print(clf.predict(X_test))

Надеюсь, это поможет и этот код работает для вас. Дайте мне знать, если я что-то не так понял или у вас есть еще вопросы. :)

...