kaggle的房价预测居然被刷到了0.0?

kaggle

Kaggle公司是由联合创始人兼首席执行官AnthonyGoldbloom2010年在墨尔本创立的,主要是为开发商和数据科学家提供举办机器学习竞赛托管数据库编写分享代码的平台。现在kaggle已经成为机器学习爱好者和学习者的必逛网站,上面有许多非常优秀的kernel文章,能够帮助机器学习和数据分析学习者快速成长。

房价预测

房价预测(house prices)这个比赛已经成为kaggle上新人赛中最火的一个比赛了,目前已经有5700支队伍参加了这个比赛。足以体现出这个比赛的吸引力和竞争力,参加这个比赛主要需要做两件事特征工程构建一个回归模型来预测房价

  • 数据介绍

整个数据一个包含2919条数据,其中包含了1460条训练数据1459条测试数据,训练数据用于训练模型,测试数据用来评估模型的效果。每条数据包含了81个特征,特征中包含字符类型特征数值类型特征,而且特征中还包含了很多的空值和一些异常值,所以从另一方面也体现出了这个比赛的难度。

  • 评估标准

我们需要利用训练数据来构建回归模型,然后利用测试数据中的80个特征来预测对应的房价。评估标准采用的是RMSE(Root-Mean-Squared-Error)在预测房价与真实房价的log对数,计算公式如下

kaggle的房价预测居然被刷到了0.0?_第1张图片当提交预测结果的时候,系统会根据这个评估指标来计算得分

 

排名

最近在kaggle上突然发现,多了一批得分都为0.0团队,抱着学习的心态就去了解了一些,想看看这些大神究竟是怎么做到的

kaggle的房价预测居然被刷到了0.0?_第2张图片

 

代码

最终在kaggle的上找到了一篇获取了0.0成绩的文章,能够获得这个成绩的原因原来是因为数据泄露,接下来我分享一下相关的代码

泄露数据下载地址:https://www.kaggle.com/prevek18/ames-housing-dataset

import pandas as pd
import tqdm
 
#读取泄露的数据
data = pd.read_csv("../data/AmesHousing.csv")
data.drop(["PID"],axis=1,inplace=True)
 
#读取官方提供的数据
train_data = pd.read_csv("../data/train.csv")
data.columns = train_data.columns
test_data = pd.read_csv("../data/test.csv")
submission_data = pd.read_csv("../data/sample_submission.csv")
 
print("data:{},train:{},test:{}".format(data.shape,train_data.shape,test_data.shape))
 
#删除丢失的数据
miss = test_data.isnull().sum()
miss = miss[miss > 0]
data.drop(miss.index,axis=1,inplace=True)
data.drop(["Electrical"],axis=1,inplace=True)
 
test_data.dropna(axis=1,inplace=True)
test_data.drop(["Electrical"],axis=1,inplace=True)
 
 
for i in  tqdm.trange(0, len(test_data)):
    for j in range(0, len(data)):
        for k in range(1, len(test_data.columns)):
            if test_data.iloc[i,k] == data.iloc[j,k]:
                continue
            else:
                break
        else:
            submission_data.iloc[i, 1] = data.iloc[j, -1]
            break
 
submission_data.to_csv('submission.csv', index=False)

总结

上面的代码只能用于娱乐,并不建议大家学习。如果真正想要在这个比赛中获得一个好的成绩,还是需要好好学习,搞好数据分析,做好特征工程

你可能感兴趣的:(机器学习)