اذهب إلى المحتوى
  • 0

هو الparameters (normalize) مش موجود في الmodel LinearRegression ؟

Ail Ahmed

السؤال

Recommended Posts

  • 0

وعليكم السلام! 

In the scikit-learn library, the normalize parameter is not available in the LinearRegression model. The LinearRegression model is used to fit a linear model with coefficients w = (w1, ..., wp) to minimize the sum of squared residuals between observed targets in the dataset and the predicted targets from the linear approximation

If you need to apply normalization to your data before using the LinearRegression model, you can use the normalize function from scikit-learn to normalize the data. This function helps standardize the data and avoids issues related to varying scales.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

بالضبط، ففي مكتبة scikit-learn، باراميتر normalize لم يعد موجودًا في الإصدار 0.24.0 وما بعده من النموذج LinearRegression.

في الإصدارات الأحدث من المكتبة، عليك استخدام StandardScaler أو Normalizer من مكتبة sklearn.preprocessing لتطبيع البيانات قبل تمريرها إلى النموذج.

للتوضيح:

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
import numpy as np

X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([1, 2, 3, 4])

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

model = LinearRegression()
model.fit(X_scaled, y)

predictions = model.predict(X_scaled)
print(predictions)

لاحظ تطبيع البيانات باستخدام StandardScaler قبل استخدامها في تدريب النموذج LinearRegression، وذلك يحقق نفس النتيجة التي كان يحققها استخدام الباراميتر normalize=True في الإصدارات الأقدم.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 3 ساعة قال Mustafa Suleiman:

بالضبط، ففي مكتبة scikit-learn، باراميتر normalize لم يعد موجودًا في الإصدار 0.24.0 وما بعده من النموذج LinearRegression.

في الإصدارات الأحدث من المكتبة، عليك استخدام StandardScaler أو Normalizer من مكتبة sklearn.preprocessing لتطبيع البيانات قبل تمريرها إلى النموذج.

للتوضيح:

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
import numpy as np

X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([1, 2, 3, 4])

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

model = LinearRegression()
model.fit(X_scaled, y)

predictions = model.predict(X_scaled)
print(predictions)

لاحظ تطبيع البيانات باستخدام StandardScaler قبل استخدامها في تدريب النموذج LinearRegression، وذلك يحقق نفس النتيجة التي كان يحققها استخدام الباراميتر normalize=True في الإصدارات الأقدم.

انا اول ما عملت كده يا أ.مصطفي فا حسابات الMSE فا كان ده النتجيه 87.53644204505163

مع العلم قبل ما اعمل كده فا كانت النتجيه 0.12410403813221675 

فا اي السبيب ؟

وده الكود قبل

import pandas as pd 
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

data = pd.read_csv("heart_disease.csv")

feutures = data.drop(['target'] , axis=1 , inplace=False)

outpnt = data['target']

x_traing , x_test , y_traing , y_test = train_test_split(feutures , outpnt , test_size=0.25, random_state=44 , shuffle=True)

linearregression = LinearRegression(fit_intercept=True , copy_X=True , n_jobs=-1)

fit = linearregression.fit(x_traing , y_traing)

y_prodict = fit.predict(x_test)



msevalue = mean_squared_error(y_test , y_prodict , multioutput="uniform_average")
print(f"MSEvalue: {msevalue}")

وده الكود بعد

import pandas as pd 
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

data = pd.read_csv("heart_disease.csv")

feutures = data.drop(['target'] , axis=1 , inplace=False)

outpnt = data['target']

x_traing , x_test , y_traing , y_test = train_test_split(feutures , outpnt , test_size=0.25, random_state=44 , shuffle=True)
scaler = StandardScaler()
x_scaler_traing = scaler.fit_transform(x_traing)
linearregression = LinearRegression(fit_intercept=True , copy_X=True , n_jobs=-1)

fit = linearregression.fit(x_scaler_traing , y_traing)

y_prodict = fit.predict(x_test)



