Ml3b 2 metrics
In [1]:
Copied!
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
Загружаем данные¶
In [2]:
Copied!
from sklearn.datasets import load_breast_cancer # подгружаем датасет
breast_cancer = load_breast_cancer()
breast_cancer.keys()
from sklearn.datasets import load_breast_cancer # подгружаем датасет
breast_cancer = load_breast_cancer()
breast_cancer.keys()
Out[2]:
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
Определяем зависимые и независимые переменные¶
Зададим зависимые (Y) и независимые переменные (X)
In [3]:
Copied!
Y = breast_cancer.target # Наша целевая переменная, 0 — если рака нет, 1 — если есть
X = breast_cancer.data # X - признаки, по которым мы будем предсказывать рак
Y = breast_cancer.target # Наша целевая переменная, 0 — если рака нет, 1 — если есть
X = breast_cancer.data # X - признаки, по которым мы будем предсказывать рак
Разбиваем выборку и на train/test¶
Разбиваем выборку на обучающую и тестовую и обучаем нашу модель:
In [4]:
Copied!
X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size = 0.3)
model = LogisticRegression(max_iter=5000)
model.fit(X_train, Y_train)
X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size = 0.3)
model = LogisticRegression(max_iter=5000)
model.fit(X_train, Y_train)
Out[4]:
LogisticRegression(max_iter=5000)
Оценка Модели¶
И оценим качество модели
In [5]:
Copied!
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
Y_predicted = model.predict(X_val)
print('корректность',accuracy_score(Y_val,Y_predicted))
print('точность',precision_score(Y_val,Y_predicted))
print('полнота',recall_score(Y_val,Y_predicted))
print('f1 мера',f1_score(Y_val,Y_predicted))
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
Y_predicted = model.predict(X_val)
print('корректность',accuracy_score(Y_val,Y_predicted))
print('точность',precision_score(Y_val,Y_predicted))
print('полнота',recall_score(Y_val,Y_predicted))
print('f1 мера',f1_score(Y_val,Y_predicted))
корректность 0.9415204678362573 точность 0.9646017699115044 полнота 0.9478260869565217 f1 мера 0.956140350877193
Задание¶
Задание 3B.2.1¶
Вы создали классификатор, который разделяет экономические и политические новости на два разных Telegram-канала, и хотите проверить его качество.
- За день вышло 15 политических новостей и 20 экономических.
- Ваш алгоритм из 15 политических новостей отметил 9 как экономические, а из 20 экономических — 6 как политические.
In [6]:
Copied!
# 15 political, 20 economic (TP+TN+FP+FN = 35)
# 15 political (6 political 9 econimic)
# 20 economic (6 political, 15 economic)
TP = 6; FP = 9
TN = 14; FN = 6
acc = (TP + TN)/(TP+TN+FP+FN)
print(acc)
# 15 political, 20 economic (TP+TN+FP+FN = 35)
# 15 political (6 political 9 econimic)
# 20 economic (6 political, 15 economic)
TP = 6; FP = 9
TN = 14; FN = 6
acc = (TP + TN)/(TP+TN+FP+FN)
print(acc)
0.5714285714285714
Задание 3B.2.2¶
- Загрузите встроенный в библиотеку sklearn датасет про ирисы с помощью функции load_iris.
- Обучите модель логистической регрессии (random_state=50, размер тестовой выборки 0.3) и укажите полученное значение метрики
In [7]:
Copied!
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
iris = load_iris()
iris.keys()
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
iris = load_iris()
iris.keys()
Out[7]:
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
In [8]:
Copied!
Y = iris.target
X = iris.data
Y = iris.target
X = iris.data
In [9]:
Copied!
X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size = 0.3, random_state=50)
model = LogisticRegression(max_iter=5000)
model.fit(X_train, Y_train)
X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size = 0.3, random_state=50)
model = LogisticRegression(max_iter=5000)
model.fit(X_train, Y_train)
Out[9]:
LogisticRegression(max_iter=5000)
In [10]:
Copied!
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
Y_predicted = model.predict(X_val)
print('корректность',round(accuracy_score(Y_val,Y_predicted),3))
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
Y_predicted = model.predict(X_val)
print('корректность',round(accuracy_score(Y_val,Y_predicted),3))
корректность 0.978