目录
2.使用get_dummies转换成One-Hot Encoding
前言
目标概览 House Price
这是一个监督学习问题,意味着训练集中包含一系列的观察数据(行)和相关的多种信息(列)。其中一列是我们感兴趣并能够预测的信息,通常称其为目标变量或者因变量,在分类问题中称为标签、类。在我们的案例中,目标变量是房价。其它的列通常称为独立变量或特征。我们还有一个测试集,也包含一系列的观察数据,其中的列与训练集相同,除了目标变量,因为我们的目标就是预测目标变量的值。因此,完美情况下,我们要建立一个模型,该模型可以学习训练集中因变量和独立变量之间的关系,然后使用学习到的知识在测试集中尽可能准确地预测因变量(目标变量)的值。由于目标变量(房价)是连续的,可以取任意的值,因此这个问题属于回归问题。
一、数据的加载和检查
运行创建好的项目 首先会打印出来一些数据的存放路径 (数据需要自己导入)
/kaggle/input/house-prices-advanced-regression-techniques/sample_submission.csv /kaggle/input/house-prices-advanced-regression-techniques/data_description.txt /kaggle/input/house-prices-advanced-regression-techniques/train.csv /kaggle/input/house-prices-advanced-regression-techniques/test.csv
直接使用路径 df用来 存放整体数据 test放测试数据
path = '/kaggle/input/house-prices-advanced-regression-techniques/'
df = pd.read_csv(f'{path}train.csv',index_col = 'Id')
df_test = pd.read_csv(f'{path}test.csv',index_col = 'Id')
使用info函数可以查看列信息 看一下值的缺省
df.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 1460 entries, 1 to 1460 Data columns (total 80 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 MSSubClass 1460 non-null int64 1 MSZoning 1460 non-null object 2 LotFrontage 1201 non-null float64 3 LotArea 1460 non-null int64 4 Street 1460 non-null object 5 Alley 91 non-null object 6 LotShape 1460 non-null object 7 LandContour 1460 non-null object 8 Utilities 1460 non-null object 9 LotConfig 1460 non-null object 10 LandSlope 1460 non-null object 11 Neighborhood 1460 non-null object 12 Condition1 1460 non-null object 13 Condition2 1460 non-null object 14 BldgType 1460 non-null object 15 HouseStyle 1460 non-null object 16 OverallQual 1460 non-null int64 17 OverallCond 1460 non-null int64 18 YearBuilt 1460 non-null int64 19 YearRemodAdd 1460 non-null int64 20 RoofStyle 1460 non-null object 21 RoofMatl 1460 non-null object 22 Exterior1st 1460 non-null object 23 Exterior2nd 1460 non-null object 24 MasVnrType 1452 non-null object 25 MasVnrArea 1452 non-null float64 26 ExterQual 1460 non-null object 27 ExterCond 1460 non-null object 28 Foundation 1460 non-null object 29 BsmtQual 1423 non-null object 30 BsmtCond 1423 non-null object 31 BsmtExposure 1422 non-null object 32 BsmtFinType1 1423 non-null object 33 BsmtFinSF1 1460 non-null int64 34 BsmtFinType2 1422 non-null object 35 BsmtFinSF2 1460 non-null int64 36 BsmtUnfSF 1460 non-null int64 37 TotalBsmtSF 1460 non-null int64 38 Heating 1460 non-null object 39 HeatingQC 1460 non-null object 40 CentralAir 1460 non-null object 41 Electrical 1459 non-null object 42 1stFlrSF 1460 non-null int64 43 2ndFlrSF 1460 non-null int64 44 LowQualFinSF 1460 non-null int64 45 GrLivArea 1460 non-null int64 46 BsmtFullBath 1460 non-null int64 47 BsmtHalfBath 1460 non-null int64 48 FullBath 1460 non-null int64 49 HalfBath 1460 non-null int64 50 BedroomAbvGr 1460 non-null int64 51 KitchenAbvGr 1460 non-null int64 52 KitchenQual 1460 non-null object 53 TotRmsAbvGrd 1460 non-null int64 54 Functional 1460 non-null object 55 Fireplaces 1460 non-null int64 56 FireplaceQu 770 non-null object 57 GarageType 1379 non-null object 58 GarageYrBlt 1379 non-null float64 59 GarageFinish 1379 non-null object 60 GarageCars 1460 non-null int64 61 GarageArea 1460 non-null int64 62 GarageQual 1379 non-null object 63 GarageCond 1379 non-null object 64 PavedDrive 1460 non-null object 65 WoodDeckSF 1460 non-null int64 66 OpenPorchSF 1460 non-null int64 67 EnclosedPorch 1460 non-null int64 68 3SsnPorch 1460 non-null int64 69 ScreenPorch 1460 non-null int64 70 PoolArea 1460 non-null int64 71 PoolQC 7 non-null object 72 Fence 281 non-null object 73 MiscFeature 54 non-null object 74 MiscVal 1460 non-null int64 75 MoSold 1460 non-null int64 76 YrSold 1460 non-null int64 77 SaleType 1460 non-null object 78 SaleCondition 1460 non-null object 79 SalePrice 1460 non-null int64 dtypes: float64(3), int64(34), object(43) memory usage: 923.9+ KB
二、清洗数据
1.使用interpolate 填充缺失值
df = df.interpolate()
2.使用get_dummies转换成One-Hot Encoding
df = pd.get_dummies(df)
三、使用随机森林模型
rf = RandomForestRegressor(n_estimators=100, n_jobs=-1)
// 创建一个模型 n_estimators是树的数量 n_jobs是要并行运行的作业的数量 -1是全部使用
// 因为fit, predict, decision_path 和 apply都在树中并行化
rf.fit(df_train, target)
preds = rf.predict(df_test)
//fit() 从训练集(X, y)构建一个树的森林。
//predict() 为X预测回归目标。
my_submission = pd.DataFrame({'Id': df_test.index, 'SalePrice': preds})
my_submission.to_csv('./submission.csv', index=False)
//存储一下数据
总结
效果并不好 因为数据没有处理的很细致 模型可能也不是很贴合
下次目标 对数据进行筛选