Внутри Ай

7 типов классификации с использованием Python

Полное руководство по knn, логистике, машине опорных векторов, svm ядра, наивному байесу, классификации деревьев решений, классификации случайных лесов.

Привет, как дела, я надеюсь, что это здорово ……….

Сегодня давайте разберемся и выполним все виды классификации, а также сравним каждую производительность для ее точного прогнозирования.

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

Этот набор данных является общедоступным для исследования. Подробности описаны в [Moro et al., 2011]. [Moro et al., 2011] С. Моро, Р. Лауреано и П. Кортес. Использование интеллектуального анализа данных для прямого банковского маркетинга: применение методологии CRISP-DM.
В P. Novais et al. (ред.), Материалы Европейской конференции по моделированию и моделированию — ESM’2011, стр. 117–121, Гимарайнш, Португалия, октябрь 2011 г. EUROSIS.

Данные связаны с кампаниями прямого маркетинга португальского банковского учреждения.
Маркетинговые кампании основывались на телефонных звонках. Часто требовалось несколько контактов с одним и тем же клиентом,
чтобы узнать, будет ли (или нет) подписка на продукт (срочный банковский депозит).
Первоначальные владельцы набора данных :
Создатели: Пауло Кортес (Университет Минью) и Серхио Моро (ISCTE-IUL), 2012 г.

И он содержит атрибуты:

ID клиента, доход, возраст, кредит, дефолт

Давайте начнем с нашего часто используемого метода классификации:

1.) Логистическая регрессия, тогда мы будем использовать

2.) Кнн

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

4.) Ядро SVM

5.) Наивный байесовский метод

6.) Классификация дерева решений

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

Какая-то еще классификация? Дайте мне знать в комментарии ниже.

#Logistic Regression
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values

Ну, пока здесь все так же, как и раньше, загрузите данные, затем разделите данные на X и Y, где Y — зависимая / целевая переменная, 4-й столбец (столбец невыполнения обязательств), а остальные от 0 до 3 — независимая переменная X.

Примечание: в индексе Python положение столбцов начинается с 0, а не с 1.

Затем мы разделим данные на наборы данных для обучения и тестирования. После того, как мы преобразуем все значения столбца в одно стандартное значение/диапазон, это уменьшит разброс, величину точек данных без потери исходного значения данных. ЗДОРОВО!

Это помогает алгоритму быстрее и эффективнее вычислять данные.

#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

Теперь пришло время сопоставить данные с помощью логистической регрессии и спрогнозировать результаты тестов.

#Fitting Logistic Regression to the Training set
from sklearn.linear_model import LogisticRegression
lr_model= LogisticRegression(random_state = 0)
lr_model.fit(X_train, y_train)
# Predicting the Test set results
y_pred = lr_model.predict(X_test)

ВЫПОЛНЕНО… !!! супер легко не так ли?

Давайте сравним прогнозируемые результаты с нашим исходным набором данных.

#We can also compare the actual versus predicted
df = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
df

Fatten помогает представлять данные в виде одномерного массива, такого как список.

Хорошо. Мы видим, что он довольно точно способен идентифицировать. Я понимаю, что так сложно изучить все данные… Для этого мы будем использовать метод агрегированных результатов «матрица путаницы».

# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
cm

НИЦЦА.

Наша модель способна идентифицировать 0, то есть неплательщиков, которые на самом деле неплательщики 424 неплательщика из общего числа 500 (500 из общего числа 1997, потому что мы разделили набор данных на обучение и тестирование ~ 75% — 25%)

И 18 из 500 являются ложноотрицательными (FN), что означает, что 18 были неплательщиками, но прогнозировались как недефолтные. То же самое относится к 8 из 500 неплательщиков, но прогнозируется как неплательщики. И прогноз 50 относится к неплательщикам из 500, которые на самом деле являются неплательщиками.

Это действительно хорошая модель с высокой точностью, и ни одна модель не является точной на 100%, если это так, ТОГДА может возникнуть проблема смещения.

Хорошо, у нас есть еще одна метрика для оценки производительности модели с помощью использования metrics.accuracy_score.

#evaluation Metrics
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred))
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))

ОТЛИЧНО! У нас показатель точности модели 0,948, т. е. 95 %.

