如果你没有听过Kaggle,那你一定要来了解一下它:
Kaggle 为全球顶尖数据科学家举办竞赛活动。那些有着科学难题的公司(比如 NASA)可以通过网络将数据和问题提交给 Kaggle,任何顶尖科学家都可以提交问题解决方案,网站会通过对每位科学家的贡献进行排名。到目前为止,在一场竞赛中至少有 30000 人提交至少一种模型。
简单来说就是一个数据科学竞赛网站,非常有趣。接下来让我们一起学习机器学习吧。
这次的任务是:Titanic-Kaggle
我们的重点是学习机器学习的过程,所以这次不涉及具体的算法实现,而是使用第三方库来实现算法,这里推荐scikit-learn,它提供了许多工具和模型,使用起来非常方便。另外我们还是用了Pandas库( pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包
)来提高效率,还有matplotlib
和 Seaborn
,通过图标直观的观察数据。
我们先写一段代码来看看原始数据吧。
import pandas as pd
input_df = pd.read_csv('data/raw/train.csv', header=0)
submit_df = pd.read_csv('data/raw/test.csv', header=0)
# 合并他们
df = pd.concat([input_df, submit_df])
# 重建index
df.reset_index(inplace=True)
# 删除reset_index()产生的index column
df.drop('index', axis=1, inplace=True)
print df.shape[1], "columns:", df.columns.values
print "Row count:", df.shape[0]
输出如下,共有1309条数据,12个feature:
12 columns: ['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch'
'Ticket' 'Fare' 'Cabin' 'Embarked']
Row count: 1309
拿到数据第一步是观察一下数据,看看是否有缺失数据,分析一下相关特征等等。
def observe(df):
print "column: ", df.shape[1]
columns = df.columns
for i in columns:
print i, "missing ",pd.isnull(df[i]).sum(), " type:", df[i].dtypes
---
column: 12
Age missing 263 type: float64
Cabin missing 1014 type: object
Embarked missing 2 type: object
Fare missing 1 type: float64
Name missing 0 type: object
Parch missing 0 type: int64
PassengerId missing 0 type: int64
Pclass missing 0 type: int64
Sex missing 0 type: object
SibSp missing 0 type: int64
Survived missing 418 type: float64
Ticket missing 0 type: object
可以看到:
test.csv
中的数据本来就是没有Survived的。