64 lines
3.1 KiB
Markdown
64 lines
3.1 KiB
Markdown
|
---
|
||
|
title: Linear Regression
|
||
|
localeTitle: الانحدارالخطي
|
||
|
---
|
||
|
## الانحدارالخطي
|
||
|
|
||
|
يساعدنا الانحدار الخطي في توقع درجة متغير X من الدرجات على المتغيرات الأخرى Y. عندما يتم رسم المتغيرات Y ، فإن الانحدار الخطي يجد الخط المستقيم الأفضل من خلال النقاط. يُسمى خط التركيب الأفضل خط الانحدار.
|
||
|
|
||
|
[الانترنت الانحدار الخطي محاكاة](https://www.mladdict.com/linear-regression-simulator)
|
||
|
|
||
|
في بايثون:
|
||
|
|
||
|
`#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)
|
||
|
`
|
||
|
|
||
|
المثال رمز من [هذه المقالة](http://blog.floydhub.com/coding-the-history-of-deep-learning/) . كما يشرح نزول التدرج والمفاهيم الأساسية الأخرى للتعلم العميق.
|
||
|
|
||
|
من المهم أن نلاحظ أن ليس كل الانحدار الخطي يتم مع نزول التدرج. يمكن أيضًا استخدام المعادلة العادية للعثور على معاملات الانحدار الخطي ، ومع ذلك ، فإن هذا يستخدم مضاعفة المصفوفة ، وبالتالي يمكن أن يستغرق وقتًا طويلاً للاستخدام لأكثر من 100000 أو 1000000 حالة.
|
||
|
|
||
|
في بايثون: تطبيق مباشرة باستخدام مكتبة scikit ، مما يجعل من السهل استخدام الانحدار الخطي حتى على مجموعات البيانات الكبيرة.
|
||
|
|
||
|
`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))
|
||
|
`
|