И сбалансированная оценка точности 0,858, т.е. 86%

И у нас есть еще одна точность

Точность – Полнота – полезная мера успешности предсказания, когда классы сильно несбалансированы. В информационном поиске точность – это мера релевантности результатов, а отзыв – это количество возвращаемых действительно релевантных результатов. Точность более важна, чем отзыв, когда вы хотите иметь меньше ложных срабатываний в обмен на больше Ложноотрицательные результаты

Наконец пришло время прогнозировать с новым входом

#if income, age, loan = 66952.7,28,8770.1
import numpy as np 
# Create a numpy array 
new_data = np.array([66952.7,28,8770.1]) 
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
lr_model.predict(new_data)
#if we wish to enter manually
lr_model.predict([[66952.7,28,8770.1]])

У нас есть вывод array([0], dtype=int64) класса «0». Готово… мы классифицировали, если доход, возраст, кредит = 66952,7, 28, 8770,1, кажется, не будет неплательщика (класс = '0').

БОНУС

Сохраните и загрузите модель.

#save the model in the disk
import pickle
# save the model to disk
filename = 'class_model.sav'
pickle.dump(lr_model, open(filename, 'wb'))
# load the model from disk
filename1 = 'class_model.sav'
loaded_model = pickle.load(open(filename1, 'rb'))
#another method using joblib
'''Pickled model as a file using joblib: Joblib is the replacement of pickle as
 it is more efficent on objects that carry large numpy arrays. 
'''
from sklearn.externals import joblib 
  
# Save the model as a pickle in a file 
joblib.dump(lr_model, 'classification.pkl') 
  
# Load the model from the file 
loaded_model2 = joblib.load('classification.pkl')  
  
# Use the loaded model to make predictions 
loaded_model2.predict(X_test)

Давайте соберем все части вместе

# Logistic Regression
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#---------------------------------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#Fitting Logistic Regression to the Training set
from sklearn.linear_model import LogisticRegression
lr_model= LogisticRegression(random_state = 0)
lr_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = lr_model.predict(X_test)
#We can also compare the actual versus predicted
df = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
df
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#if income, age, loan = 66952.7,28,8770.1
import numpy as np 
# Create a numpy array 
new_data = np.array([66952.7,28,8770.1]) 
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
"""We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format else inverse transform will give back the original value"""
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
lr_model.predict(new_data)
#if we wish to enter manually
lr_model.predict([[66952.7,28,8770.1]])
#---------------------------------------
#save the model in the disk
import pickle
# save the model to disk
filename = 'class_model.sav'
pickle.dump(lr_model, open(filename, 'wb'))
# load the model from disk
filename1 = 'class_model.sav'
loaded_model = pickle.load(open(filename1, 'rb'))
#another method using joblib
'''Pickled model as a file using joblib: Joblib is the replacement of pickle as
 it is more efficent on objects that carry large numpy arrays. 
'''
from sklearn.externals import joblib 
  
# Save the model as a pickle in a file 
joblib.dump(lr_model, 'classification.pkl') 
  
# Load the model from the file 
loaded_model2 = joblib.load('classification.pkl')  
  
# Use the loaded model to make predictions 
loaded_model2.predict(X_test)

Поздравляем! Мы успешно завершили нашу первую модель классификации.

Далее КНН

Что такое КНН?

K-ближайших соседей (KNN) — это один из самых простых алгоритмов, используемых в машинном обучении для регрессии и классификации. Алгоритмы KNN классифицируют новые точки данных на основе мер подобия (например, функция евклидова расстояния).

Классификация производится большинством голосов соседям (K).

Давайте начнем с того, как применять KNN для задач классификации.

#K-Nearest Neighbors (K-NN)
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#-------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

До сих пор это то же самое, что и раньше, загрузите данные, определите X и Y, разделите данные, а затем масштабируйте независимые переменные.

ТЕПЕРЬ мы подгоним KNN к нашему набору обучающих данных, где K ближайших соседей K = 3, метрика = Минковский, который помогает измерить трехмерное евклидово пространство, а p = 2 — это параметр мощности для метрики Минковского. Когда p = 1, это эквивалентно использованию manhattan_distance (l1) и euclidean_distance (l2) для p = 2.

