<jupyter_start><jupyter_text>Лабораторная работа №1  Задание на лабораторную работу.Разработать программу генерирующую набор данных, удовлетворяющих условиюварианта. Для всех вариантов: данные двумерные (используются только два признака).Классификатор – логистическая регрессия (информация в методичке). Разбиение выборки50%/50% (половина данных используется для обучения классификатора, половина дляоценки ошибки классификации).  Результаты, которые необходимо получить в итоге:1. Параметры генерации данных.2. Графическое представления расположения набора данных (двумерный график, вкотором каждый класс обозначен своим цветом).3. Матрицу ошибок.4. Значение точности классификации.<jupyter_code>import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score

import warnings
warnings.filterwarnings("ignore")

RAND=7
N, M, R1, R2 = 7, 722*7, .586, .6
X, y = make_blobs(
    n_samples=M, 
    centers=N, 
    n_features=2,
    cluster_std = 1.85,
    random_state=RAND
)
 
columns = {
    'first_feature': X[:, 0], 
    'second_feature': X[:, 1], 
    'target_value': y
}

df = pd.DataFrame(data=columns)
df.head()
print(f"Размерность данных: {df.shape}")
print(f"Количество элементов в каждом классе:\n{df['target_value'].value_counts().sort_values()}")
g = sns.pairplot(df, hue='target_value', palette="tab10")
g.fig.set_size_inches(10,10)
X = df.drop("target_value", axis=1)
y = df["target_value"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, shuffle=True, random_state=RAND)
clf = LogisticRegression(penalty="l2", solver="newton-cg", C=1.0)
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)
print(classification_report(y_test,predictions))
confusion_matrix(y_test, predictions)
sns.set(font_scale=0.8)
sns.heatmap(confusion_matrix(y_test, predictions), linewidths=.5, cmap="mako", annot=True)
print(f"Диапазон точности: {R1}-{R2}")
print(f"Точность модели: {accuracy_score(y_test, predictions)}")<jupyter_output>Диапазон точности: 0.586-0.6
Точность модели: 0.8587257617728532
{'fraction_non_alphanumeric': 0.11101360245721807, 'fraction_numerical': 0.029398859148749453, 'mean_word_length': 6.755102040816326, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '232056', 'license': 'MIT', 'n_tokens_mistral': 931, 'n_tokens_neox': 996, 'n_words': 189, 'path': 'task1/Lab1_N10.ipynb', 'repo_name': 'nvnovitskiy/artificial-intelligence-and-machine-learning', 'size': '2279'}