32 lines
1.4 KiB
Python
32 lines
1.4 KiB
Python
|
import pandas as pd
|
||
|
from sklearn.model_selection import train_test_split
|
||
|
from sklearn.tree import DecisionTreeClassifier
|
||
|
from sklearn.metrics import accuracy_score
|
||
|
|
||
|
# Загрузка данных
|
||
|
data = pd.read_csv("smoking_driking_dataset.csv")
|
||
|
# Предварительная обработка данных
|
||
|
data = pd.get_dummies(data, columns=['sex', 'DRK_YN'], drop_first=True)
|
||
|
|
||
|
# Разделение данных на признаки (X) и целевую переменную (y)
|
||
|
X = data.drop(columns=['SMK_stat_type_cd'])
|
||
|
y = data['SMK_stat_type_cd']
|
||
|
|
||
|
# Разделение данных на обучающий и тестовый наборы
|
||
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=42)
|
||
|
|
||
|
# Создание и обучение модели
|
||
|
model = DecisionTreeClassifier(random_state=42)
|
||
|
model.fit(X_train, y_train)
|
||
|
|
||
|
# Предсказание на тестовом наборе
|
||
|
y_pred = model.predict(X_test)
|
||
|
|
||
|
# Оценка модели
|
||
|
accuracy = accuracy_score(y_test, y_pred)
|
||
|
print(f"Точность: {accuracy}")
|
||
|
|
||
|
# Важность признаков
|
||
|
feature_importance = pd.DataFrame({'Признак': X.columns, 'Важность': model.feature_importances_})
|
||
|
feature_importance = feature_importance.sort_values(by='Важность', ascending=False)
|
||
|
print("Важность признаков:\n", feature_importance)
|