# Fitting K-NN to the Training set
from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)
knn_model.fit(X_train, y_train)

Вот и все….!

Пришло время прогнозировать с помощью тестового набора данных.

# Predicting the Test set results
y_pred = knn_model.predict(X_test)

Хорошо, давайте сравним наши предсказанные результаты с нашими первоначальными результатами.

#actual versus predicted
df = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
df

ну, похоже, наша модель предсказывает очень хорошо….

Теперь давайте попробуем оценить нашу модель с помощью метрик оценки.

Во-первых, это матрица путаницы

# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

Ничего себе, он классифицирует истинно положительные и истинно отрицательные более точно, чем с помощью логистической регрессии.

#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))

НУ НУ НУ НУ

Даже показатель точности составляет 98%, а показатель сбалансированной точности 0,957, т.е. 96%.

И у нас есть еще одна точность

Точность – Полнота – полезная мера успешности предсказания, когда классы сильно несбалансированы. В информационном поиске точность – это мера релевантности результатов, а отзыв – это количество возвращаемых действительно релевантных результатов.

Точность более важна, чем отзыв, когда вы хотите иметь меньше ложных срабатываний в обмен на больше Ложные отрицания.

Теперь давайте предскажем с совершенно невидимыми случайными данными, если доход, возраст, кредит = 66952,7,28,8770,1

#if income, age, loan = 66952.7,28,8770.1
import numpy as np
#Create a numpy array
new_data = np.array([66952.7,28,8770.1])
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
knn_model.predict(new_data)
#if we wish to enter manually
knn_model.predict([[66952.7,28,8770.1]])

У нас есть вывод array([0], dtype=int64) класса «0». Готово… мы классифицировали, если доход, возраст, кредит = 66952,7, 28, 8770,1, кажется, будет неплательщиком (класс = '0') с моделью KNN

Давайте соберем все коды вместе

#K-Nearest Neighbors (K-NN)
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#------------------------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#Fitting K-NN to the Training set
from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)
knn_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = knn_model.predict(X_test)
#Model Evaluation------------------------------------
#We can also compare the actual versus predicted
df = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
df
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#---------------------------------------------------
#if income, age, loan = 66952.7,28,8770.1
import numpy as np 
#Create a numpy array 
new_data = np.array([66952.7,28,8770.1]) 
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
knn_model.predict(new_data)
#if we wish to enter manually
knn_model.predict([[66952.7,28,8770.1]])
#scaled version input data
knn_model.predict([[0.382027,-0.979416,1.45499]])

Поздравляем! Мы успешно завершили нашу модель KNN для классификации неплательщиков

Далее идет SVM, еще один мощный классификатор.

МАШИНА ОПОРНЫХ ВЕКТОРОВ

Что такое СВМ?

SVM — это контролируемый алгоритм машинного обучения, который можно использовать для задач классификации или регрессии.

Если говорить кратко, принцип работы SVM заключается в поиске ближайшей точки данных (любого класса) с помощью гиперплоскости. Это расстояние называется маржой.

Многие предпочитают SVM, поскольку он обеспечивает значительную точность при меньшей вычислительной мощности.

Давайте поймем это с помощью примера.

#SVM
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#--------------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

Ну а пока здесь то же, что и у других. Во-первых, мы импортируем данные, которые определили X и Y, разделяем данные на обучающие и тестовые наборы, масштабируем независимые переменные, чтобы уменьшить величину разброса точек данных без потери их первоначального значения.

Пришло время поместить SVM в обучающую выборку.

#Fitting SVM to the Training set
from sklearn.svm import SVC
svm_model = SVC(kernel = 'linear', random_state = 0)
svm_model.fit(X_train, y_train)

Теперь наша модель готова к прогнозированию с новыми данными.

#Predicting the Test set results
y_pred = svm_model.predict(X_test)

Давайте получим доступ к производительности нашей модели.

Во-первых, мы сравним прогнозируемые значения с фактическим результатом.

#We can also compare the actual versus predicted
df = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
df

Вторая метрика производительности — это матрица путаницы.

# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

Он классифицирует истинно положительный и истинно отрицательный более точно, чем ложноположительный и ложноотрицательный.

