IIS_2023_1/almukhammetov_bulat_lab_3/lab3.py
2023-11-01 23:05:45 +04:00

78 lines
5.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pandas as pd
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, accuracy_score
# Загрузка данных
data = pd.read_csv('housing.csv')
data = data.dropna()
# Отбор нужных столбцов
features = data[
['longitude', 'latitude', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income']]
# Задача регрессии
target_regression = data['housing_median_age']
# Разделение данных на обучающий и тестовый наборы для регрессии
X_train_regression, X_test_regression, y_train_regression, y_test_regression = train_test_split(features,
target_regression,
test_size=0.01,
random_state=241)
# Создание и обучение дерева решений для регрессии
clf_regression = DecisionTreeRegressor(random_state=241)
clf_regression.fit(X_train_regression, y_train_regression)
# Предсказание на тестовом наборе для регрессии
y_pred_regression = clf_regression.predict(X_test_regression)
# Оценка качества модели для регрессии (MSE)
mse_regression = mean_squared_error(y_test_regression, y_pred_regression)
print("Средняя ошибка для регрессии:", mse_regression)
# Задача классификации
target_classification = data['median_house_value']
# Разделение данных на обучающий и тестовый наборы для классификации
X_train_classification, X_test_classification, y_train_classification, y_test_classification = train_test_split(
features, target_classification, test_size=0.01, random_state=241)
# Создание и обучение дерева классификации
clf_classification = DecisionTreeClassifier(random_state=241)
clf_classification.fit(X_train_classification, y_train_classification)
# Предсказание на тестовом наборе для классификации
y_pred_classification = clf_classification.predict(X_test_classification)
# Оценка качества модели для классификации (точность)
accuracy_classification = accuracy_score(y_test_classification, y_pred_classification)
print("Точность для классификации: {:.2f}%".format(accuracy_classification * 100))
# Важности признаков для регрессии
importance_regression = clf_regression.feature_importances_
print("Важность для регрессии")
# Печать важности каждого признака для регрессии
print("Важность 'longitude':", importance_regression[0]) # За западную долготу дома
print("Важность 'latitude':", importance_regression[1]) # За северную широту дома
print("Важность 'total_rooms':", importance_regression[2]) # За общее количество комнат в блоке
print("Важность 'total_bedrooms':", importance_regression[3]) # За общее количество спален в блоке
print("Важность 'population':", importance_regression[4]) # За общее количество проживающих в блоке
print("Важность 'households':", importance_regression[5]) # За общее количество домохозяйств в блоке
print("Важность 'median_income':", importance_regression[6]) # За медианный доход домохозяйств в блоке
# Важности признаков для классификации
importance_classification = clf_classification.feature_importances_
print()
print("Важность для классификации")
# Печать важности каждого признака для классификации
print("Важность 'longitude':", importance_classification[0]) # За западную долготу дома
print("Важность 'latitude':", importance_classification[1]) # За северную широту дома
print("Важность 'total_rooms':", importance_classification[2]) # За общее количество комнат в блоке
print("Важность 'total_bedrooms':", importance_classification[3]) # За общее количество спален в блоке
print("Важность 'population':", importance_classification[4]) # За общее количество проживающих в блоке
print("Важность 'households':", importance_classification[5]) # За общее количество домохозяйств в блоке
print("Важность 'median_income':", importance_classification[6]) # За медианный доход домохозяйств в блоке