【House Prices】具体实现
第一步,将数据集仅保留十个关键变量,其他变量删掉。
# 选择要保留的列 selected_columns = ["SalePrice","OverallQual", "GrLivArea", "GarageCars", "TotalBsmtSF", "1stFlrSF", "FullBath", "TotRmsAbvGrd", "YearBuilt"] # 从合并后的数据集中提取指定列 full_selected = full[selected_columns] # 查看结果 print(full_selected)
第二步,获得训练集
from sklearn.model_selection import train_test_split # 假设 X 包含特征,y 包含目标变量 X = full_selected_without_price # 使用你希望的特征列 y = full_selected['SalePrice'] # 用于预测的目标变量 # 将数据拆分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
第三步,进行训练
from sklearn.model_selection import cross_val_score from sklearn.metrics import mean_squared_error from sklearn.linear_model import ElasticNetCV model_cv = ElasticNetCV(alphas=[0.0001, 0.001, 0.01, 0.1, 1], l1_ratio=[0.1, 0.5, 0.9],max_iter=5000) # 使用 cross_val_score 进行交叉验证评估,这里假设使用 5 折交叉验证 scores = cross_val_score(model_cv, X, y, cv=5) # 输出平均分数 print("Score:", scores.mean())
第四步,输出预测结果
#输出结果 #第一步:获取训练集的十个特征的那部分数据 #第二步:用ent pridict对应的数据 #第三步:输出到csv里 ent = model_cv.fit(X_train, y_train) pred_X=test_df[noPirceColumns] pred_X = pred_X.fillna(0) pred_Y1 = ent.predict(pred_X)
id = test_df.loc[:,'Id'] #数据框:id,预测房价 predDf = pd.DataFrame( { 'Id': id, 'SalePrice': pred_Y1}) predDf.shape predDf.head() #保存结果 predDf.to_csv('E:/AI/Kaggle/HousePrice/answer.csv',index = False )
喜提3389吉利数字