نحوه ساخت مدل های رگرسیون یادگیری ماشین با پایتون

این مقاله توسط نجیب الحسن، یکی از اعضای تیم محتوای فنی Educative.
مارول کامیکس یک شخصیت داستانی Destiny را در دهه 1980 معرفی کرد که توانایی پیش بینی اتفاقات آینده را داشت. خبر هیجان انگیز این است که پیش بینی رویدادهای آینده دیگر فقط یک خیال نیست! با پیشرفتی که در یادگیری ماشین ایجاد شده است، یک ماشین می تواند با استفاده از گذشته به پیش بینی رویدادهای آینده کمک کند.
هیجان انگیز، درست است؟ بیایید این سفر را با یک مدل پیش بینی ساده شروع کنیم.
رگرسیون یک تابع ریاضی است که رابطه بین یک متغیر وابسته و یک یا چند متغیر مستقل را تعریف می کند. به جای بررسی تئوری، تمرکز بر ایجاد مدل های رگرسیون مختلف خواهد بود.
درک داده های ورودی
قبل از شروع ساخت یک مدل رگرسیون، باید داده ها را بررسی کرد. به عنوان مثال، اگر فردی مالک یک مزرعه ماهی باشد و باید وزن ماهی را بر اساس ابعاد آن پیشبینی کند، میتواند مجموعه داده را با کلیک کردن روی دکمه «RUN» برای نمایش چند ردیف بالای DataFrame کاوش کند.Fish.txt
).
DataFrame (Fish.txt
):
Species Weight V-Length D-Length X-Length Height Width
Bream 290 24 26.3 31.2 12.48 4.3056
Bream 340 23.9 26.5 31.1 12.3778 4.6961
Bream 363 26.3 29 33.5 12.73 4.4555
Bream 430 26.5 29 34 12.444 5.134
Bream 450 26.8 29.7 34.7 13.6024 4.9274
Bream 500 26.8 29.7 34.5 14.1795 5.2785
Bream 390 27.6 30 35 12.67 4.69
Bream 450 27.6 30 35.1 14.0049 4.8438
Bream 500 28.5 30.7 36.2 14.2266 4.9594
Bream 475 28.4 31 36.2 14.2628 5.1042
Bream 500 28.7 31 36.2 14.3714 4.8146
Bream 500 29.1 31.5 36.4 13.7592 4.368
Bream 340 29.5 32 37.3 13.9129 5.0728
Bream 600 29.4 32 37.2 14.9544 5.1708
Bream 600 29.4 32 37.2 15.438 5.58
Bream 700 30.4 33 38.3 14.8604 5.2854
Bream 700 30.4 33 38.5 14.938 5.1975
Bream 610 30.9 33.5 38.6 15.633 5.1338
Bream 650 31 33.5 38.7 14.4738 5.7276
Bream 575 31.3 34 39.5 15.1285 5.5695
Bream 685 31.4 34 39.2 15.9936 5.3704
Bream 620 31.5 34.5 39.7 15.5227 5.2801
Bream 680 31.8 35 40.6 15.4686 6.1306
Bream 700 31.9 35 40.5 16.2405 5.589
Bream 725 31.8 35 40.9 16.36 6.0532
Bream 720 32 35 40.6 16.3618 6.09
Bream 714 32.7 36 41.5 16.517 5.8515
Bream 850 32.8 36 41.6 16.8896 6.1984
Bream 1000 33.5 37 42.6 18.957 6.603
Bream 920 35 38.5 44.1 18.0369 6.3063
Bream 955 35 38.5 44 18.084 6.292
Bream 925 36.2 39.5 45.3 18.7542 6.7497
Bream 975 37.4 41 45.9 18.6354 6.7473
Bream 950 38 41 46.5 17.6235 6.3705
Roach 40 12.9 14.1 16.2 4.1472 2.268
Roach 69 16.5 18.2 20.3 5.2983 2.8217
Roach 78 17.5 18.8 21.2 5.5756 2.9044
Roach 87 18.2 19.8 22.2 5.6166 3.1746
Roach 120 18.6 20 22.2 6.216 3.5742
Roach 0 19 20.5 22.8 6.4752 3.3516
Roach 110 19.1 20.8 23.1 6.1677 3.3957
Roach 120 19.4 21 23.7 6.1146 3.2943
Roach 150 20.4 22 24.7 5.8045 3.7544
Roach 145 20.5 22 24.3 6.6339 3.5478
Roach 160 20.5 22.5 25.3 7.0334 3.8203
Roach 140 21 22.5 25 6.55 3.325
Roach 160 21.1 22.5 25 6.4 3.8
Roach 169 22 24 27.2 7.5344 3.8352
Roach 161 22 23.4 26.7 6.9153 3.6312
Roach 200 22.1 23.5 26.8 7.3968 4.1272
Roach 180 23.6 25.2 27.9 7.0866 3.906
Roach 290 24 26 29.2 8.8768 4.4968
Roach 272 25 27 30.6 8.568 4.7736
Roach 390 29.5 31.7 35 9.485 5.355
Whitefish 270 23.6 26 28.7 8.3804 4.2476
Whitefish 270 24.1 26.5 29.3 8.1454 4.2485
Whitefish 306 25.6 28 30.8 8.778 4.6816
Whitefish 540 28.5 31 34 10.744 6.562
Whitefish 800 33.7 36.4 39.6 11.7612 6.5736
Whitefish 1000 37.3 40 43.5 12.354 6.525
Parkki 55 13.5 14.7 16.5 6.8475 2.3265
Parkki 60 14.3 15.5 17.4 6.5772 2.3142
Parkki 90 16.3 17.7 19.8 7.4052 2.673
Parkki 120 17.5 19 21.3 8.3922 2.9181
Parkki 150 18.4 20 22.4 8.8928 3.2928
Parkki 140 19 20.7 23.2 8.5376 3.2944
Parkki 170 19 20.7 23.2 9.396 3.4104
Parkki 145 19.8 21.5 24.1 9.7364 3.1571
Parkki 200 21.2 23 25.8 10.3458 3.6636
Parkki 273 23 25 28 11.088 4.144
Parkki 300 24 26 29 11.368 4.234
Perch 5.9 7.5 8.4 8.8 2.112 1.408
Perch 32 12.5 13.7 14.7 3.528 1.9992
Perch 40 13.8 15 16 3.824 2.432
Perch 51.5 15 16.2 17.2 4.5924 2.6316
Perch 70 15.7 17.4 18.5 4.588 2.9415
Perch 100 16.2 18 19.2 5.2224 3.3216
Perch 78 16.8 18.7 19.4 5.1992 3.1234
Perch 80 17.2 19 20.2 5.6358 3.0502
Perch 85 17.8 19.6 20.8 5.1376 3.0368
Perch 85 18.2 20 21 5.082 2.772
Perch 110 19 21 22.5 5.6925 3.555
Perch 115 19 21 22.5 5.9175 3.3075
Perch 125 19 21 22.5 5.6925 3.6675
Perch 130 19.3 21.3 22.8 6.384 3.534
Perch 120 20 22 23.5 6.11 3.4075
Perch 120 20 22 23.5 5.64 3.525
Perch 130 20 22 23.5 6.11 3.525
Perch 135 20 22 23.5 5.875 3.525
Perch 110 20 22 23.5 5.5225 3.995
Perch 130 20.5 22.5 24 5.856 3.624
Perch 150 20.5 22.5 24 6.792 3.624
Perch 145 20.7 22.7 24.2 5.9532 3.63
Perch 150 21 23 24.5 5.2185 3.626
Perch 170 21.5 23.5 25 6.275 3.725
Perch 225 22 24 25.5 7.293 3.723
Perch 145 22 24 25.5 6.375 3.825
Perch 188 22.6 24.6 26.2 6.7334 4.1658
Perch 180 23 25 26.5 6.4395 3.6835
Perch 197 23.5 25.6 27 6.561 4.239
Perch 218 25 26.5 28 7.168 4.144
Perch 300 25.2 27.3 28.7 8.323 5.1373
Perch 260 25.4 27.5 28.9 7.1672 4.335
Perch 265 25.4 27.5 28.9 7.0516 4.335
Perch 250 25.4 27.5 28.9 7.2828 4.5662
Perch 250 25.9 28 29.4 7.8204 4.2042
Perch 300 26.9 28.7 30.1 7.5852 4.6354
Perch 320 27.8 30 31.6 7.6156 4.7716
Perch 514 30.5 32.8 34 10.03 6.018
Perch 556 32 34.5 36.5 10.2565 6.3875
Perch 840 32.5 35 37.3 11.4884 7.7957
Perch 685 34 36.5 39 10.881 6.864
Perch 700 34 36 38.3 10.6091 6.7408
Perch 700 34.5 37 39.4 10.835 6.2646
Perch 690 34.6 37 39.3 10.5717 6.3666
Perch 900 36.5 39 41.4 11.1366 7.4934
Perch 650 36.5 39 41.4 11.1366 6.003
Perch 820 36.6 39 41.3 12.4313 7.3514
Perch 850 36.9 40 42.3 11.9286 7.1064
Perch 900 37 40 42.5 11.73 7.225
Perch 1015 37 40 42.4 12.3808 7.4624
Perch 820 37.1 40 42.5 11.135 6.63
Perch 1100 39 42 44.6 12.8002 6.8684
Perch 1000 39.8 43 45.2 11.9328 7.2772
Perch 1100 40.1 43 45.5 12.5125 7.4165
Perch 1000 40.2 43.5 46 12.604 8.142
Perch 1000 41.1 44 46.6 12.4888 7.5958
Pike 200 30 32.3 34.8 5.568 3.3756
Pike 300 31.7 34 37.8 5.7078 4.158
Pike 300 32.7 35 38.8 5.9364 4.3844
Pike 300 34.8 37.3 39.8 6.2884 4.0198
Pike 430 35.5 38 40.5 7.29 4.5765
Pike 345 36 38.5 41 6.396 3.977
Pike 456 40 42.5 45.5 7.28 4.3225
Pike 510 40 42.5 45.5 6.825 4.459
Pike 540 40.1 43 45.8 7.786 5.1296
Pike 500 42 45 48 6.96 4.896
Pike 567 43.2 46 48.7 7.792 4.87
Pike 770 44.8 48 51.2 7.68 5.376
Pike 950 48.3 51.7 55.1 8.9262 6.1712
Pike 1250 52 56 59.7 10.6863 6.9849
Pike 1600 56 60 64 9.6 6.144
Pike 1550 56 60 64 9.6 6.144
Pike 1650 59 63.4 68 10.812 7.48
Smelt 6.7 9.3 9.8 10.8 1.7388 1.0476
Smelt 7.5 10 10.5 11.6 1.972 1.16
Smelt 7 10.1 10.6 11.6 1.7284 1.1484
Smelt 9.7 10.4 11 12 2.196 1.38
Smelt 9.8 10.7 11.2 12.4 2.0832 1.2772
Smelt 8.7 10.8 11.3 12.6 1.9782 1.2852
Smelt 10 11.3 11.8 13.1 2.2139 1.2838
Smelt 9.9 11.3 11.8 13.1 2.2139 1.1659
Smelt 9.8 11.4 12 13.2 2.2044 1.1484
Smelt 12.2 11.5 12.2 13.4 2.0904 1.3936
Smelt 13.4 11.7 12.4 13.5 2.43 1.269
Smelt 12.2 12.1 13 13.8 2.277 1.2558
Smelt 19.7 13.2 14.3 15.2 2.8728 2.0672
Smelt 19.9 13.8 15 16.2 2.9322 1.8792
کد اجرایی:
# Step 1: Importing libraries
import pandas as pd
# Step 2: Defining the columns of and reading our DataFrame
columns = ['Species', 'Weight', 'V-Length', 'D-Length', 'X-Length', 'Height', 'Width']
Fish = pd.read_csv('Fish.txt', sep='\t', usecols=columns)
# Printing the head of our DataFrame
print(Fish.head())
خروجی:
Species Weight V-Length D-Length X-Length Height Width
0 Bream 290.0 24.0 26.3 31.2 12.4800 4.3056
1 Bream 340.0 23.9 26.5 31.1 12.3778 4.6961
2 Bream 363.0 26.3 29.0 33.5 12.7300 4.4555
3 Bream 430.0 26.5 29.0 34.0 12.4440 5.1340
4 Bream 450.0 26.8 29.7 34.7 13.6024 4.9274
- خط 2: کتابخانه pandas برای خواندن DataFrame وارد شده است.
-
خط 6: داده ها را از
Fish.txt
فایل با ستون های تعریف شده در خط 5. -
خط 9: پنج ردیف بالای DataFrame را چاپ می کند. سه طول، طول های عمودی، مورب و متقاطع را بر حسب سانتی متر مشخص می کنند.
در اینجا، طول، قد و عرض ماهی متغیرهای مستقل هستند و وزن به عنوان متغیر وابسته عمل می کند. در یادگیری ماشین، متغیرهای مستقل اغلب به عنوان نامیده می شوند امکانات و متغیرهای وابسته به عنوان برچسب ها، و این اصطلاحات در سراسر این وبلاگ به جای یکدیگر استفاده خواهند شد.
رگرسیون خطی
مدل های رگرسیون خطی به طور گسترده در آمار و یادگیری ماشین استفاده می شود. این مدل ها از یک خط مستقیم برای توصیف رابطه بین یک متغیر مستقل و یک متغیر وابسته استفاده می کنند. به عنوان مثال، هنگام تجزیه و تحلیل وزن ماهی، از مدل رگرسیون خطی برای توصیف رابطه بین وزن استفاده می شود. y ماهی و یکی از متغیرهای مستقل ایکس به شرح زیر است،
جایی که متر هست شیب از خطی که شیب آن را مشخص می کند، و ج هست y-برق، نقطه ای که خط از محور y عبور می کند.
انتخاب ویژگی
مجموعه داده شامل پنج متغیر مستقل است. یک مدل رگرسیون خطی ساده با تنها یک ویژگی را می توان با انتخاب قوی ترین ویژگی مرتبط با ماهی آغاز کرد. Weight
. یک روش برای انجام این امر، محاسبه همبستگی متقابل بین است Weight
و ویژگی ها
کد مخفی: (از بلوک کد قبلی)
# Step 1: Importing libraries
import pandas as pd
# Step 2: Defining the columns of and reading our data frame
columns = ['Species', 'Weight', 'V-Length', 'D-Length', 'X-Length', 'Height', 'Width']
Fish = pd.read_csv('Fish.txt', sep='\t', usecols=columns)
کد اجرایی:
# Finding the cross-correlation matrix
print(Fish.corr())
خروجی:
Weight V-Length D-Length X-Length Height Width
Weight 1.000000 0.915691 0.918625 0.923343 0.727260 0.886546
V-Length 0.915691 1.000000 0.999519 0.992155 0.627425 0.867002
D-Length 0.918625 0.999519 1.000000 0.994199 0.642392 0.873499
X-Length 0.923343 0.992155 0.994199 1.000000 0.704628 0.878548
Height 0.727260 0.627425 0.642392 0.704628 1.000000 0.794810
Width 0.886546 0.867002 0.873499 0.878548 0.794810 1.000000
با بررسی ستون اول، موارد زیر مشاهده می شود:
- همبستگی قوی بین
Weight
و ویژگیX-Length
. - را
Weight
ضعیف ترین همبستگی را باHeight
.
با توجه به این اطلاعات، واضح است که اگر فرد محدود به استفاده از یک متغیر مستقل برای پیش بینی متغیر وابسته باشد، باید انتخاب کند. X-Length
و نه Height
.
# Step 3: Separating the data into features and labels
X = Fish[['X-Length']]
y = Fish['Weight']
تقسیم داده ها
با وجود ویژگی ها و برچسب ها، اکنون DataFrame می تواند به مجموعه های آموزشی و آزمایشی تقسیم شود.
را مجموعه داده های آموزشی آموزش مدل، در حالی که مجموعه داده آزمایشی عملکرد آن را ارزیابی می کند.
را train_test_split
تابع از وارد شده است sklearn
کتابخانه برای تقسیم داده ها
from sklearn.model_selection import train_test_split
# Step 4: Dividing the dataset into test and train data
X_train, X_test, y_train, y_test =
train_test_split(
X, y,
test_size=0.3,
random_state=10,
shuffle=True
)
استدلال های train_test_split
عملکرد را می توان به صورت زیر بررسی کرد:
- خط 6: ویژگی و برچسب را پاس کنید.
-
خط 7: استفاده کنید
test_size=0.3
برای انتخاب 70 درصد از داده ها برای آموزش و 30 درصد باقی مانده برای اهداف آزمایشی. -
خطوط 8-9: تقسیم را به صورت تصادفی انجام دهید و استفاده کنید
shuffle=True
برای اطمینان از عدم تطابق بیش از حد مدل با مجموعه خاصی از داده ها.
در نتیجه داده های آموزشی در متغیرها X_train
و y_train
و داده های تست در X_test
و y_test
به دست آمده است.
اعمال مدل
در این مرحله می توان مدل رگرسیون خطی را ایجاد کرد.
کد مخفی:
# Step 1: Importing libraries
import pandas as pd
# 1.2
from sklearn.model_selection import train_test_split
# Step 2: Defining the columns of and reading our data frame
columns = ['Species', 'Weight', 'V-Length', 'D-Length', 'X-Length', 'Height', 'Width']
Fish = pd.read_csv('Fish.txt', sep='\t', usecols=columns)
# Step 3: Seperating the data into features and labels
X = Fish[['X-Length']]
y = Fish['Weight']
# Step 4: Dividing the data into test and train set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=10, shuffle=True)
کد اجرایی:
from sklearn.linear_model import LinearRegression
# Step 5: Selecting the linear regression method from scikit-learn library
model = LinearRegression().fit(X_train, y_train)
-
خط 1: را
LinearRegression
تابع ازsklearn
کتابخانه وارد شده است -
خط 4: با استفاده از داده های آموزشی مدل را ایجاد و آموزش می دهد
X_train
وy_train
.
اعتبارسنجی مدل
به یاد داشته باشید، 30٪ از داده ها برای آزمایش کنار گذاشته شد. میانگین خطای مطلق (MAE) را می توان با استفاده از این داده ها به عنوان شاخص میانگین اختلاف مطلق بین مقادیر پیش بینی شده و واقعی محاسبه کرد، با مقدار MAE پایین تر که نشان دهنده پیش بینی های دقیق تر است. معیارهای دیگری برای اعتبارسنجی مدل وجود دارد، اما در این زمینه مورد بررسی قرار نخواهند گرفت.
در اینجا یک مثال در حال اجرا کامل، شامل تمام مراحل ذکر شده در بالا برای انجام یک رگرسیون خطی است.
# Step 1: Importing libraries
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics
# Step 2: Defining the columns of and reading the DataFrame
columns = ['Species', 'Weight', 'V-Length', 'D-Length', 'X-Length', 'Height', 'Width']
Fish = pd.read_csv('Fish.txt', sep='\t', usecols=columns)
# Step 3: Seperating the data into features and labels
X = Fish[['X-Length']]
y = Fish['Weight']
# Step 4: Dividing the dataset into test and train data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=10, shuffle=True)
# Step 5: Selecting the linear regression method from the scikit-learn library
model = LinearRegression().fit(X_train, y_train)
# Step 6: Validation
# Evaluating the trained model on training data
y_prediction = model.predict(X_train)
print("MAE on train data= " , metrics.mean_absolute_error(y_train, y_prediction))
# Evaluating the trained model on test data
y_prediction = model.predict(X_test)
print("MAE on test data = " , metrics.mean_absolute_error(y_test, y_prediction))
خروجی:
('MAE on train data=", 105.08242420291623)
("MAE on test data=", 108.7817508976745)
در این مثال، model.predict()
تابع به داده های آموزشی اعمال می شود خط 23، و در خط 26، روی داده های تست استفاده می شود. اما چه چیزی را نشان می دهد؟
اساساً، این رویکرد عملکرد مدل را در یک مجموعه داده شناخته شده در مقایسه با مجموعه داده آزمایشی ناآشنا نشان می دهد.
دو مقدار MAE نشان می دهد که پیش بینی ها در داده های قطار و آزمایش مشابه هستند.
توجه داشته باشید: یادآوری این نکته ضروری است که
X-Length
به دلیل همبستگی بالای آن با برچسب به عنوان ویژگی انتخاب شد. برای تأیید انتخاب ویژگی، می توان آن را با ویژگی جایگزین کردHeight
بر خط 12 و رگرسیون خطی را دوباره اجرا کنید، سپس دو مقدار MAE را مقایسه کنید.
رگرسیون خطی چندگانه
تا کنون تنها یک ویژگی، X-Length
برای آموزش مدل استفاده شده است. با این حال، ویژگی هایی در دسترس هستند که می توان از آنها برای بهبود پیش بینی ها استفاده کرد. این ویژگی ها شامل طول عمودی، طول مورب، ارتفاع و عرض ماهی است و می توان از آن برای ارزیابی مجدد مدل رگرسیون خطی استفاده کرد.
# Step 3: Separating the data into features and labels
X = Fish[["V-Length', 'D-Length', 'X-Length', 'Height', 'Width']]
y = Fish['Weight']
از نظر ریاضی، مدل رگرسیون خطی چندگانه را می توان به صورت زیر نوشت:
جایی که m_i وزن برای ویژگی را نشان می دهد X_i در پیش بینی y و n تعداد ویژگی ها را نشان می دهد.
با پیروی از مراحل مشابه قبلی، عملکرد مدل را می توان با استفاده از تمام ویژگی ها محاسبه کرد.
# Step 1: Importing libraries
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics
# Step 2: Defining the columns and reading the DataFrame
columns = ['Species', 'Weight', 'V-Length', 'D-Length', 'X-Length', 'Height', 'Width']
Fish = pd.read_csv('Fish.txt', sep='\t', usecols=columns)
# Step 3: Seperating the data into features and labels
X = Fish[['V-Length', 'D-Length', 'X-Length', 'Height', 'Width']]
y = Fish['Weight']
# Step 4: Dividing the dataset into test and train data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=10, shuffle=True)
# Step 5: Selecting the linear regression method from the scikit-learn library
model = LinearRegression().fit(X_train, y_train)
# Step 6: Validation
# Evaluating the trained model on training data
y_prediction = model.predict(X_train)
print("MAE on train data= " , metrics.mean_absolute_error(y_train, y_prediction))
# Evaluating the trained model on test data
y_prediction = model.predict(X_test)
print("MAE on test data = " , metrics.mean_absolute_error(y_test, y_prediction))
خروجی:
('MAE on train data=", 88.6176233769433)
("MAE on test data=", 104.71922684746642)
مقادیر MAE مشابه نتایج به دست آمده در هنگام استفاده از یک ویژگی واحد خواهد بود.
رگرسیون چند جمله ای
این وبلاگ مفهوم رگرسیون چند جمله ای را توضیح می دهد، که زمانی استفاده می شود که فرض رابطه خطی بین ویژگی ها و برچسب دقیق نباشد. رگرسیون چند جملهای با ایجاد یک تناسب انعطافپذیرتر با دادهها، میتواند روابط پیچیدهتری را ثبت کند و منجر به پیشبینیهای دقیقتر شود.
به عنوان مثال، اگر رابطه بین متغیرهای وابسته و متغیر مستقل یک خط مستقیم نباشد، می توان از مدل رگرسیون چند جمله ای برای مدل سازی دقیق تر آن استفاده کرد. این می تواند منجر به تناسب بهتر با داده ها و پیش بینی های دقیق تر شود.
از نظر ریاضی، رابطه بین متغیرهای وابسته و مستقل با استفاده از معادله زیر توصیف میشود:
معادله فوق بسیار شبیه به معادله ای است که قبلا برای توصیف رگرسیون خطی چندگانه استفاده شد. با این حال، شامل ویژگی های تبدیل شده به نام است Z_i“هایی که نسخه چند جمله ای هستند X_i‘s در رگرسیون خطی چندگانه استفاده می شود.
این را می توان با استفاده از یک مثال از دو ویژگی بیشتر توضیح داد X_1 و X_2 برای ایجاد ویژگی های جدید مانند:
ویژگی های چند جمله ای جدید را می توان بر اساس آزمون و خطا یا تکنیک هایی مانند اعتبار سنجی متقاطع ایجاد کرد. درجه چند جمله ای را نیز می توان بر اساس پیچیدگی رابطه بین متغیرها انتخاب کرد.
مثال زیر یک رگرسیون چند جمله ای را ارائه می دهد و عملکرد مدل ها را تایید می کند.
# Step 1: Importing libraries
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics
from sklearn.preprocessing import PolynomialFeatures
# Step 2: Defining the columns and reading the DataFrame
columns = ['Species', 'Weight', 'V-Length', 'D-Length', 'X-Length', 'Height', 'Width']
Fish = pd.read_csv('Fish.txt', sep='\t', usecols=columns)
# Step 3: Seperating the data into features and labels
X = Fish[['V-Length', 'D-Length', 'X-Length', 'Height', 'Width']]
y = Fish['Weight']
# Step 4: Generating polynomial features
Z = PolynomialFeatures(degree=2, include_bias=False).fit_transform(X)
# Dividing the dataset into test and train data
X_train, X_test, y_train, y_test = train_test_split(Z, y, test_size=0.3, random_state=10)
# Step 5: Selecting the linear regression method from the scikit-learn library
model = LinearRegression().fit(X_train, y_train)
# Step 6: Validation
# Evaluating the trained model on training data
y_prediction = model.predict(X_train)
print("MAE on train data= " , metrics.mean_absolute_error(y_train, y_prediction))
# Evaluating our trained model on test data
y_prediction = model.predict(X_test)
print("MAE on test data = " , metrics.mean_absolute_error(y_test, y_prediction))
خروجی:
('MAE on train data=", 30.44121990999409)
("MAE on test data=", 32.558434580499224)
ویژگی ها با استفاده از تغییر شکل دادند PolynomialFeatures
عملکرد روشن خط 18. را PolynomialFeatures
تابع، وارد شده از sklearn
کتابخانه روشن خط 7، برای این منظور استفاده شد.
لازم به ذکر است که مقدار MAE در این مورد نسبت به مدلهای رگرسیون خطی برتری دارد، به این معنی که فرض خطی کاملاً دقیق نبود.
این وبلاگ معرفی سریع مدل های رگرسیون یادگیری ماشین با پایتون را ارائه کرده است. اینجا متوقف نشوید! برای ساختن مدلهای دقیقتر و قویتر، تکنیکها و کتابخانههای مختلف را کاوش و تمرین کنید. همچنین میتوانید دورهها و مسیرهای مهارتی زیر را در Educative بررسی کنید:
موفق باشید، و یادگیری شاد!