<jupyter_start><jupyter_text>Importamos las librerias necesarias.Necesitaremos sklearn que es una librería de machine learning que cuenta con algoritmos como regresión, clasificación, maquinas de soporte vectoreal, entre otras.<jupyter_code>import pandas as pd
import numpy as np
import os
import sklearn.metrics as metrics
from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn import svm
import matplotlib.pyplot as plt<jupyter_output><empty_output><jupyter_text>Importamos el dataset y con la ayuda de os.chdir especificamos nuetro directorio de trabajo<jupyter_code>#os.chdir("/home/nacho/Documents/ares_materials")
df1 = pd.read_csv('dataset1.csv', index_col=0)<jupyter_output><empty_output><jupyter_text>Dividimos nuestros datos en "x" y "y" excluyendo la columna out<jupyter_code>X = df1.loc[:, df1.columns != 'out']
y = df1.loc[:, df1.columns == 'out'].values.ravel()<jupyter_output><empty_output><jupyter_text>Dividimos el dataset en datos de enrtenamiento y datos que nos servirán para el testing (en este caso el 33% de los datos).<jupyter_code>X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1)<jupyter_output><empty_output><jupyter_text>Realizamos el entrenamiento utilizando varios modelos de regresión diferentes<jupyter_code>classifiers = [
    svm.SVR(),
    linear_model.Ridge(),
    linear_model.SGDRegressor(),
    linear_model.BayesianRidge(),
    linear_model.LassoLars(),
    linear_model.ARDRegression(),
    linear_model.PassiveAggressiveRegressor(),
    linear_model.TheilSenRegressor(),
    linear_model.LinearRegression()]<jupyter_output><empty_output><jupyter_text>Definimos las llaves del diccionario y lo creamos junto con una lista vacia<jupyter_code>dict_list = ['name', 'y_pred', 'mae', 'model']
class_dict = {}
class_list = []<jupyter_output><empty_output><jupyter_text>Iteramos todos los modelos y almacenamos el atributo name y cada modelo calcula los modelos más óptimos para los pesos utilizando los valores de entrada y salida de los datos de entrenamiento. Utilizamos mean absolute error (MAE) para encontrar cual de todos los modelos nos da el error mas pequeño.<jupyter_code>for i, classifier in enumerate(classifiers):
    class_dict = {}
    class_dict[dict_list[0]] = (classifiers[i].__class__.__name__)
    clf = classifier
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    class_dict[dict_list[1]] = y_pred
    mae = metrics.mean_absolute_error(y_test, y_pred)
    class_dict[dict_list[2]] = mae
    class_dict[dict_list[3]] = clf
    class_list.append(class_dict)<jupyter_output><empty_output><jupyter_text>Analizamos los datos 'mae' del diccionario y encontramos el más pequeño, en este caso fue.<jupyter_code>minl = []
for dicts in class_list:
    #print(dicts['name'])
    minl.append(dicts['mae'])

min_mae = min(minl)

def return_best_mae(class_list, min_mae):
    for dicts in class_list:
        if dicts['mae'] == min_mae:
            return dicts

best_mae = return_best_mae(class_list, min_mae)<jupyter_output><empty_output><jupyter_text>Graficamos los resultados<jupyter_code>x = list(range(len(y_test)))
plt.scatter(x, y_test, color="blue", label="original")
plt.plot(x, best_mae['y_pred'], color="red", label="predicted")
plt.legend()
plt.show()<jupyter_output><empty_output><jupyter_text>Mostramos los parámetros utilizados para llegar a esa precisión (modelo entrenado)<jupyter_code>best_mae['model'].get_params(deep=True)
X_test.iloc[0,:]
print(best_mae['model'].predict(X_test.iloc[0,:].values.reshape(1,-1)))
print(y_test[0])<jupyter_output>[1.5448769]
1.5415
{'fraction_non_alphanumeric': 0.10783232211803641, 'fraction_numerical': 0.009652509652509652, 'mean_word_length': 6.572025052192067, 'pattern_counts': {'":': 0, '<': 40, '<?xml version=': 0, '>': 40, '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': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '245591', 'license': 'ICU', 'n_tokens_mistral': 1349, 'n_tokens_neox': 1321, 'n_words': 288, 'path': 'notebooks/.ipynb_checkpoints/test_datascience-checkpoint-checkpoint.ipynb', 'repo_name': 'nachovazquez98/COVID-19_Paper', 'size': '3626'}