جارٍ تحميل الدرس...
في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
معمل تعلم الآلة، الأسبوع الأول
k-NN)من خوارزمية k-NN وتقييم النماذج إلى الانحدار وآلات المتجهات الداعمة وأشجار القرار
أساسيات تعلم الآلة
تصنيف k-NN
هذا المعمل
تقييم النماذج واختيارها
آلات المتجهات الداعمة
أشجار القرار
بايز الساذج
الشبكات العصبية
k-NN)k-NNX_train/y_train ومثيل جديد x_test، تنفذ ثلاث خطوات:x_test داخل X_train (تسمى X_NN)y_NNx_test بدمج y_NN، مثل التصويت بالأغلبية البسيطةk) الذين ينظر إليهمk صغير (مثل k=1) ← تحيز منخفض، تباين عال ← إفراط في التلاؤمk كبير ← تحيز أعلى، تباين أقل ← قصور في التلاؤمCross-Validation)الطية 1
الطية 2
الطية 3
الطية 4
...
الطية k
k-Fold Cross-Validationscikit-learn.KNNfrom sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier, KNeighborsRegressor
X_train, X_test, y_train, y_test = train_test_split(X_C2, y_C2, random_state=0)
# k=1 يفرط في التلاؤم (حدود متعرجة جدا)؛ k الأكبر يعمم بشكل أفضل
clf = KNeighborsClassifier(n_neighbors=11).fit(X_train, y_train)
knnreg = KNeighborsRegressor(n_neighbors=5).fit(X_train, y_train)
print('R-squared test score: {:.3f}'.format(knnreg.score(X_test, y_test)))model.score(X, y) للانحدار ترجع R² (معامل التحديد): 0 = يتنبأ بالمتوسط، 1 = تنبؤ مثاليk-NN لكل من التصنيف والانحدارLeast-Squares)from sklearn.linear_model import LinearRegression
linreg = LinearRegression().fit(X_train, y_train)
print('coeff (w): {}'.format(linreg.coef_))
print('intercept (b): {:.3f}'.format(linreg.intercept_))
print('R-squared (train): {:.3f}'.format(linreg.score(X_train, y_train)))
print('R-squared (test): {:.3f}'.format(linreg.score(X_test, y_test)))Ridge وLasso والانحدار متعدد الحدودfrom sklearn.linear_model import Ridge, Lasso
from sklearn.preprocessing import MinMaxScaler, PolynomialFeatures
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)
linridge = Ridge(alpha=20.0).fit(X_train_scaled, y_train) # عقوبة L2
linlasso = Lasso(alpha=2.0, max_iter=10000).fit(X_train_scaled, y_train) # عقوبة L1، تدفع المعاملات نحو الصفر
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X_F1) # يضيف تفاعلات سمات تربيعيةRidge (L2)Lasso (L1)MinMaxScaler) قبل الانحدار المنظم يحسن النتائجRidgeLogistic Regression)from sklearn.linear_model import LogisticRegression
clf = LogisticRegression(C=100).fit(X_train, y_train)
print('Accuracy on training set: {:.2f}'.format(clf.score(X_train, y_train)))
print('Accuracy on test set: {:.2f}'.format(clf.score(X_test, y_test)))C يتحكم في قوة التنظيم (Regularization)، جرب قيما متعددة لـ C لإيجاد أفضل تلاؤمLinear SVM)from sklearn.svm import SVC, LinearSVC
clf = SVC(kernel='linear', C=1.0).fit(X_train, y_train)
clf2 = LinearSVC(C=100).fit(X_train, y_train)SVM) تجد حدود القرار التي تفصل الفئات بأفضل شكلC يتحكم في التسامح مع النقاط المصنفة خطأ؛ C صغير يعطي هامشا أوسع (أكثر تسامحا)، C كبير يلائم بيانات التدريب بإحكام أكبرKernelized SVM)from sklearn.svm import SVC
clf = SVC(kernel='rbf', gamma=1.0, C=15).fit(X_train, y_train) # النواة الافتراضية هي RBF
clf_poly = SVC(kernel='poly', degree=3).fit(X_train, y_train)gamma يتحكم في مدى تعقيد/إحكام حدود القرار؛ اجمعه مع C لضبط التلاؤمMinMaxScaler) قبل التدريب يحسن بشكل كبير دقة الاختبار على بيانات واقعية غير مطبعةfrom sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier().fit(X_train, y_train) # تميل للإفراط في التلاؤم (دقة التدريب = 1.00)
clf2 = DecisionTreeClassifier(max_depth=3).fit(X_train, y_train) # تحديد العمق لتقليل الإفراط في التلاؤم
print('Feature importances: {}'.format(clf.feature_importances_))100% دقة تدريب) لكنها تعمم بشكل أسوأmax_depth يضحي بقليل من دقة التدريب مقابل تعميم أفضلfeature_importances_ تظهر أي سمات المدخلات كانت الأكثر تأثيرا في قرارات الشجرةk-NN تصنف/تتنبأ بدمج تصنيفات أقرب k مثيل تدريب؛ k الصغير يفرط في التلاؤم، k الكبير ينقص في التلاؤمRidge (L2) وLasso (L1) يضيفان تنظيما، مع قدرة Lasso على تصفير السمات بالكاملSVM الخطي، وSVM النووي (RBF/متعدد الحدود) هي المصنفات القياسية، وتضبط جميعها عبر C (وgamma لـ RBF)MinMaxScaler) يحسن بشكل ملموس أداء الانحدار المنظم وSVMfeature_importances_ تكشف أي السمات الأكثر أهمية للتنبؤاتMahmoud Abas|معمل تعلّم الآلة - الأسبوع 1 (خوارزمية KNN)