Кроме того, мы можем использовать показатели оценки scikit sklearn для оценки оценки точности модели.

#evaluation Metrics
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred))
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))

Оценка точности составляет 95%, а сбалансированная оценка точности составляет 0,87, т.е. 87%.

И у нас есть еще одна точность

Точность – Полнота – полезная мера успешности предсказания, когда классы сильно несбалансированы. В информационном поиске точность – это мера релевантности результатов, а отзыв – это количество возвращаемых действительно релевантных результатов.

Точность более важна, чем отзыв, когда вы хотите иметь меньше ложных срабатываний в обмен на больше Ложные отрицания.

Теперь давайте предскажем с совершенно невидимыми случайными данными, если доход, возраст, кредит = 66952,7,28,8770,1

#if income, age, loan = 66952.7,28,8770.1
import numpy as np
# Create a numpy array
new_data = np.array([66952.7,28,8770.1])
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#---------------------------------------
svm_model.predict(new_data)
#if we wish to enter manually
svm_model.predict([[66952.7,28,8770.1]])

У нас есть вывод массива ([0], dtype=int64) класса «0». Готово… мы классифицировали, если доход, возраст, кредит = 66952,7, 28, 8770,1, похоже, не будет неплательщика (класс = '0') с моделью SVM.

Давайте соберем все коды вместе.

#SVM
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#-------------------------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#Fitting SVM to the Training set
from sklearn.svm import SVC
svm_model = SVC(kernel = 'linear', random_state = 0)
svm_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = svm_model.predict(X_test)
#We can also compare the actual versus predicted
df = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
df
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#evaluation Metrics
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred))
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#if income, age, loan = 66952.7,28,8770.1
import numpy as np
#Create a numpy array
new_data = np.array([66952.7,28,8770.1])
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
svm_model.predict(new_data)
#if we wish to enter manually
svm_model.predict([[66952.7,28,8770.1]])

Поздравляем! Мы успешно завершили нашу модель SVM для классификации неплательщиков

Далее идет Kernel SVM, еще одна мощная SVM.

Что такое ядро ​​SVM

Сложность Linear SVM растет с увеличением размера набора данных. Проще говоря, Kernel SVM ‘rbf’ преобразует сложные нелинейные данные в многомерное трехмерное пространство для разделения классов данных.

Обычно линейные и полиномиальные ядра требуют меньше времени и обеспечивают меньшую точность, чем rbf или ядра Гаусса.

Итак, эмпирическое правило: используйте линейные SVM (или логистическую регрессию) для линейных задач и нелинейные ядра, такие как ядро ​​радиальной базисной функции, для нелинейных задач.

Давайте. Сравните Linear svm с ядром Radial на основе svm

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#-----------------------------------------------------------
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
#fearure scale
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

Ну а пока везде одно и то же. Загрузите данные, затем определите X и Y, разделите данные и преобразуйте их в стандартный диапазон, чтобы уменьшить величину данных без потери их первоначального значения.

Теперь мы подгоним данные как в Linear, так и в Kernel 'rbf'svm, чтобы сравнить их оба. .

#Fitting SVM to the Training set
from sklearn.svm import SVC
svm_model = SVC(kernel = 'linear', random_state = 0)
svm_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = svm_model.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#-------------------------------------------------------
#Fitting Kernal SVM to the Training set
from sklearn.svm import SVC
Ksvm_model = SVC(kernel = 'rbf', random_state = 0)
Ksvm_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = Ksvm_model.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm1 = confusion_matrix(y_test, y_pred)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#Hence we noticed Kernal SVM perform better than SVM

Итак, что мы получили

Матрица путаницы Kernel SVM работает лучше при определении истинно положительных и истинно отрицательных, чем линейный SVM

Оценка точности нашей модели Kernel svm лучше, чем линейная svm.

Следовательно, Kernel SVM работает лучше, чем Linear SVM.

Наконец, с помощью модели мы можем предсказать любые новые входные данные.

#if income, age, loan = 66952.7,28,8770.1
import numpy as np
#Create a numpy array
new_data = np.array([66952.7,28,8770.1])
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
Ksvm_model.predict(new_data)
#if we wish to enter manually
Ksvm_model.predict([[66952.7,28,8770.1]])

