1. Деревья решений

Классификатор дерева решений — это метод контролируемого обучения, который используется для классификации данных на основе некоторых опорных точек.
Например, если вы не можете решить, выходить ли на улицу или нет, вы спрашиваете себя: "На улице идет дождь?" ?», «Нравится ли мне играть в футбол?» и «Получу ли я удовольствие от общения с теми, с кем собираюсь играть?»
На основе ответов на вопросы в каждом узле дерева решений классификатор принимает решение (классификация).

from sklearn.tree import DecisionTreeClassifier 
X_train = [[0, 0], [1, 1]]
y_train = [0, 1]
X_test = [[2, 2]]
dtree = DecisionTreeClassifier()
dtree.fit(X_train, y_train)
predict = dtree.predict(X_test)
print(predict)

2.ГКА

Алгоритм иерархической кластеризации (HCA) — это неконтролируемый алгоритм кластеризации для создания кластеров в порядке сверху вниз.

Шаги для HCA следующие:

Сделайте каждую точку данных одноточечным кластером. Это создает N кластеров.
Возьмите две ближайшие точки данных и объедините их в один кластер. Сейчас кластеров N-1. Возьмите два ближайших кластера и сделайте из них один кластер. Сейчас есть N-2 кластера. Повторяйте, пока не останется только один кластер.

В качестве входных данных задан список точек данных кортежей, представляющих 2D-координаты, и целочисленное значение для количества кластеров. Я должен вернуть список с номером кластера каждой точки входных данных, причем номера кластеров начинаются с 0.

Для решения этой проблемы я использую класс AgglomerativeClustering от scikit-learn. Установите следующие параметры: affinity=’euclidean’, linkage=’ward’

from sklearn.cluster import AgglomerativeClustering
datapoints = [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)]
n = 2
X = np.array(datapoints)
clustering = AgglomerativeClustering(n_clusters=n, affinity=’euclidean’, linkage=’ward’).fit(X)
print(clustering.labels_.tolist())

3. Кластеризация среднего сдвига

Кластеризация среднего сдвига — это неконтролируемый алгоритм обучения, который пытается сместить центроиды (центры кластеров) к среднему значению окружающих точек данных.
В этой задаче я буду использовать sklearn для реализации алгоритма кластеризации среднего сдвига с учетом X_train для прогнозирования. метки X_test.

from sklearn.cluster import MeanShift
X_train = [[1, 1], [2, 1], [1, 0], [4, 7], [3, 5], [3, 6]]
X_test = [[0, 0], [5, 5]]
clustering = MeanShift(bandwidth=1).fit(X_train)
print(clustering.predict(X_test))

4. Наивный Байес

Алгоритм наивного Байеса — это метод обучения с учителем, который предсказывает выходные данные на основе условной вероятности.
В этой задаче мне нужно использовать sklearn для реализации наивного байесовского алгоритма Гаусса, который предсказывает метки X_test после обучения на X_train и Y_train.
Я использую класс GaussianNB, предоставленный sklearn:
from sklearn.naive_bayes import GaussianNB

from sklearn.naive_bayes import GaussianNB
X_train = [[4.6, 3.1, 1.5, 0.2], [5.9, 3.0, 5.1, 1.8], [5.1, 2.5, 3.0, 1.1]]
Y_train = [0, 2, 1]
X_test = [[5.8, 2.8, 5.1, 2.4], [6.0, 2.2, 4.0, 1.0], [5.5, 4.2, 1.4, 0.2]]
clf = GaussianNB()
clf.fit(X_train, Y_train)
prediction = clf.predict(X_test)
print(prediction)

5. Персептрон

Затем обучите линейную модель Perceptron со случайным состоянием, предоставленным в качестве входных данных, и следующими критериями остановки для обучения:

loss > previous_loss — 0.02

Верните среднюю точность классификатора на этих обучающих данных, используя метод score.

from sklearn.datasets import load_digits
from sklearn.linear_model import Perceptron
random_state = 1
X, y = load_digits(return_X_y=True)
clf = Perceptron(tol=1e-3, random_state=random_state)
clf.fit(X, y)
score = clf.score(X, y)
print(score)

6. Классификация случайного леса

Random Forest — это алгоритм обучения с учителем, который предсказывает выходные данные с учетом помеченных данных.

from sklearn.ensemble import RandomForestClassifier
X_train = [[3.2, 1.3, 4.1, 5.5]]
Y_train = [[1, 0, 1, 1]]
X_test = [[2.7, 4, 7, 9]]
rf = RandomForestClassifier()
rf.fit(X_train, Y_train)
print(rf.predict(X_test))

