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 ☕