import pandas as pd
from sklearn.svm import SVC

# Загрузите выборку из файла svm-data.csv. В нем записана двумерная выборка
# (целевая переменная указана в первом столбце, признаки — во втором и третьем).

df = pd.read_csv('svm-data.csv', header=None)
y = df[0]
X = df.loc[:, 1:]

#Обучите классификатор с линейным ядром, параметром C = 100000 и random_state=241.
# Такое значение параметра нужно использовать, чтобы убедиться, что SVM работает с выборкой как с линейно
# разделимой. При более низких значениях параметра алгоритм будет настраиваться с учетом слагаемого в
# функционале, штрафующего за маленькие отступы, из-за чего результат может не совпасть с решением
# классической задачи SVM для линейно разделимой выборки.

model = SVC(kernel='linear', C=100000, random_state=241)
model.fit(X, y)

#Найдите номера объектов, которые являются опорными (нумерация с единицы).
# Они будут являться ответом на задание. Обратите внимание, что в качестве ответа нужно привести
# номера объектов в возрастающем порядке через запятую или пробел. Нумерация начинается с 1.

n_sv = model.support_
n_sv.sort()
print(1, ' '.join([str(n + 1) for n in n_sv]))