پیش بینی قیمت خانه با Scikit-learn: راهنمای کامل
Summarize this content to 400 words in Persian Lang یادگیری ماشینی صنایع مختلف از جمله املاک و مستغلات را متحول می کند. یکی از کارهای رایج پیش بینی قیمت خانه بر اساس ویژگی های مختلف مانند تعداد اتاق خواب، حمام، متراژ مربع و موقعیت مکانی است. در این مقاله نحوه ساخت یک مدل یادگیری ماشینی با استفاده از آن را بررسی خواهیم کرد scikit-یادگیری برای پیشبینی قیمت مسکن، که همه جنبهها از پیشپردازش دادهها تا استقرار مدل را پوشش میدهد.
فهرست مطالب
مقدمه ای بر Scikit-learn
تعریف مشکل
جمع آوری داده ها
پیش پردازش داده ها
انتخاب ویژگی
آموزش مدل
ارزیابی مدل
تنظیم مدل (بهینه سازی فراپارامتر)
استقرار مدل
نتیجه گیری
1. مقدمه ای بر Scikit-learn
Scikit- Learn یکی از پرکاربردترین کتابخانه ها برای یادگیری ماشین در پایتون است. ابزارهای ساده و کارآمدی برای تحلیل و مدل سازی داده ها ارائه می دهد. فرقی نمیکند با طبقهبندی، رگرسیون، خوشهبندی یا کاهش ابعاد سروکار داشته باشید، scikit-learn مجموعه گستردهای از ابزارها را برای کمک به شما در ساخت مدلهای یادگیری ماشینی قوی ارائه میکند.
در این راهنما، ما یک را می سازیم رگرسیون مدل با استفاده از scikit-learn برای پیش بینی قیمت مسکن بیایید در هر مرحله از فرآیند قدم برداریم.
2. تعریف مسئله
وظیفه پیش بینی قیمت یک خانه بر اساس ویژگی های آن است مانند:
تعداد اتاق خواب
تعداد حمام
مساحت (بر حسب فوت مربع)
مکان
این یک است یادگیری تحت نظارت مشکلی که در آن متغیر هدف (قیمت خانه) پیوسته است و آن را a رگرسیون وظیفه Scikit-learn الگوریتم های مختلفی را برای رگرسیون ارائه می دهد، مانند رگرسیون خطی و جنگل تصادفیکه در این پروژه از آن استفاده خواهیم کرد.
3. جمع آوری داده ها
میتوانید از مجموعه دادههای دنیای واقعی مانند مجموعه دادههای Kaggle House Prices استفاده کنید یا دادههای خود را از یک API عمومی جمعآوری کنید.
در اینجا نمونه ای از نحوه ظاهر داده های شما آورده شده است:
اتاق های خواب
حمام ها
مساحت (فوت مربع)
مکان
قیمت (دلار)
3
2
1500
بوستون
300000
4
3
2000
سیاتل
500000
متغیر هدف در اینجا همان است قیمت.
4. پیش پردازش داده ها
قبل از وارد کردن داده ها به یک مدل یادگیری ماشینی، باید آن را از قبل پردازش کنیم. این شامل مدیریت مقادیر از دست رفته، رمزگذاری ویژگی های طبقه بندی شده و مقیاس بندی داده ها می شود.
رسیدگی به داده های از دست رفته
داده های از دست رفته در مجموعه داده های دنیای واقعی رایج است. میتوانیم مقادیر از دست رفته را با یک معیار آماری مانند میانه پر کنیم یا ردیفهایی را با دادههای از دست رفته رها کنیم:
data.fillna(data.median(), inplace=True)
رمزگذاری ویژگی های دسته بندی
از آنجایی که مدلهای یادگیری ماشینی به ورودی عددی نیاز دارند، باید ویژگیهای طبقهبندی را تبدیل کنیم Location به اعداد رمزگذاری برچسب به هر دسته یک شماره منحصر به فرد اختصاص می دهد:
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
data[‘Location’] = encoder.fit_transform(data[‘Location’])
مقیاس بندی ویژگی ها
مهم است که ویژگیهایی مانند Area و Price برای اطمینان از اینکه آنها در یک مقیاس هستند، به خصوص برای الگوریتم های حساس به بزرگی ویژگی. در اینجا نحوه اعمال مقیاس بندی آمده است:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
5. انتخاب ویژگی
همه ویژگی ها به طور یکسان به متغیر هدف کمک نمی کنند. انتخاب ویژگی به شناسایی مهمترین ویژگیها کمک میکند، که عملکرد مدل را بهبود میبخشد و بیش از حد برازش را کاهش میدهد.
در این پروژه استفاده می کنیم KBest را انتخاب کنید برای انتخاب 5 ویژگی برتر بر اساس همبستگی آنها با متغیر هدف:
from sklearn.feature_selection import SelectKBest, f_regression
selector = SelectKBest(score_func=f_regression, k=5)
X_new = selector.fit_transform(X, y)
6. آموزش مدل
اکنون که داده ها را از قبل پردازش کرده ایم و بهترین ویژگی ها را انتخاب کرده ایم، نوبت به آموزش مدل رسیده است. ما از دو الگوریتم رگرسیون استفاده خواهیم کرد: رگرسیون خطی و جنگل تصادفی.
رگرسیون خطی
رگرسیون خطی با یک خط مستقیم در میان داده ها مطابقت می کند و تفاوت بین مقادیر پیش بینی شده و واقعی را به حداقل می رساند:
from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
جنگل تصادفی
جنگل تصادفی یک روش مجموعه ای است که از چندین درخت تصمیم استفاده می کند و نتایج آنها را میانگین می گیرد تا دقت را بهبود بخشد و بیش از حد برازش را کاهش دهد:
from sklearn.ensemble import RandomForestRegressor
forest_model = RandomForestRegressor(n_estimators=100)
forest_model.fit(X_train, y_train)
تقسیم قطار-تست
برای ارزیابی میزان تعمیم مدلهای ما، دادهها را به مجموعههای آموزشی و آزمایشی تقسیم میکنیم:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42)
7. ارزیابی مدل
پس از آموزش مدل ها، باید عملکرد آنها را با استفاده از معیارهایی مانند ارزیابی کنیم میانگین مربعات خطا (MSE) و مربع R (R²).
میانگین مربعات خطا (MSE)
MSE میانگین اختلاف مجذور بین مقادیر پیش بینی شده و واقعی را محاسبه می کند. MSE پایین تر نشان دهنده عملکرد بهتر است:
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
مربع R (R²)
R² به ما می گوید که مدل چقدر واریانس در متغیر هدف را توضیح می دهد. مقدار 1 به معنای پیش بینی کامل است:
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
عملکرد مدلهای رگرسیون خطی و جنگل تصادفی را با استفاده از این معیارها مقایسه کنید.
8. تنظیم مدل (بهینه سازی فراپارامتر)
برای بهبود بیشتر عملکرد مدل، میتوانیم فراپارامترها را دقیق تنظیم کنیم. برای جنگل تصادفی، فراپارامترهایی مانند n_estimators (تعداد درختان) و max_depth (حداکثر عمق درختان) می تواند عملکرد قابل توجهی را تحت تاثیر قرار دهد.
در اینجا نحوه استفاده آمده است GridSearchCV برای بهینه سازی هایپرپارامتر:
from sklearn.model_selection import GridSearchCV
param_grid = {
‘n_estimators’: [50, 100, 200],
‘max_depth’: [None, 10, 20]
}
grid_search = GridSearchCV(RandomForestRegressor(), param_grid, cv=5)
grid_search.fit(X_train, y_train)
best_model = grid_search.best_estimator_
9. استقرار مدل
هنگامی که مدل را آموزش و تنظیم کردید، مرحله بعدی استقرار است. می توانید استفاده کنید فلاسک برای ایجاد یک برنامه وب ساده که پیش بینی ها را ارائه می دهد.
در اینجا یک برنامه اصلی Flask برای ارائه پیش بینی قیمت خانه وجود دارد:
from flask import Flask, request, jsonify
import joblib
app = Flask(__name__)
# Load the trained model
model = joblib.load(‘best_model.pkl’)
@app.route(‘/predict’, methods=[‘POST’])
def predict():
data = request.json
prediction = model.predict([data[‘features’]])
return jsonify({‘predicted_price’: prediction[0]})
if __name__ == ‘__main__’:
app.run()
با استفاده از مدل آموزش دیده ذخیره کنید joblib:
import joblib
joblib.dump(best_model, ‘best_model.pkl’)
به این ترتیب می توانید با ارسال درخواست به API پیش بینی کنید.
10. نتیجه گیری
در این پروژه، ما کل فرآیند ساخت یک مدل یادگیری ماشین را با استفاده از scikit-learn برای پیشبینی قیمت خانه بررسی کردیم. از پیش پردازش داده ها و انتخاب ویژگی گرفته تا آموزش مدل، ارزیابی و استقرار، هر مرحله با نمونه های کد عملی پوشش داده شد.
چه در یادگیری ماشینی تازه کار باشید و چه به دنبال استفاده از Sikit-Learn در پروژه های دنیای واقعی هستید، این راهنما گردش کار جامعی را ارائه می دهد که می توانید آن را برای کارهای مختلف رگرسیون تطبیق دهید.
با خیال راحت مدلها، مجموعه دادهها و تکنیکهای مختلف را برای افزایش عملکرد و دقت مدل خود آزمایش کنید.
رگرسیون #AI #تحلیل داده #پیش پردازش داده #MLModel #RandomForest #LinearRegression #Flask #APIDevelopment #Real Estate #TechBlog #Tutorial #DataEngineering #DeepLearning #Predictive Analytics #DevCommunity
یادگیری ماشینی صنایع مختلف از جمله املاک و مستغلات را متحول می کند. یکی از کارهای رایج پیش بینی قیمت خانه بر اساس ویژگی های مختلف مانند تعداد اتاق خواب، حمام، متراژ مربع و موقعیت مکانی است. در این مقاله نحوه ساخت یک مدل یادگیری ماشینی با استفاده از آن را بررسی خواهیم کرد scikit-یادگیری برای پیشبینی قیمت مسکن، که همه جنبهها از پیشپردازش دادهها تا استقرار مدل را پوشش میدهد.
فهرست مطالب
- مقدمه ای بر Scikit-learn
- تعریف مشکل
- جمع آوری داده ها
- پیش پردازش داده ها
- انتخاب ویژگی
- آموزش مدل
- ارزیابی مدل
- تنظیم مدل (بهینه سازی فراپارامتر)
- استقرار مدل
- نتیجه گیری
1. مقدمه ای بر Scikit-learn
Scikit- Learn یکی از پرکاربردترین کتابخانه ها برای یادگیری ماشین در پایتون است. ابزارهای ساده و کارآمدی برای تحلیل و مدل سازی داده ها ارائه می دهد. فرقی نمیکند با طبقهبندی، رگرسیون، خوشهبندی یا کاهش ابعاد سروکار داشته باشید، scikit-learn مجموعه گستردهای از ابزارها را برای کمک به شما در ساخت مدلهای یادگیری ماشینی قوی ارائه میکند.
در این راهنما، ما یک را می سازیم رگرسیون مدل با استفاده از scikit-learn برای پیش بینی قیمت مسکن بیایید در هر مرحله از فرآیند قدم برداریم.
2. تعریف مسئله
وظیفه پیش بینی قیمت یک خانه بر اساس ویژگی های آن است مانند:
- تعداد اتاق خواب
- تعداد حمام
- مساحت (بر حسب فوت مربع)
- مکان
این یک است یادگیری تحت نظارت مشکلی که در آن متغیر هدف (قیمت خانه) پیوسته است و آن را a رگرسیون وظیفه Scikit-learn الگوریتم های مختلفی را برای رگرسیون ارائه می دهد، مانند رگرسیون خطی و جنگل تصادفیکه در این پروژه از آن استفاده خواهیم کرد.
3. جمع آوری داده ها
میتوانید از مجموعه دادههای دنیای واقعی مانند مجموعه دادههای Kaggle House Prices استفاده کنید یا دادههای خود را از یک API عمومی جمعآوری کنید.
در اینجا نمونه ای از نحوه ظاهر داده های شما آورده شده است:
اتاق های خواب | حمام ها | مساحت (فوت مربع) | مکان | قیمت (دلار) |
---|---|---|---|---|
3 | 2 | 1500 | بوستون | 300000 |
4 | 3 | 2000 | سیاتل | 500000 |
متغیر هدف در اینجا همان است قیمت.
4. پیش پردازش داده ها
قبل از وارد کردن داده ها به یک مدل یادگیری ماشینی، باید آن را از قبل پردازش کنیم. این شامل مدیریت مقادیر از دست رفته، رمزگذاری ویژگی های طبقه بندی شده و مقیاس بندی داده ها می شود.
رسیدگی به داده های از دست رفته
داده های از دست رفته در مجموعه داده های دنیای واقعی رایج است. میتوانیم مقادیر از دست رفته را با یک معیار آماری مانند میانه پر کنیم یا ردیفهایی را با دادههای از دست رفته رها کنیم:
data.fillna(data.median(), inplace=True)
رمزگذاری ویژگی های دسته بندی
از آنجایی که مدلهای یادگیری ماشینی به ورودی عددی نیاز دارند، باید ویژگیهای طبقهبندی را تبدیل کنیم Location
به اعداد رمزگذاری برچسب به هر دسته یک شماره منحصر به فرد اختصاص می دهد:
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
data['Location'] = encoder.fit_transform(data['Location'])
مقیاس بندی ویژگی ها
مهم است که ویژگیهایی مانند Area
و Price
برای اطمینان از اینکه آنها در یک مقیاس هستند، به خصوص برای الگوریتم های حساس به بزرگی ویژگی. در اینجا نحوه اعمال مقیاس بندی آمده است:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
5. انتخاب ویژگی
همه ویژگی ها به طور یکسان به متغیر هدف کمک نمی کنند. انتخاب ویژگی به شناسایی مهمترین ویژگیها کمک میکند، که عملکرد مدل را بهبود میبخشد و بیش از حد برازش را کاهش میدهد.
در این پروژه استفاده می کنیم KBest را انتخاب کنید برای انتخاب 5 ویژگی برتر بر اساس همبستگی آنها با متغیر هدف:
from sklearn.feature_selection import SelectKBest, f_regression
selector = SelectKBest(score_func=f_regression, k=5)
X_new = selector.fit_transform(X, y)
6. آموزش مدل
اکنون که داده ها را از قبل پردازش کرده ایم و بهترین ویژگی ها را انتخاب کرده ایم، نوبت به آموزش مدل رسیده است. ما از دو الگوریتم رگرسیون استفاده خواهیم کرد: رگرسیون خطی و جنگل تصادفی.
رگرسیون خطی
رگرسیون خطی با یک خط مستقیم در میان داده ها مطابقت می کند و تفاوت بین مقادیر پیش بینی شده و واقعی را به حداقل می رساند:
from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
جنگل تصادفی
جنگل تصادفی یک روش مجموعه ای است که از چندین درخت تصمیم استفاده می کند و نتایج آنها را میانگین می گیرد تا دقت را بهبود بخشد و بیش از حد برازش را کاهش دهد:
from sklearn.ensemble import RandomForestRegressor
forest_model = RandomForestRegressor(n_estimators=100)
forest_model.fit(X_train, y_train)
تقسیم قطار-تست
برای ارزیابی میزان تعمیم مدلهای ما، دادهها را به مجموعههای آموزشی و آزمایشی تقسیم میکنیم:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42)
7. ارزیابی مدل
پس از آموزش مدل ها، باید عملکرد آنها را با استفاده از معیارهایی مانند ارزیابی کنیم میانگین مربعات خطا (MSE) و مربع R (R²).
میانگین مربعات خطا (MSE)
MSE میانگین اختلاف مجذور بین مقادیر پیش بینی شده و واقعی را محاسبه می کند. MSE پایین تر نشان دهنده عملکرد بهتر است:
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
مربع R (R²)
R² به ما می گوید که مدل چقدر واریانس در متغیر هدف را توضیح می دهد. مقدار 1 به معنای پیش بینی کامل است:
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
عملکرد مدلهای رگرسیون خطی و جنگل تصادفی را با استفاده از این معیارها مقایسه کنید.
8. تنظیم مدل (بهینه سازی فراپارامتر)
برای بهبود بیشتر عملکرد مدل، میتوانیم فراپارامترها را دقیق تنظیم کنیم. برای جنگل تصادفی، فراپارامترهایی مانند n_estimators
(تعداد درختان) و max_depth
(حداکثر عمق درختان) می تواند عملکرد قابل توجهی را تحت تاثیر قرار دهد.
در اینجا نحوه استفاده آمده است GridSearchCV برای بهینه سازی هایپرپارامتر:
from sklearn.model_selection import GridSearchCV
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [None, 10, 20]
}
grid_search = GridSearchCV(RandomForestRegressor(), param_grid, cv=5)
grid_search.fit(X_train, y_train)
best_model = grid_search.best_estimator_
9. استقرار مدل
هنگامی که مدل را آموزش و تنظیم کردید، مرحله بعدی استقرار است. می توانید استفاده کنید فلاسک برای ایجاد یک برنامه وب ساده که پیش بینی ها را ارائه می دهد.
در اینجا یک برنامه اصلی Flask برای ارائه پیش بینی قیمت خانه وجود دارد:
from flask import Flask, request, jsonify
import joblib
app = Flask(__name__)
# Load the trained model
model = joblib.load('best_model.pkl')
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
prediction = model.predict([data['features']])
return jsonify({'predicted_price': prediction[0]})
if __name__ == '__main__':
app.run()
با استفاده از مدل آموزش دیده ذخیره کنید joblib:
import joblib
joblib.dump(best_model, 'best_model.pkl')
به این ترتیب می توانید با ارسال درخواست به API پیش بینی کنید.
10. نتیجه گیری
در این پروژه، ما کل فرآیند ساخت یک مدل یادگیری ماشین را با استفاده از scikit-learn برای پیشبینی قیمت خانه بررسی کردیم. از پیش پردازش داده ها و انتخاب ویژگی گرفته تا آموزش مدل، ارزیابی و استقرار، هر مرحله با نمونه های کد عملی پوشش داده شد.
چه در یادگیری ماشینی تازه کار باشید و چه به دنبال استفاده از Sikit-Learn در پروژه های دنیای واقعی هستید، این راهنما گردش کار جامعی را ارائه می دهد که می توانید آن را برای کارهای مختلف رگرسیون تطبیق دهید.
با خیال راحت مدلها، مجموعه دادهها و تکنیکهای مختلف را برای افزایش عملکرد و دقت مدل خود آزمایش کنید.
رگرسیون #AI #تحلیل داده #پیش پردازش داده #MLModel #RandomForest #LinearRegression #Flask #APIDevelopment #Real Estate #TechBlog #Tutorial #DataEngineering #DeepLearning #Predictive Analytics #DevCommunity