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

67 lines
2.8 KiB
Markdown
Raw Normal View History

2018-10-12 19:37:13 +00:00
---
title: Linear Regression
localeTitle: 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](https://www.mladdict.com/linear-regression-simulator)
En Python:
```py
#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](http://blog.floydhub.com/coding-the-history-of-deep-learning/) . 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.
```py
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))
```