


Программирование
+4Помогите пожалуйста решить🙏🙏🙏🙏🙏
2.1. Провести анализ датасета животных зоопарка с целью предсказания класса животного (class_type) по его признакам. Определить точность предсказаний с помощью различных метрик. В качестве модели классификации использовать несколько моделей на ваш выбор (например, логистическую регрессию и случайный лес).
2.2. Определить количество животных, имеющих и неимеющих хвост.
2.3. Составить таблицу, хранящую информацию по количеству животных с хвостом и без хвоста в зависимости от класса животного.
2.4. Визуализировать результаты таблицы задания 2.3 в виде столбчатой диаграммы.
Необходимый датасет находится в файле zoo2.csv
По дате
По рейтингу
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
import matplotlib.pyplot as plt
df = pd.read_csv('zoo2.csv')
X = df.drop(['class_type'], axis=1)
y = df['class_type']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
lr_model = LogisticRegression()
lr_model.fit(X_train, y_train)
lr_predictions = lr_model.predict(X_test)
rf_model = RandomForestClassifier()
rf_model.fit(X_train, y_train)
rf_predictions = rf_model.predict(X_test)
lr_accuracy = accuracy_score(y_test, lr_predictions)
rf_accuracy = accuracy_score(y_test, rf_predictions)
lr_classification_report = classification_report(y_test, lr_predictions)
rf_classification_report = classification_report(y_test, rf_predictions)
print("Accuracy Logistic Regression:", lr_accuracy)
print("Accuracy Random Forest:", rf_accuracy)
print("\nClassification Report Logistic Regression:\n", lr_classification_report)
print("\nClassification Report Random Forest:\n", rf_classification_report)
tail_counts = df['tail'].value_counts()
print("Количество животных с хвостом:", tail_counts[1])
print("Количество животных без хвоста:", tail_counts[0])
table = pd.crosstab(df['class_type'], df['tail'], margins=True, margins_name="Total")
table = table.drop('Total')
table.plot(kind='bar', stacked=True)
plt.title('Количество животных с хвостом и без хвоста по классам')
plt.xlabel('Класс животного')
plt.ylabel('Количество')
plt.show()