泰坦尼克号生存预测(三)-- 预测模型

持续更新中。。。

7. 预测模型

首先将train分为训练集和测试集:

# 将目标变量和特征分开
X_train = train.drop('Survived',axis=1)
y_train = train['Survived']

# 将train分为训练集和测试集
# 用sklearn.model_selection 里的train_test_split
import sklearn
from sklearn.model_selection import train_test_split

X_train,x_test,Y_train,y_test = train_test_split(X_train,y_train,test_size=0.3,random_state=101)
# 待预测的数据集
X_test = test.copy()

下面开始使用不同的算法训练模型:

a. Logistic Regression

Logistic Regression用于二分类任务中,它与传统线性回归模型相比,多了一步将线性回归输出值映射到Sigmoid函数(即形似S的函数,代表有对率函数)中,可以定义大于0.5的值归为1(正)类,小于0.5的值归为0(负)类。LR过程就是找出分类回归系数W的过程。

优点是:计算代价不高,容易理解和实现;缺点是:容易欠拟合,分类精度可能不高。

其中Z为线性回归输出:

通过梯度下降算法找出代价函数的最小值。

下面使用sklearn.linear_model中的LogisticRegression训练模型并预测:

from sklearn.linear_model import LogisticRegression

LR=LogisticRegression()
LR.fit(X_train,Y_train)
Y_pred1 = LR.predict(x_test)
LR_score = round(LR.score(x_test,y_test)*100,2)
LR_score

77.99

# 用classification_report查看查准率precision、召回率recall、F1 score
from sklearn.metrics import classification_report,confusion_matrix
print(classification_report(y_test,Y_pred1))

# 混淆矩阵confusion_matrix
cm = pd.DataFrame(confusion_matrix(y_test,Y_pred1),['Actual: No','Actual: Survived'],['Predict: No','Predict: Survived'])
print(cm)
             precision    recall  f1-score   support

          0       0.78      0.86      0.82       154
          1       0.78      0.68      0.72       114

avg / total       0.78      0.78      0.78       268

                  Predict: No  Predict: Survived
Actual: No                132                 22
Actual: Survived           37                 77
# 查看各特征在logistic regression模型中的系数
coeff_df = pd.DataFrame(X_train.columns)
coeff_df.columns = ['Feature']
# 系数
coeff_df['Correlation'] = pd.Series(LR.coef_[0])
coeff_df.sort_values(by='Correlation', ascending=False)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值