import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split # Este modelo nos ayudara a hacer la división entre el modelo de training y de test
df = pd.read_csv('/work/cancerdata.csv')
df.head()
idint64
diagnosisobject
0
842302
M
1
842517
M
2
84300903
M
3
84348301
M
4
84358402
M
X = df.iloc[:,2:] # Variables numéricas. En este modelo representan las variables independientes que explicaran la variable categórica.
Y = df.iloc[:,1] # Variable Categórica. La que queremos predecir. La que nos indicara si el cancer es benigno o maligno.
X.head()
radius_meanfloat64
texture_meanfloat64
0
17.99
10.38
1
20.57
17.77
2
19.69
21.25
3
11.42
20.38
4
20.29
14.34
Y.value_counts()
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = 4)
modelo = DecisionTreeClassifier()
modelo.fit(X_train, Y_train)
resultado = modelo.score(X_test, Y_test)
print(resultado) # con esto vamos a ver cual es la precisión de nuestro modelo en porcentaje.
0.9122807017543859
# Validación cruzada k fold
from sklearn.model_selection import KFold
modelo = DecisionTreeClassifier()
kfold_validacion = KFold(10) # Acá indicamos cuantos fold queremos. En nuestro caso elegimos 10.and
from sklearn.model_selection import cross_val_score
resultados = cross_val_score(modelo, X, Y, cv = kfold_validacion)
print(resultados)
resultados.mean() # para ver el promedio de los resultados
[0.89473684 0.9122807 0.89473684 0.94736842 0.96491228 0.98245614
0.89473684 0.94736842 0.94736842 0.91071429]