IIS_2023_1/simonov_nikita_lab_3/lab3.py

39 lines
1.8 KiB
Python
Raw Normal View History

2023-11-29 19:36:57 +04:00
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, classification_report
# Загрузка данных
data = pd.read_csv("train_bikes.csv", sep=',').dropna()
# Подготовка данных
# Здесь определяются пороги для категорий спроса
low_demand_threshold = 100 # Порог для "Низкого спроса"
medium_demand_threshold = 300 # Порог для "Среднего спроса"
# Создание новой категориальной переменной на основе порогов
data['demand_category'] = pd.cut(data['count'], bins=[0, low_demand_threshold, medium_demand_threshold, float('inf')],
labels=["Low Demand", "Medium Demand", "High Demand"])
# Выделение признаков и целевой переменной
X = data.drop(['count', 'demand_category', 'datetime'], axis=1) # Удаление ненужных столбцов
y = data['demand_category']
# Разделение данных на обучающий и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создание и обучение модели дерева решений
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)
# Предсказание категорий спроса на тестовом наборе
y_pred = clf.predict(X_test)
# Оценка качества модели
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")
# Вывод отчета о классификации
report = classification_report(y_test, y_pred)
print(report)