7. Случайная регрессия леса

Регрессия случайного леса — это контролируемый метод обучения, который используется для прогнозирования непрерывных значений, аналогичных другим методам регрессии. Регрессия случайного леса часто приводит к более высокой точности в некоторых случаях (на основе набора данных). В этой проблеме мне нужно использовать sklearn для реализации регрессора случайного леса, который предсказывает выходные данные модели X_test после обучения на X_train и Y_train.

from sklearn.ensemble import RandomForestRegressor
X_train = [[0, 0], [1, 1]]
Y_train = [0, 1]
X_test = [[2, 2]]
rf = RandomForestRegressor()
rf.fit(X_train, Y_train)
rf_predict = rf.predict(X_test)
print(rf_predict)

8. Машины опорных векторов (SVM)

from sklearn.svm import SVC
X_train = [[0, 0], [1, 1]]
Y_train = [0, 1]
X_test = [[4, 4]]
svc = SVC()
svc.fit(X_train, Y_train)
predict = svc.predict(X_test)
print(predict)

9. Регрессор SVM

Регрессор SVM — это метод обучения с учителем, который используется для прогнозирования непрерывных значений после обучения на заданном наборе данных.
В этой задаче я реализую регрессор SVM с помощью библиотеки sklearn.

from sklearn.svm import SVR
X_train = [[4.6, 3.1, 1.5, 0.2], [5.9, 3.0, 5.1, 1.8], [5.1, 2.5, 3.0, 1.1]]
Y_train = [0, 2, 1]
X_test = [[5.8, 2.8, 5.1, 2.4], [6.0, 2.2, 4.0, 1.0], [5.5, 4.2, 1.4, 0.2]]
regressor = SVR(kernel = ‘rbf’)
regressor.fit(X_train, Y_train)
predict = regressor.predict(X_test)
print(predict)

Давайте сделаем полный пример:

from sklearn.tree import DecisionTreeClassifier 
from sklearn.datasets import load_digits
from sklearn.linear_model import Perceptron
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
import pandas as pd
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
dtree = DecisionTreeClassifier()
dtree.fit(X_train, y_train)
dtree_predict = dtree.predict(X_test)
dtree_score = dtree.score(X_train, y_train)
print(f”dtree_predict : {dtree_predict}”)
gaussian_nb = GaussianNB()
gaussian_nb.fit(X_train, y_train)
gaussian_nb_predict = gaussian_nb.predict(X_test)
gaussian_nb_score = gaussian_nb.score(X_train, y_train)
print(f”gaussian_nb_predict : {gaussian_nb_predict}”)
random_state = 1
perceptron = Perceptron(tol=1e-3, random_state=random_state)
perceptron.fit(X_train, y_train)
perceptron_predict = perceptron.predict(X_test)
perceptron_score = perceptron.score(X_train, y_train)
print(f”perceptron_predict : {perceptron_predict}”)
rf = RandomForestClassifier()
rf.fit(X_train, y_train)
rf_predict = rf.predict(X_test)
rf_score = rf.score(X_train, y_train)
print(f”rf_predict : {rf_predict}”)
svc = SVC()
svc.fit(X_train, y_train)
svc_predict = svc.predict(X_test)
svc_score = svc.score(X_train, y_train)
print(f”svc_predict : {svc_predict}”)
d = [ [“DecisionTreeClassifier”, dtree_score],
 [“GaussianNB”, gaussian_nb_score],
 [“Perceptron”, perceptron_score],
 [“RandomForestClassifier”, rf_score],
 [“SVC”, svc_score]]
d = sorted(d, key=lambda x: x[1], reverse=True)
df = pd.DataFrame(d, columns = [‘Method’,’Score’])
print(df)

Посмотрим на результаты

