# کتابخانه های لازم را برای پیش پردازش وارد کنید
واردات پانداها به عنوان پی دی
از اسکلره کردن.خط لوله واردات خط لوله
از اسکلره کردن.نسبت دادن واردات SimpleImputer
از اسکلره کردن.پیش پردازش واردات OrdinalEncoder، OneHotEncoder، FunctionTransformer
از اسکلره کردن.سرودن واردات ترانسفورماتور ستونی
# مجموعه داده را بارگذاری کنید
ایمز = پی دی.read_csv(“Ames.csv”)
# ویژگی های عددی زیر را به ویژگی های دسته بندی تبدیل کنید
ایمز[‘MSSubClass’] = ایمز[‘MSSubClass’].بی شکل(“شیء”)
ایمز[‘YrSold’] = ایمز[‘YrSold’].بی شکل(“شیء”)
ایمز[‘MoSold’] = ایمز[‘MoSold’].بی شکل(“شیء”)
# «PID» و «SalePrice» را از ویژگیها حذف کنید و به طور خاص ستون «Electrical» را مدیریت کنید.
ویژگی های عددی = ایمز.select_dtypes(شامل شود=[‘int64’, ‘float64’]).رها کردن(ستون ها=[‘PID’, ‘SalePrice’]).ستون ها
categorical_features = ایمز.select_dtypes(شامل شود=[‘object’]).ستون ها.تفاوت([‘Electrical’])
ویژگی_الکتریکی = [‘Electrical’]
# دسته ها را برای رمزگذاری ترتیبی طبق فرهنگ لغت داده به صورت دستی مشخص کنید
ordinal_order = {
“برق”: [‘Mix’, ‘FuseP’, ‘FuseF’, ‘FuseA’, ‘SBrkr’]، #سیستم برق
“LotShape”: [‘IR3’, ‘IR2’, ‘IR1’, ‘Reg’]، # شکل کلی ملک
“آب و برق”: [‘ELO’, ‘NoSeWa’, ‘NoSewr’, ‘AllPub’]، # نوع خدمات در دسترس
“لند شیب”: [‘Sev’, ‘Mod’, ‘Gtl’]، # شیب ملک
“ExterQual”: [‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، # کیفیت مواد را در نمای بیرونی ارزیابی می کند
“ExterCond”: [‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، # وضعیت فعلی مواد را در نمای بیرونی ارزیابی می کند
‘BsmtQual’: [‘None’, ‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، #ارتفاع زیرزمین
“BsmtCond”: [‘None’, ‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، # وضعیت عمومی زیرزمین
“BsmtExposure”: [‘None’, ‘No’, ‘Mn’, ‘Av’, ‘Gd’]، # دیوارهای زیرزمین در سطح باغ یا پیاده روی
“BsmtFinType1”: [‘None’, ‘Unf’, ‘LwQ’, ‘Rec’, ‘BLQ’, ‘ALQ’, ‘GLQ’]، # کیفیت زیرزمین مساحت تمام شده
“BsmtFinType2”: [‘None’, ‘Unf’, ‘LwQ’, ‘Rec’, ‘BLQ’, ‘ALQ’, ‘GLQ’]، # کیفیت زیرزمین دوم منطقه تمام شده
‘HeatingQC’: [‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، # کیفیت و شرایط گرمایش
‘KitchenQual’: [‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، #کیفیت آشپزخانه
“عملکردی”: [‘Sal’, ‘Sev’, ‘Maj2’, ‘Maj1’, ‘Mod’, ‘Min2’, ‘Min1’, ‘Typ’]، # عملکرد خانه
“شومینه کو”: [‘None’, ‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، # کیفیت شومینه
“GarageFinish”: [‘None’, ‘Unf’, ‘RFn’, ‘Fin’]، # تکمیل داخلی گاراژ
“GarageQual”: [‘None’, ‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، # کیفیت گاراژ
“GarageCond”: [‘None’, ‘Po’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، # وضعیت گاراژ
“PavedDrive”: [‘N’, ‘P’, ‘Y’]، # مسیر آسفالت شده
“PoolQC”: [‘None’, ‘Fa’, ‘TA’, ‘Gd’, ‘Ex’]، # کیفیت استخر
‘حصار’: [‘None’, ‘MnWw’, ‘GdWo’, ‘MnPrv’, ‘GdPrv’] # کیفیت نرده
}
# لیست تمام ویژگی های ترتیبی را از فرهنگ لغت استخراج کنید
ordinal_features = فهرست(ordinal_order.کلیدها())
# فهرست ویژگی های ترتیبی به جز Electrical
ترتیبی_به جز_الکتریکی = [feature for feature in ordinal_features if feature != ‘Electrical’]
# تابع کمکی برای پر کردن “هیچ” برای داده های طبقه بندی شده از دست رفته
دف fill_none(X):
بازگشت X.فیلنا(“هیچ”)
# Pipeline برای “Electrical”: مقدار گمشده را با حالت پر کنید سپس کدگذاری ترتیبی را اعمال کنید
ترانسفورماتور_الکتریکی = خط لوله(مراحل=[
(‘impute_electrical’, SimpleImputer(strategy=‘most_frequent’)),
(‘ordinal_electrical’, OrdinalEncoder(categories=[ordinal_order[‘Electrical’]]))
])
# خط لوله برای ویژگی های عددی: مقادیر گمشده را با استفاده از میانگین وارد کنید
عددی_ترانسفورماتور = خط لوله(مراحل=[
(‘impute_mean’, SimpleImputer(strategy=‘mean’))
])
# خط لوله برای ویژگیهای ترتیبی: مقادیر گمشده را با «هیچ» پر کنید، سپس کدگذاری ترتیبی را اعمال کنید.
ترانسفورماتور_ترتیبی = خط لوله(مراحل=[
(‘fill_none’, FunctionTransformer(fill_none, validate=False)),
(‘ordinal’, OrdinalEncoder(categories=[ordinal_order[feature] برای ویژگی در ordinal_features اگر ویژگی در ترتیبی_به جز_الکتریکی]))
])
# خط لوله برای ویژگیهای طبقهبندی اسمی: مقادیر گمشده را با «هیچ» پر کنید، سپس کدگذاری یکطرفه را اعمال کنید.
ویژگی های اسمی = [feature for feature in categorical_features if feature not in ordinal_features]
categorical_transformer = خط لوله(مراحل=[
(‘fill_none’, FunctionTransformer(fill_none, validate=False)),
(‘onehot’, OneHotEncoder(handle_unknown=‘ignore’))
])
# پیش پردازنده ترکیبی برای داده های الکتریکی عددی، ترتیبی، اسمی و خاص
پیش پردازنده = ترانسفورماتور ستونی(
ترانسفورماتورها=[
(‘electrical’, electrical_transformer, [‘Electrical’])،
(“تعداد”، عددی_ترانسفورماتور، ویژگی های عددی)،
(“عادی”، ترانسفورماتور_ترتیبی، ترتیبی_به جز_الکتریکی)،
(“اسمی”، categorical_transformer، ویژگی های اسمی)
])
# خط لوله پیش پردازش را به Ames اعمال کنید
داده های تبدیل شده = پیش پردازنده.تناسب_تغییر(ایمز).toarray()
# نام ستونها را برای ویژگیهای کدگذاری شده یکطرفه ایجاد کنید
onehot_features = پیش پردازنده.به نام_ترانسفورماتور_[‘nominal’].به نام مراحل[‘onehot’].get_feature_names_out()
# همه نام ویژگی ها را ترکیب کنید
all_feature_names = [‘Electrical’] + فهرست(ویژگی های عددی) + فهرست(ترتیبی_به جز_الکتریکی) + فهرست(onehot_features)
# آرایه تبدیل شده را به DataFrame تبدیل کنید
transformed_df = پی دی.DataFrame(داده های تبدیل شده، ستون ها=all_feature_names)