for kurs work
This commit is contained in:
parent
017623e084
commit
213d03234c
@ -4,10 +4,101 @@ from sklearn.tree import DecisionTreeRegressor
|
|||||||
from sklearn.ensemble import RandomForestRegressor
|
from sklearn.ensemble import RandomForestRegressor
|
||||||
from sklearn.linear_model import LinearRegression
|
from sklearn.linear_model import LinearRegression
|
||||||
from sklearn.metrics import mean_squared_error
|
from sklearn.metrics import mean_squared_error
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from sklearn.ensemble import RandomForestClassifier
|
||||||
|
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
|
||||||
|
from sklearn.linear_model import LogisticRegression
|
||||||
|
from sklearn.tree import DecisionTreeClassifier
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import seaborn as sns
|
||||||
|
|
||||||
# Загрузка данных из csv-файла
|
# Загрузите данные
|
||||||
data = pd.read_csv('us_tornado_dataset_1950_2021.csv')
|
data = pd.read_csv('us_tornado_dataset_1950_2021.csv')
|
||||||
|
|
||||||
|
# Преобразуйте магнитуду в бинарный признак (сильные и не сильные торнадо)
|
||||||
|
data['mag_class'] = data['mag'].apply(lambda x: 1 if x >= 3 else 0)
|
||||||
|
|
||||||
|
# Выделите признаки для обучения
|
||||||
|
features = data[['yr', 'mag', 'fat']]
|
||||||
|
|
||||||
|
# Выделите целевую переменную
|
||||||
|
target = data['mag_class']
|
||||||
|
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)
|
||||||
|
|
||||||
|
# Инициализируйте и обучите классификатор (в данном случае, Random Forest)
|
||||||
|
clf = RandomForestClassifier(random_state=42)
|
||||||
|
clf.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# Сделайте предсказания на тестовом наборе
|
||||||
|
predictions = clf.predict(X_test)
|
||||||
|
|
||||||
|
# Оцените результаты классификации
|
||||||
|
accuracy = accuracy_score(y_test, predictions)
|
||||||
|
conf_matrix = confusion_matrix(y_test, predictions)
|
||||||
|
|
||||||
|
print("Rendom tree:")
|
||||||
|
print("Accuracy:", accuracy)
|
||||||
|
print("\nConfusion Matrix:\n", conf_matrix)
|
||||||
|
print("\nClassification Report:\n", classification_report(y_test, predictions))
|
||||||
|
|
||||||
|
# Визуализация матрицы ошибок
|
||||||
|
plt.figure(figsize=(8, 6))
|
||||||
|
sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues', xticklabels=['Not Strong', 'Strong'], yticklabels=['Not Strong', 'Strong'])
|
||||||
|
plt.title('Confusion Matrix')
|
||||||
|
plt.xlabel('Predicted')
|
||||||
|
plt.ylabel('Actual')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
# Инициализируйте и обучите дерево решений
|
||||||
|
dt_clf = DecisionTreeClassifier(random_state=42)
|
||||||
|
dt_clf.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# Сделайте предсказания на тестовом наборе с деревом решений
|
||||||
|
dt_predictions = dt_clf.predict(X_test)
|
||||||
|
|
||||||
|
# Оцените результаты классификации для дерева решений
|
||||||
|
dt_accuracy = accuracy_score(y_test, dt_predictions)
|
||||||
|
dt_conf_matrix = confusion_matrix(y_test, dt_predictions)
|
||||||
|
|
||||||
|
print("Decision Tree Classifier:")
|
||||||
|
print("Accuracy:", dt_accuracy)
|
||||||
|
print("\nConfusion Matrix:\n", dt_conf_matrix)
|
||||||
|
print("\nClassification Report:\n", classification_report(y_test, dt_predictions))
|
||||||
|
|
||||||
|
# Визуализация матрицы ошибок для дерева решений
|
||||||
|
plt.figure(figsize=(8, 6))
|
||||||
|
sns.heatmap(dt_conf_matrix, annot=True, fmt='d', cmap='Blues', xticklabels=['Not Strong', 'Strong'], yticklabels=['Not Strong', 'Strong'])
|
||||||
|
plt.title('Decision Tree Confusion Matrix')
|
||||||
|
plt.xlabel('Predicted')
|
||||||
|
plt.ylabel('Actual')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
# Инициализируйте и обучите линейную регрессию
|
||||||
|
lr_clf = LogisticRegression(random_state=42)
|
||||||
|
lr_clf.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# Сделайте предсказания на тестовом наборе с линейной регрессией
|
||||||
|
lr_predictions = lr_clf.predict(X_test)
|
||||||
|
|
||||||
|
# Оцените результаты классификации для линейной регрессии
|
||||||
|
lr_accuracy = accuracy_score(y_test, lr_predictions)
|
||||||
|
lr_conf_matrix = confusion_matrix(y_test, lr_predictions)
|
||||||
|
|
||||||
|
print("\nLinear Regression Classifier:")
|
||||||
|
print("Accuracy:", lr_accuracy)
|
||||||
|
print("\nConfusion Matrix:\n", lr_conf_matrix)
|
||||||
|
print("\nClassification Report:\n", classification_report(y_test, lr_predictions))
|
||||||
|
|
||||||
|
# Визуализация матрицы ошибок для линейной регрессии
|
||||||
|
plt.figure(figsize=(8, 6))
|
||||||
|
sns.heatmap(lr_conf_matrix, annot=True, fmt='d', cmap='Blues', xticklabels=['Not Strong', 'Strong'], yticklabels=['Not Strong', 'Strong'])
|
||||||
|
plt.title('Linear Regression Confusion Matrix')
|
||||||
|
plt.xlabel('Predicted')
|
||||||
|
plt.ylabel('Actual')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
# Разделение данных на признаки (X) и целевую переменную (y)
|
# Разделение данных на признаки (X) и целевую переменную (y)
|
||||||
X = data[['yr', 'mag', 'fat']]
|
X = data[['yr', 'mag', 'fat']]
|
||||||
|
|
||||||
@ -47,11 +138,48 @@ coef_df = pd.DataFrame({'Признак': X.columns, 'Коэффициент': c
|
|||||||
coef_df['Абсолютный_Коэффициент'] = coef_df['Коэффициент'].abs()
|
coef_df['Абсолютный_Коэффициент'] = coef_df['Коэффициент'].abs()
|
||||||
coef_df = coef_df.sort_values(by='Абсолютный_Коэффициент', ascending=False)
|
coef_df = coef_df.sort_values(by='Абсолютный_Коэффициент', ascending=False)
|
||||||
|
|
||||||
|
# Решение с помощью случайного леса (Random Forest)
|
||||||
|
rf_model = RandomForestRegressor(random_state=42)
|
||||||
|
rf_model.fit(X_train, y_train)
|
||||||
|
test_score3 = rf_model.score(X_test, y_test)
|
||||||
|
# Получение важности признаков для случайного леса
|
||||||
|
rf_feature_importances = rf_model.feature_importances_
|
||||||
|
|
||||||
|
# Предсказание значений на тестовой выборке
|
||||||
|
y_pred_rf = rf_model.predict(X_test)
|
||||||
|
|
||||||
|
# Оценка производительности модели
|
||||||
|
rf_mse = mean_squared_error(y_test, y_pred_rf)
|
||||||
|
|
||||||
print("Дерево решений")
|
print("Дерево решений")
|
||||||
print("score", test_score)
|
print("score", test_score)
|
||||||
print("feature_importances", feature_importances)
|
print("feature_importances", feature_importances)
|
||||||
print("Mean Squared Error: {:.2f}".format(mse) + "\n")
|
print("Mean Squared Error: {:.2f}".format(mse) + "\n")
|
||||||
|
plt.figure(figsize=(10, 6))
|
||||||
|
plt.bar(X.columns, feature_importances)
|
||||||
|
plt.title('Decision Tree Feature Importances')
|
||||||
|
plt.xlabel('Features')
|
||||||
|
plt.ylabel('Importance')
|
||||||
|
plt.show()
|
||||||
print("Линейная регрессия")
|
print("Линейная регрессия")
|
||||||
print("score", test_score2)
|
print("score", test_score2)
|
||||||
print(coef_df)
|
print(coef_df)
|
||||||
print("Mean Squared Error: {:.2f}".format(mse2))
|
print("Mean Squared Error: {:.2f}".format(mse2))
|
||||||
|
plt.figure(figsize=(10, 6))
|
||||||
|
plt.bar(coef_df['Признак'], coef_df['Абсолютный_Коэффициент'])
|
||||||
|
plt.title('Linear regression Feature Importances')
|
||||||
|
plt.xlabel('Features')
|
||||||
|
plt.ylabel('Importance')
|
||||||
|
plt.show()
|
||||||
|
print("Случайный лес")
|
||||||
|
print("score", test_score)
|
||||||
|
print("feature_importances", rf_feature_importances)
|
||||||
|
print("Mean Squared Error: {:.2f}".format(rf_mse) + "\n")
|
||||||
|
# Визуализация важности признаков для случайного леса
|
||||||
|
plt.figure(figsize=(10, 6))
|
||||||
|
plt.bar(X.columns, rf_feature_importances)
|
||||||
|
plt.title('Random Forest Feature Importances')
|
||||||
|
plt.xlabel('Features')
|
||||||
|
plt.ylabel('Importance')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user