msevalue = mean_squared_error(y_test , y_prodict , multioutput="uniform_average")
print(f"MSEvalue: {msevalue}")

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 47 دقائق مضت قال Ail Ahmed:

انا اول ما عملت كده يا أ.مصطفي فا حسابات الMSE فا كان ده النتجيه 87.53644204505163

مع العلم قبل ما اعمل كده فا كانت النتجيه 0.12410403813221675 

فا اي السبيب ؟

 



في الكود الثاني، قمت بتطبيق التحجيم القياسي (StandardScaler)فقط على بيانات التدريب (x_traing) ولكن لم تقم بتطبيق نفس التحجيم على بيانات الاختبار (x_test). هذا يؤدي إلى عدم توافق في توزيع البيانات بين التدريب والاختبار، مما يسبب زيادة كبيرة في الخطأ.

يجب عليك أيضًا تطبيق التحجيم على بيانات الاختبار باستخدام نفس التحجيم الذي استخدمته لبيانات التدريب:

import pandas as pd 
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

data = pd.read_csv("heart_disease.csv")

feutures = data.drop(['target'], axis=1, inplace=False)
outpnt = data['target']

x_traing, x_test, y_traing, y_test = train_test_split(feutures, outpnt, test_size=0.25, random_state=44, shuffle=True)

scaler = StandardScaler()
x_scaler_traing = scaler.fit_transform(x_traing)
x_scaler_test = scaler.transform(x_test)  # تطبيق نفس التحجيم على بيانات الاختبار

linearregression = LinearRegression(fit_intercept=True, copy_X=True, n_jobs=-1)

fit = linearregression.fit(x_scaler_traing, y_traing)

y_prodict = fit.predict(x_scaler_test)  

msevalue = mean_squared_error(y_test, y_prodict, multioutput="uniform_average")
print(f"MSEvalue: {msevalue}")


وتأكد من أن البيانات في ملف heart_disease.csv لا تحتوي على قيم شاذة أو غير منطقية يمكن أن تؤثر على النتائج بعد التحجيم.

بتطبيق التعديلات السابقة، يجب أن تحصل على نتائج أكثر منطقية لقيمة MSE.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 دقائق مضت قال Ali Ibrahim12:



في الكود الثاني، قمت بتطبيق التحجيم القياسي (StandardScaler)فقط على بيانات التدريب (x_traing) ولكن لم تقم بتطبيق نفس التحجيم على بيانات الاختبار (x_test). هذا يؤدي إلى عدم توافق في توزيع البيانات بين التدريب والاختبار، مما يسبب زيادة كبيرة في الخطأ.

يجب عليك أيضًا تطبيق التحجيم على بيانات الاختبار باستخدام نفس التحجيم الذي استخدمته لبيانات التدريب:

import pandas as pd 
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

data = pd.read_csv("heart_disease.csv")

feutures = data.drop(['target'], axis=1, inplace=False)
outpnt = data['target']

x_traing, x_test, y_traing, y_test = train_test_split(feutures, outpnt, test_size=0.25, random_state=44, shuffle=True)

scaler = StandardScaler()
x_scaler_traing = scaler.fit_transform(x_traing)
x_scaler_test = scaler.transform(x_test)  # تطبيق نفس التحجيم على بيانات الاختبار

linearregression = LinearRegression(fit_intercept=True, copy_X=True, n_jobs=-1)

fit = linearregression.fit(x_scaler_traing, y_traing)

y_prodict = fit.predict(x_scaler_test)  

msevalue = mean_squared_error(y_test, y_prodict, multioutput="uniform_average")
print(f"MSEvalue: {msevalue}")


وتأكد من أن البيانات في ملف heart_disease.csv لا تحتوي على قيم شاذة أو غير منطقية يمكن أن تؤثر على النتائج بعد التحجيم.

بتطبيق التعديلات السابقة، يجب أن تحصل على نتائج أكثر منطقية لقيمة MSE.

شكراا جدا لحضرتك

تمام 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...