dtree_predict : [6 9 3 7 2 1 5 3 5 2 2 5 4 0 4 2 3 7 8 4 4 3 9 7 5 6 3 5 6 3 4 9 1 4 4 6 9
 4 7 6 6 9 1 3 6 1 3 0 6 5 5 1 8 5 6 0 3 0 0 0 5 4 3 2 4 5 7 0 7 5 9 5 5 4
 7 0 4 5 5 9 9 0 2 3 8 0 6 4 4 3 1 2 5 3 5 2 9 4 4 7 4 3 4 3 4 3 5 9 4 2 7
 7 4 1 1 9 2 7 8 3 2 6 9 4 0 7 2 7 5 8 7 5 7 9 0 6 6 4 2 8 0 9 4 6 9 9 6 9
 0 3 5 6 6 0 6 4 3 9 3 4 7 2 9 0 4 5 8 6 5 7 9 8 4 2 1 8 7 7 2 2 3 9 8 0 3
 1 2 5 6 9 9 4 6 5 4 1 3 6 4 8 5 9 5 7 1 9 4 8 1 5 4 4 9 6 1 8 6 0 4 5 2 7
 4 6 4 5 6 4 3 2 3 6 7 1 5 1 4 7 6 9 1 5 5 1 4 4 8 8 9 9 7 6 2 8 2 3 1 4 3
 3 6 0 9 7 7 0 1 0 4 5 1 5 3 6 0 4 1 0 2 3 6 5 9 7 3 5 5 9 9 8 5 3 5 2 0 5
 8 3 4 0 4 4 6 4 3 4 5 0 5 2 1 3 1 4 7 1 7 0 1 5 6 1 3 8 7 0 6 4 8 8 5 1 8
 4 5 9 5 9 8 5 0 6 2 0 7 9 8 9 5 2 7 4 9 8 7 4 3 8 9 5]
gaussian_nb_predict : [6 9 3 7 2 1 5 8 5 2 1 1 7 0 4 8 3 7 8 8 4 3 9 7 5 6 3 5 6 3 4 9 1 4 4 6 9
 4 7 6 6 9 1 3 6 1 3 0 6 5 5 1 2 5 6 0 9 0 0 1 7 4 5 2 4 5 7 0 7 5 9 3 5 7
 7 0 4 5 5 5 9 0 2 3 8 0 6 4 4 9 1 2 1 3 5 2 8 0 4 7 4 3 5 3 1 8 5 7 4 2 7
 7 7 6 1 9 8 7 8 7 2 6 9 4 5 7 8 7 5 8 5 5 7 7 0 6 6 4 2 8 0 9 4 6 8 9 6 9
 0 5 5 6 6 0 6 4 2 3 3 7 7 2 3 0 4 5 8 6 5 7 9 8 4 8 1 3 7 7 2 8 3 9 8 0 3
 8 2 5 6 9 9 4 1 5 4 2 3 6 4 8 5 8 5 7 8 9 4 8 1 5 4 4 9 6 8 8 6 0 4 5 8 7
 4 6 4 5 6 0 3 2 3 6 7 1 5 1 4 7 6 8 1 5 5 1 4 1 8 8 7 5 7 6 2 2 2 3 4 8 7
 8 6 0 8 7 7 0 1 0 4 5 8 5 3 6 0 4 1 0 0 3 6 5 9 7 3 5 5 9 9 7 5 3 3 1 0 5
 8 3 4 0 2 7 6 4 3 7 5 0 5 2 1 3 1 4 8 1 7 0 1 7 8 1 8 8 7 0 6 7 8 8 5 1 8
 4 5 8 7 9 8 6 0 6 6 0 7 9 8 9 5 2 7 7 9 8 7 4 3 8 3 5]
perceptron_predict : [6 9 3 7 2 1 5 2 5 2 1 9 4 0 4 2 3 7 8 8 4 3 9 7 5 6 3 5 6 3 4 9 1 4 4 6 9
 4 7 6 6 9 1 3 6 1 3 0 6 5 5 1 9 5 6 0 9 0 0 1 0 4 5 2 4 5 7 0 7 5 9 9 5 4
 7 0 4 5 5 9 9 0 2 3 8 0 6 4 4 9 1 2 8 3 5 2 9 0 4 4 4 3 5 3 1 3 5 9 4 2 7
 7 4 4 1 9 2 7 8 7 2 6 9 4 2 7 2 7 5 8 7 5 7 9 0 6 6 4 2 8 0 9 4 6 9 9 6 9
 0 5 5 6 6 0 6 4 3 9 3 8 7 2 9 0 4 5 3 6 5 9 9 8 4 2 1 3 7 7 2 2 3 9 8 0 3
 2 2 5 6 9 9 4 1 2 4 2 3 6 4 8 5 9 5 7 8 9 4 8 1 5 4 4 9 6 1 8 6 0 4 5 2 7
 4 6 4 5 6 0 3 2 3 6 7 1 9 1 4 7 6 5 1 5 5 1 5 2 8 8 9 5 7 6 2 2 2 3 4 8 8
 3 6 0 9 7 7 0 1 0 4 5 1 5 3 6 0 4 1 0 0 3 6 5 9 7 3 5 5 9 9 8 5 3 3 2 0 5
 8 3 4 0 2 4 6 4 3 4 5 0 5 2 1 3 1 4 1 1 7 0 1 5 2 1 2 8 7 0 6 4 8 8 5 1 8
 4 5 8 7 9 8 6 0 6 2 0 7 9 8 9 5 2 7 7 1 8 7 4 3 2 3 5]
