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