<jupyter_start><jupyter_text>1. Definición del problema- Las enfermedades cardiovasculares (ECV) son la principal causa de muerte a nivel mundial, cobrando un estimado de 17,9 millones de vidas cada año, lo que representa el 31% de todas las muertes en todo el mundo.  La insuficiencia cardíaca es un evento común causado por las enfermedades cardiovasculares y este conjunto de datos contiene 12 características que pueden usarse para predecir la mortalidad por insuficiencia cardíaca.  La mayoría de las enfermedades cardiovasculares se pueden prevenir abordando los factores de riesgo conductuales como el consumo de tabaco, la dieta poco saludable y la obesidad, la inactividad física y el consumo nocivo de alcohol mediante estrategias que abarquen a toda la población.  Las personas con enfermedad cardiovascular o que se encuentran en alto riesgo cardiovascular (debido a la presencia de uno o más factores de riesgo como hipertensión, diabetes, hiperlipidemia o enfermedad ya establecida) necesitan una detección y manejo precoces donde un modelo de aprendizaje automático puede ser de gran ayuda.- El principal objetivo de este estudio es predecir la mortalidad causada por la insuficiencia cardiaca  2. Cargar lo datos* para predecir la mortalidad por insuficiencia cardiaca utilizaremos el dataset proveido por <NAME>, <NAME>: Machine learning can predict survival of patients with heart failure from serum creatinine and ejection fraction alone. BMC Medical Informatics and Decision Making 20, 16 (2020).* Glosario de columnas:  - age: edad del paciente (años)  - anaemia: disminución de glóbulos rojos o hemoglobina (booleano)  - high blood pressure: si el paciente tiene hipertensión (booleano)  - creatinine phosphokinase (CPK): nivel de la enzima CPK en la sangre (mcg/L)  - diabetes: si el paciente tiene diabetes (boolean)  - ejection fraction: porcentaje de sangre que sale del corazón en cada contracción (porcentaje)  - platelets: plaquetas en la sangre (kiloplaquetas/mL)  - sex: mujer o hombre (binario)  - serum creatinine: nivel de creatinina sérica en sangre (mg/dL)  - serum sodium: nivel de sodio serico en la sangre (mEq/L)  - smoking: si el paciente fuma o no (booleano)  - time: periodo de seguimiento (dias)  - [target] death event: si el paciente falleció durante el período de seguimiento (booleano) - 2.1 importar librerias necesarias- 2.2 cargar el dataset<jupyter_code># 2.1 importar librerias
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
# 2.2 cargar el dataset
heart_f = pd.read_csv('heart_failure_clinical_records_dataset.csv')
heart_f.head(5)<jupyter_output><empty_output><jupyter_text>3. Resumir el dataset* 3.1 Dimensiones del conjunto de datos* 3.2 Vistaso de los datos en si* 3.3 Resumen estadistico de todas las columnas* 3.4 Desgloce de datos por columnas<jupyter_code># 3.1 Dimensiones del conjunto de datos
heart_f.shape
# 3.1.1 Mostrar información de las columnas
heart_f.info()
# 3.2 Vistaso de los datos en si
pd.DataFrame(heart_f.head(5)).append(pd.DataFrame(heart_f.tail(5)))
# 3.3 Resumen estadistico de todas las columnas
heart_f.describe()
# 3.4 Desgloce de datos por columnas
heart_f.groupby('DEATH_EVENT').size()<jupyter_output><empty_output><jupyter_text>4. Visualización de datos* 4.1 Graficos Univariable* 4.2 Graficos Multivariable<jupyter_code># 4.1 Graficos Univariable
# Grafico de caja y bigotes
heart_f.boxplot(rot=90, layout=(4,3), by='DEATH_EVENT', figsize=(10,10));
heart_f.hist(figsize=(10,10));
# 4.2 Graficos Multivariables
from pandas.plotting import scatter_matrix
scatter_matrix(heart_f, figsize=(10,10));<jupyter_output><empty_output><jupyter_text>5. Evaluar algunos algoritmos* 5.1 Dividir el dataset en variables dependientes e independientes* 5.2 Marco de pruebas (test harness)* 5.3 Construir modelos* 5.4 seleccionar el mejor modelo<jupyter_code># 5.1 Dividir el dataset en variables dependientes e independientes
X = heart_f.drop(columns=['DEATH_EVENT']).values
y = heart_f['DEATH_EVENT'].values
print(X.shape)

print(y.shape)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)
# 5.3 Construir modelos
# Algoritmos de verificación puntual
modelos = []
modelos.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))
modelos.append(('LDA', LinearDiscriminantAnalysis()))
# modelos.append(('KNN', KNeighborsRegressor()))
modelos.append(('DTR', DecisionTreeRegressor()))
modelos.append(('NB', GaussianNB()))
modelos.append(('SVM', SVC(gamma='auto')))

#Evaluar cada modelo por turnos
resultado = []
nombres = []
for nombre, modelo in modelos:
    kfold = StratifiedKFold(n_splits=10, random_state=42, shuffle=True)
    cv_resultado = cross_val_score(modelo, X_train, y_train, cv=kfold, scoring='accuracy')
    resultado.append(cv_resultado)
    nombres.append(nombre)
    print('%s: %f (%f)' % (nombres, cv_resultado.mean(), cv_resultado.std()))<jupyter_output>['LR']: 0.861957 (0.049366)
['LR', 'LDA']: 0.828261 (0.066319)
['LR', 'LDA', 'DTR']: 0.798913 (0.059347)
['LR', 'LDA', 'DTR', 'NB']: 0.803442 (0.061638)
['LR', 'LDA', 'DTR', 'NB', 'SVM']: 0.702899 (0.012655)
{'fraction_non_alphanumeric': 0.08866481223922114, 'fraction_numerical': 0.02851182197496523, 'mean_word_length': 5.922984356197353, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '35992', 'license': 'MIT', 'n_tokens_mistral': 2090, 'n_tokens_neox': 1945, 'n_words': 641, 'path': 'ML01/MyFirstMLproject.ipynb', 'repo_name': 'everbravo/MachineLearning', 'size': '5768'}