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)) 
 | |
| ` |