78 lines
5.1 KiB
Python
78 lines
5.1 KiB
Python
|
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]) # За медианный доход домохозяйств в блоке
|