freeCodeCamp/guide/spanish/machine-learning/linear-regression/index.md

2.8 KiB

title localeTitle
Linear Regression Regresión lineal

Regresión lineal

La regresión lineal nos ayuda a predecir la puntuación de una variable X a partir de las puntuaciones de otras variables Y. Cuando se grafican las variables Y, la regresión lineal encuentra la línea recta que mejor se adapta a los puntos. La línea de mejor ajuste se llama línea de regresión.

Simulador de regresión lineal en línea

En Python:

#Price of wheat/kg and the average price of bread 
 wheat_and_bread = [[0.5,5],[0.6,5.5],[0.8,6],[1.1,6.8],[1.4,7]] 
 
 def step_gradient(b_current, m_current, points, learningRate): 
    b_gradient = 0 
    m_gradient = 0 
    N = float(len(points)) 
    for i in range(0, len(points)): 
        x = points[i][0] 
        y = points[i][1] 
        b_gradient += -(2/N) * (y - ((m_current * x) + b_current)) 
        m_gradient += -(2/N) * x * (y - ((m_current * x) + b_current)) 
    new_b = b_current - (learningRate * b_gradient) 
    new_m = m_current - (learningRate * m_gradient) 
    return [new_b, new_m] 
 
 def gradient_descent_runner(points, starting_b, starting_m, learning_rate, num_iterations): 
    b = starting_b 
    m = starting_m 
    for i in range(num_iterations): 
        b, m = step_gradient(b, m, points, learning_rate) 
    return [b, m] 
 
 gradient_descent_runner(wheat_and_bread, 1, 1, 0.01, 100) 

Código de ejemplo es de este artículo . También explica el descenso de gradiente y otros conceptos esenciales para el aprendizaje profundo.

Es importante tener en cuenta que no toda la regresión lineal se realiza con pendiente de gradiente. La ecuación normal también se puede usar para encontrar los coeficientes de regresión lineal, sin embargo, esto utiliza la multiplicación de matrices y, por lo tanto, puede consumir mucho tiempo para usar por más de 100,000 o 1,000,000 de instancias.

En Python: Aplique directamente usando la biblioteca de scikit, haciendo que la regresión lineal sea fácil de usar incluso en conjuntos de datos grandes.

import pandas as pd 
 from sklearn.cross_validation import train_test_split 
 from sklearn.linear_model import LinearRegression as lr 
 train = pd.read_csv('../input/train.csv') 
 test = pd.read_csv('../input/test.csv') 
 X = train.iloc[:, 0:4].values 
 y = train.iloc[:, 4].values 
 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0) 
 X_train 
 model = lr() 
 model.fit(X_train, y_train) 
 print(model.score(X_train,y_train)) 
 y_pred_class = model.predict(X_test) 
 model.score(X_train,y_train) 
 print(model.coef_) 
 print(model.intercept_) 
 # calculate accuracy 
 from sklearn import metrics 
 print(metrics.accuracy_score(y_test, y_pred_class))