菜鸟的Kaggle之路(2) Titanic问题的简单模型
2018-02-07 10:31
274 查看
今天,我希望第一次用python建一个回归二分类的模型。在网上寻找资料以后,我决定先使用sklearn库
先进行数据处理,由上节的处理可知Age项需要填充,而同时Sex项的male与female需要转换成可以计算的数字
#数据处理:Sex转换为可操作的0和1
print(data_train["Sex"].unique())
data_train.loc[data_train["Sex"] == "male", "Sex"] = 1
data_train.loc[data_train["Sex"] == "female", "Sex"] = 0
print(data_train["Sex"].unique())</pre>
我们可以直观地看到Sex项切换完毕。
#数据处理:填充Age
data_train["Age"] = data_train["Age"].fillna(data_train["Age"].mean())
data_train.info()
我们先简单地添加均值进入模型,可以标记一下,这是可以优化的一个点。
开始先使用线性回归模型
0.7845 emmmm,应该还可以更好,或许是因为只是用了较少的特征?
那么接下来我们无脑的将有可能影响的量全部扔进去
emm... 0.7856,只增加了一点点,我开始对这三个数据的存留问题开始了思考
但我们现在再建立一个逻辑回归
第一个是只使用四个特征,第二个是使用七个特征,逻辑回归的表现果然要比线性回归要强。调参的事情,这个阶段先暂时不做了。
于是今天的简单模型就告一段落了,继续熟悉着各个组件,明天开始,我就要正式地实战kaggle了(建立一个复杂的模型)
先进行数据处理,由上节的处理可知Age项需要填充,而同时Sex项的male与female需要转换成可以计算的数字
#数据处理:Sex转换为可操作的0和1
print(data_train["Sex"].unique())
data_train.loc[data_train["Sex"] == "male", "Sex"] = 1
data_train.loc[data_train["Sex"] == "female", "Sex"] = 0
print(data_train["Sex"].unique())</pre>
我们可以直观地看到Sex项切换完毕。
#数据处理:填充Age
data_train["Age"] = data_train["Age"].fillna(data_train["Age"].mean())
data_train.info()
我们先简单地添加均值进入模型,可以标记一下,这是可以优化的一个点。
开始先使用线性回归模型
from sklearn.linear_model import LinearRegression from sklearn.cross_validation import KFold predictors = ["Pclass", "Sex", "Age", "Fare"] #predictors = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked"] alg = LinearRegression() kf = KFold(data_train.shape[0], n_folds = 3, random_state = 1) predictions = [] for train, test in kf: train_predictors = (data_train[predictors].iloc[train,:]) train_target = data_train["Survived"].iloc[train] alg.fit(train_predictors, train_target) test_predictions = alg.predict(data_train[predictors].iloc[test,:]) predictions.append(test_predictions) predictions = np.concatenate(predictions, axis=0) predictions[predictions > .5] = 1 predictions[predictions <=.5] = 0 accuracy = sum(predictions == data_train["Survived"]) / len(predictions) print(accuracy)
0.7845 emmmm,应该还可以更好,或许是因为只是用了较少的特征?
那么接下来我们无脑的将有可能影响的量全部扔进去
#Embarked也进行数据处理扔进去吧 data_train["Embarked"].unique() data_train["Embarked"] = data_train["Embarked"].fillna('S') data_train.loc[data_train["Embarked"] == "S", "Embarked"] = -1 data_train.loc[data_train["Embarked"] == "C", "Embarked"] = 0 data_train.loc[data_train["Embarked"] == "Q", "Embarked"] = 1
emm... 0.7856,只增加了一点点,我开始对这三个数据的存留问题开始了思考
但我们现在再建立一个逻辑回归
from sklearn import cross_validation from sklearn.linear_model import LogisticRegression alg = LogisticRegression(random_state=1) scores = cross_validation.cross_val_score(alg, data_train[predictors], data_train["Survived"], cv=3) print(scores.mean())
第一个是只使用四个特征,第二个是使用七个特征,逻辑回归的表现果然要比线性回归要强。调参的事情,这个阶段先暂时不做了。
于是今天的简单模型就告一段落了,继续熟悉着各个组件,明天开始,我就要正式地实战kaggle了(建立一个复杂的模型)
相关文章推荐
- 菜鸟的Kaggle之路(1) Titanic问题的初步分析
- 菜鸟的Kaggle之路(3) Titanic问题的首次解决
- 简单的前向传播模型实现(四层神经网络),菜鸟用于交流
- Tensorflow简单神经网络解决Kaggle比赛Titanic问题
- HLG 1038 菜鸟和大牛(数塔问题 简单DP)
- ubuntu 14.04 glade 联编,(超简单的模型),哪些问题,怎么解决?
- 每个人都该知道的5个关于组合模型的简单问题
- 菜鸟发问,请各位不吝赐教啊! 关于一个简单的程序的理解问题
- 简单感知器模型解决简单真值表问题
- 简单感知器模型解决简单真值表问题
- PHP菜鸟手记——如何解决无法装载动态链接库的问题
- 字符串的简单包含问题,主要看看转换问题的思路
- 读书-算法《程序设计导引及在线实践》-简单计算题5:装箱问题
- 简单的cpu飙高问题定位脚本
- 和菜鸟一起学android4.0.3源码之硬件gps简单移植
- 架构设计:系统存储(10)——MySQL简单主从方案及暴露的问题
- Objective-C 的 self 和 super 详解 (用简单程序说明问题)
- 机器学习LR模型,在面试中经常被问到的问题
- 【菜鸟学安卓】-Intent 初探二 有关界面的转换问题
- iOS开发UI基础—21使用嵌套模型完成的一个简单汽车图标展示程序