rf_predict : [6 9 3 7 2 1 5 2 5 2 1 9 4 0 4 2 3 7 8 8 4 3 9 7 5 6 3 5 6 3 4 9 1 4 4 6 9
 4 7 6 6 9 1 3 6 1 3 0 6 5 5 1 3 5 6 0 9 0 0 1 0 4 5 2 4 5 7 0 7 5 9 5 5 4
 7 0 4 5 5 9 9 0 2 3 8 0 6 4 4 9 1 2 8 3 5 2 9 4 4 4 4 3 5 3 1 3 5 9 4 2 7
 7 4 4 1 9 2 7 8 7 2 6 9 4 0 7 2 7 5 8 7 5 7 9 0 6 6 4 2 8 0 9 4 6 9 9 6 9
 0 3 5 6 6 0 6 4 3 9 3 7 7 2 9 0 4 5 8 6 5 9 9 8 4 2 1 3 7 7 2 2 3 9 8 0 3
 2 2 5 6 9 9 4 1 5 4 2 3 6 4 8 5 9 5 7 1 9 4 8 1 5 4 4 9 6 1 8 6 0 4 5 2 7
 4 6 4 5 6 0 3 2 3 6 7 1 5 1 4 7 6 8 8 5 5 1 5 2 8 8 9 5 7 6 2 2 2 3 4 8 8
 3 6 0 9 7 7 0 1 0 4 5 1 5 3 6 0 4 1 0 0 3 6 5 9 7 3 5 5 9 9 8 5 3 3 2 0 5
 8 3 4 0 2 4 6 4 3 4 5 0 5 2 1 3 1 4 1 1 7 0 1 5 2 1 2 8 7 0 6 4 8 8 5 1 8
 4 5 8 7 9 8 6 0 6 2 0 7 9 8 9 5 2 7 7 1 8 7 4 3 8 3 5]
svc_predict : [6 9 3 7 2 1 5 2 5 2 1 9 4 0 4 2 3 7 8 8 4 3 9 7 5 6 3 5 6 3 4 9 1 4 4 6 9
 4 7 6 6 9 1 3 6 1 3 0 6 5 5 1 9 5 6 0 9 0 0 1 0 4 5 2 4 5 7 0 7 5 9 5 5 4
 7 0 4 5 5 9 9 0 2 3 8 0 6 4 4 9 1 2 8 3 5 2 9 0 4 4 4 3 5 3 1 3 5 9 4 2 7
 7 4 4 1 9 2 7 9 7 2 6 9 4 0 7 2 7 5 8 7 5 7 9 0 6 6 4 2 8 0 9 4 6 9 9 6 9
 0 3 5 6 6 0 6 4 3 9 3 7 7 2 9 0 4 5 3 6 5 9 9 8 4 2 1 3 7 7 2 2 3 9 8 0 3
 2 2 5 6 9 9 4 1 5 4 2 3 6 4 8 5 9 5 7 8 9 4 8 1 5 4 4 9 6 1 8 6 0 4 5 2 7
 4 6 4 5 6 0 3 2 3 6 7 1 5 1 4 7 6 8 8 5 5 1 6 2 8 8 9 5 7 6 2 2 2 3 4 8 8
 3 6 0 9 7 7 0 1 0 4 5 1 5 3 6 0 4 1 0 0 3 6 5 9 7 3 5 5 9 9 8 5 3 3 2 0 5
 8 3 4 0 2 4 6 4 3 4 5 0 5 2 1 3 1 4 1 1 7 0 1 5 2 1 2 8 7 0 6 4 8 8 5 1 8
 4 5 8 7 9 8 6 0 6 2 0 7 9 8 9 5 2 7 7 1 8 7 4 3 8 3 5]
 Method Score
0 DecisionTreeClassifier 1.000000
1 RandomForestClassifier 1.000000
2 SVC 0.996521
3 Perceptron 0.965205
4 GaussianNB 0.855950

Как вы видите на выходе, классификатор дерева решений и классификатор случайного леса имеют точность 100%.

Спасибо за чтение :)

Если эта статья была для вас очень ценной, подумайте о том, чтобы угостить меня чашечкой кофе — каждый маленький вклад будет очень ценен! https://www.buymeacoffee.com/ugurozcan12