У нас есть вывод array([0], dtype=int64) класса «0». Готово… мы классифицировали, если доход, возраст, кредит = 66952,7, 28, 8770,1, кажется, не будет неплательщиком (класс = '0') даже с моделью Kernel SVM.

Давайте соберем все коды вместе.

#Kernal SVM
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#-----------------------------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
#fearure scale
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#------------------------------------------------------
#Fitting SVM to the Training set
from sklearn.svm import SVC
svm_model = SVC(kernel = 'linear', random_state = 0)
svm_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = svm_model.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#---------------------------------------------------------
# Fitting Kernal SVM to the Training set
from sklearn.svm import SVC
Ksvm_model = SVC(kernel = 'rbf', random_state = 0)
Ksvm_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = Ksvm_model.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm1 = confusion_matrix(y_test, y_pred)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#Hence we noticed Kernal SVM performs better than SVM
#if income, age, loan = 66952.7,28,8770.1
import numpy as np 
#Create a numpy array 
new_data = np.array([66952.7,28,8770.1]) 
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
Ksvm_model.predict(new_data)
#if we wish to enter manually
Ksvm_model.predict([[66952.7,28,8770.1]])

Поздравляем! Мы успешно завершили нашу модель Kernel SVM для классификации неплательщиков.

Далее идет наивный байесовский классификатор.

Что такое Наивный Байес вкратце?

Наивные байесовские классификаторы — это семейство простых «вероятностных классификаторов», основанных на применении теоремы Байеса.

P(c|x) — апостериорная вероятность класса (цель) с учетом предиктора (атрибут).

  • P(c) — априорная вероятность класса.
  • P(x|c) — это вероятность, которая является вероятностью предиктора данного класса.
  • P(x) — априорная вероятность предиктора.

Вероятность: насколько вероятны данные доказательства того, что наша гипотеза верна.

До: насколько вероятной была наша гипотеза до появления доказательств?

Апостериорная: насколько вероятна наша гипотеза с учетом наблюдаемых данных?

Предельно: насколько вероятны новые данные при всех возможных гипотезах?

Это длинная глава о том, как работает Наивный Байес. если вы заинтересованы в том, чтобы углубиться, вы можете посетить мой другой сайт. тем не мение

Короче говоря, Наивный Байес использует метод класса вероятности для классификации решения проблемы.

Давайте посмотрим, как мы можем применить наивный байесовский метод для классификации неплательщиков банков.

#Naive Bayes
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#-----------------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
#fearure scaling/Normalization
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

Хорошо, пока у нас есть то же самое, что и выше, загрузите данные, определите X и Y, разделите данные на обучающие и тестовые наборы, затем масштабируйте данные, чтобы уменьшить величину разброса точек данных без потери их первоначального значения.

Давайте подгоним Наивный Байес к нашим данным.

# Fitting Naive Bayes to the Training set
from sklearn.naive_bayes import GaussianNB
NB_model = GaussianNB()
NB_model.fit(X_train, y_train)

Готово всего за 3 строчки кода, не так ли?

Время прогнозировать невидимые данные.

# Predicting the Test set results
y_pred2 = NB_model.predict(X_test)

Готово, наши прогнозируемые значения сохранены в y_pred2.

Теперь давайте получим доступ к производительности модели с помощью матрицы путаницы.

# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm2 = confusion_matrix(y_test, y_pred2)

Итак, мы видим, что он классифицирует Истинно положительные и Истинно отрицательные более точно, чем Ложноположительные и Ложноотрицательные.

Кроме того, мы можем использовать показатели оценки scikit sklearn для оценки оценки точности модели.

#evaluation Metrics
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred))
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))

Ну, мы получили показатель точности нашей модели 98%, это хорошая модель.

Наконец, мы можем использовать эту модель для прогнозирования любых новых данных.

#if income, age, loan = 66952.7,28,8770.1
import numpy as np 
# Create a numpy array 
new_data = np.array([66952.7,28,8770.1]) 
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
NB_model.predict(new_data)
#if we wish to enter manually
NB_model.predict([[66952.7,28,8770.1]])

