49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
|
import pandas as pd
|
|||
|
from sklearn.preprocessing import LabelEncoder
|
|||
|
from sklearn.tree import DecisionTreeClassifier
|
|||
|
|
|||
|
# Загрузка данных
|
|||
|
data = pd.read_csv('titanic.csv', index_col='PassengerId')
|
|||
|
|
|||
|
|
|||
|
# Функция для преобразования пола в числовое значение
|
|||
|
def Sex_to_bool(sex):
|
|||
|
if sex == "male":
|
|||
|
return 0
|
|||
|
return 1
|
|||
|
|
|||
|
|
|||
|
# Преобразование пола в числовое значение
|
|||
|
data['Sex'] = data['Sex'].apply(Sex_to_bool)
|
|||
|
|
|||
|
# Отбор строк с непустыми значениями
|
|||
|
# Отбор строк с непустыми значениями
|
|||
|
data = data.loc[~data['Name'].isna()
|
|||
|
& ~data['Age'].isna()
|
|||
|
& ~data['Sex'].isna()
|
|||
|
& ~data['Survived'].isna()]
|
|||
|
|
|||
|
|
|||
|
# Отбор нужных столбцов
|
|||
|
features = data[['Name', 'Sex', 'Age']]
|
|||
|
|
|||
|
# Применение Label Encoding к столбцу 'Name'
|
|||
|
label_encoder = LabelEncoder()
|
|||
|
features['Name'] = label_encoder.fit_transform(features['Name'])
|
|||
|
|
|||
|
# Определение целевой переменной
|
|||
|
y = data['Survived']
|
|||
|
|
|||
|
# Создание и обучение дерева решений
|
|||
|
clf = DecisionTreeClassifier(random_state=241)
|
|||
|
clf.fit(features, y)
|
|||
|
|
|||
|
# Получение важностей признаков
|
|||
|
importance = clf.feature_importances_
|
|||
|
|
|||
|
# Печать важности каждого признака
|
|||
|
print("Важность 'Name':", importance[0])
|
|||
|
print("Важность 'Sex':", importance[1])
|
|||
|
print("Важность 'Age':", importance[2])
|
|||
|
|