【House Prices】具体实现

发布时间 2023-10-09 20:08:43作者: byxiaobai

第一步,将数据集仅保留十个关键变量,其他变量删掉。

# 选择要保留的列
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吉利数字