У нас есть вывод array([0], dtype=int64) класса «0». Готово… мы классифицировали, если доход, возраст, кредит = 66952,7, 28, 8770,1, кажется, не будет неплательщиком (класс = '0') с моделью Наивного Байеса.

Давайте объединим все эти коды.

#Naive Bayes
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#----------------------------------------------------------------
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
#fearure scaling/Normalization
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#-------------------------------------------------------------
# Fitting Naive Bayes to the Training set
from sklearn.naive_bayes import GaussianNB
NB_model = GaussianNB()
NB_model.fit(X_train, y_train)
# Predicting the Test set results
y_pred2 = NB_model.predict(X_test)
# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm2 = confusion_matrix(y_test, y_pred2)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#if income, age, loan = 66952.7,28,8770.1
import numpy as np 
# Create a numpy array 
new_data = np.array([66952.7,28,8770.1]) 
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
NB_model.predict(new_data)
#if we wish to enter manually
NB_model.predict([[66952.7,28,8770.1]])

Поздравляем! Мы успешно завершили нашу модель Наивного Байеса для классификации неплательщиков.

Далее идет дерево решений / классификатор на основе правил.

Что такое деревья решений?

Деревья решений — это непараметрический контролируемый метод обучения, используемый как для задач классификации, так и для задач регрессии. Цель состоит в том, чтобы создать модель, которая предсказывает значение целевой переменной, изучая простые правила принятия решений, полученные на основе характеристик данных.

Правила принятия решений, как правило, имеют форму операторов if-then-else. Чем глубже дерево, тем сложнее правила и точнее модель.

Дерево решений дает результат в виде древовидного графа с узлами. Возьмите этот график в качестве примера, красиво объясненного.

Давайте получим практический опыт работы с деревьями решений.

Decision Tree Classification
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#--------------------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
#fearure scaling/Normalization
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

До этой части мы выполнили базовые задачи предварительной обработки: импортировали данные, определили X и y, разделили данные на обучающие и тестовые наборы и последнюю нормализацию, которая масштабируется, чтобы сузить ее величину разброса точек данных. .

Теперь, что мы здесь сделаем, мы подгоним нашу модель к наивному Байесу, а также к деревьям решений, и сравним, какая из них лучше работает в классификации.

# Fitting Naive Bayes to the Training set
from sklearn.naive_bayes import GaussianNB
NB_model = GaussianNB()
NB_model.fit(X_train, y_train)
# Predicting the Test set results
y_pred2 = NB_model.predict(X_test)
#evaluation Metrics
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred2))
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred2))
print('Average Precision:',metrics.average_precision_score(y_test, y_pred2))
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm2 = confusion_matrix(y_test, y_pred2)
#Fitting Decision Tree Classification to the Training set
from sklearn.tree import DecisionTreeClassifier
dt_model = DecisionTreeClassifier(criterion = 'entropy', random_state = 0)
dt_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = dt_model.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#evaluation Metrics
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred))
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))

Итак, что мы получили

Матрица путаницы дерева решений работает лучше при определении истинно положительных и истинно отрицательных, чем наивный байесовский метод.

Показатель точности нашей модели дерева решений лучше, чем у наивного байесовского метода.

Следовательно, дерево решений работает лучше, чем наивный байесовский метод.

Наконец, с помощью модели мы можем предсказать любые новые входные данные.

#if income, age, loan = 66952.7,28,8770.1
import numpy as np 
# Create a numpy array 
new_data = np.array([66952.7,28,8770.1]) 
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
dt_model.predict(new_data)
#if we wish to enter manually
dt_model.predict([[66952.7,28,8770.1]])

У нас есть вывод array([0], dtype=int64) класса «0». Готово… мы классифицировали, если доход, возраст, кредит = 66952,7, 28, 8770,1, кажется, не будет неплательщика (класс = '0') с моделью дерева решений.

Пришло время визуализировать дерево решений.

#import export_graphviz
 from sklearn.tree import export_graphviz# export the decision tree to a tree.dot file
#for visualizing the plot easily anywhere
 export_graphviz(dt_model, out_file ='e:/tree.dot',feature_names =['Pressure'])

Дерево, наконец, экспортировано, и мы можем визуализировать его с помощью http://www.webgraphviz.com/, скопировав данные из файла tree.dot.

Собрав все это вместе, код who выглядит примерно так.

#Decision Tree Classification 
#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#----------------------------------------------------
#Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
#fearure scaling/Normalization
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#---------------------------------------------------------
#Fitting Naive Bayes to the Training set
from sklearn.naive_bayes import GaussianNB
NB_model = GaussianNB()
NB_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred2 = NB_model.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm2 = confusion_matrix(y_test, y_pred2)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred2))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred2)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred2))
#if income, age, loan = 
NB_model.predict([[66952.7,18,8770.1]])
NB_model.predict([[0.382027,-0.979416,1.45499]])
#-----------------------------------------------------
# Fitting Decision Tree Classification to the Training set
from sklearn.tree import DecisionTreeClassifier
dt_model = DecisionTreeClassifier(criterion = 'entropy', random_state = 0)
dt_model.fit(X_train, y_train)
# Predicting the Test set results
y_pred = dt_model.predict(X_test)
# Making the Confusion Matrix 
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
from sklearn.tree import export_graphviz  
  # export the decision tree to a tree.dot file 
# for visualizing the plot easily anywhere 
export_graphviz(dt_model, out_file ='e:/tree.dot', 
               feature_names =['income','age','loan'])
"""
The tree is finally exported and we can visualized using  
http://www.webgraphviz.com/ by copying the data from the ‘tree.dot’ file."""
#if income, age, loan = 66952.7,28,8770.1
import numpy as np 
# Create a numpy array 
new_data = np.array([66952.7,28,8770.1]) 
new_data.dtype
new_data.shape
#We need to reshape to match the dimensions
new_data = new_data.reshape(-1,3)
new_data.shape
#------------------------------------
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
#scale the data
new_data = sc.fit_transform(new_data)
#We might see the scaled data as 0, 0, 0 but its not its 0.000000e+ and can be view by changing the format
#else inverse transform will give back the original value
inversed = sc.inverse_transform(new_data)
print(inversed)
#-------------------------------------
dt_model.predict(new_data)
#if we wish to enter manually
dt_model.predict([[66952.7,28,8770.1]])

Вот мы и закончили, как применять деревья решений для нелинейных данных.

СЛЕДУЮЩИЙ СЛУЧАЙНЫЙ ЛЕС

Что такое случайный лес?

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

Начнем с примера

#Random Forest Classification
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('credit_data.csv', sep=",")
#drop the missing values
dataset = dataset.dropna()
X = dataset.iloc[:,1:4].values
y = dataset.iloc[:, 4].values
#---------------------------------------------------
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
#fearure scaling/Normalization
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

До сих пор это тот же базовый этап предварительной обработки данных, от загрузки данных, определения X и Y, разделения данных на поезд и проверки до нормализации/масштабирования данных, чтобы уменьшить величину разброса точек данных.

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

#Fitting Decision Tree Classification to the Training set
from sklearn.tree import DecisionTreeClassifier
dt_model = DecisionTreeClassifier(criterion = 'entropy', random_state = 0)
dt_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred = dt_model.predict(X_test)
#Making the Confusion Matrix 
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
 
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred))
#------------------------------------------------------------
#Fitting Random Forest Classification to the Training set
from sklearn.ensemble import RandomForestClassifier
rf_model = RandomForestClassifier(n_estimators = 500, criterion = 'entropy', random_state = 0)
rf_model.fit(X_train, y_train)
#Predicting the Test set results
y_pred2 = rf_model.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm2 = confusion_matrix(y_test, y_pred2)
#evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred2))  
print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred2)) 
print('Average Precision:',metrics.average_precision_score(y_test, y_pred2))

Вауууу ! у нас есть показатель точности модели 99%. Как насчет твоей?

дайте мне знать, если вам нужно что-нибудь или даже набор данных, поскольку этот блог не поддерживает хостинг файлов. Пропингуйте меня @ почтовый ящик

Поздравляем! мы завершили все,,,, да, я бы сказал, все виды методов классификации, доступных на сегодняшний день.

Это длинный блог, я старался сделать его как можно короче. Надеюсь, вам понравилось.

Я также буду делать другую версию в R. Удачного дня. Поддерживать связь!