量化投资学习笔记23——支持向量机:实操,泰坦尼克号乘客生还机会预测

用刚学的支持向量机来解决一下泰坦尼克号问题。
数据的载入,清洗完全跟之前的一样,直接复制粘贴。从建模开始。
代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 建模,使用SVM模型
# 划分训练集和测试集
predictors = ['Pclass', 'Sex', 'Age', 'Family', 'Embarked', 'Cabin']
x = train_data[predictors]
y = train_data["Survived"]
train_x, train_y, x_label, y_label = train_test_split(x, y, random_state = 1, train_size = 0.6, test_size = 0.4)
print("训练集大小:", train_x.shape)
print("测试集大小:", train_y.shape)
# 训练SVM分类器
classifier = svm.SVC(C = 2, kernel = "rbf", gamma = 10, decision_function_shape = "ovr")
classifier.fit(train_x, x_label)
# 计算分类准确率
print("建模的结果")
print("训练集:", classifier.score(train_x, x_label))
print("测试集:", classifier.score(train_y, y_label))

结果
建模的结果
训练集: 0.9569288389513109
测试集: 0.6190476190476191
在测试集上效果不好啊。换个核函数试试。
classifier = svm.SVC(C = 2, kernel = “linear”, gamma = 10, decision_function_shape = “ovr”)
看看结果
建模的结果
训练集: 0.8108614232209738
测试集: 0.7507002801120448
换成线性核函数,好了很多。输出到结果文件,提交。

1
2
3
4
5
6
# 预测,输出结果
pred = classifier.predict(test_data[predictors])
print(pred)
output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': pred})
output.to_csv("submit04.csv", index = False)
print("结果输出完毕!")


跟用逻辑回归一模一样?
我用一个测试数据提交了一下,所有结果均为0。

看来提交是正常的。OK,进行下一个算法的学习吧。
本文代码
https://github.com/zwdnet/MyQuant/blob/master/titanic/submit04.py

我发文章的四个地方,欢迎大家在朋友圈等地方分享,欢迎点“在看”。
我的个人博客地址:https://zwdnet.github.io
我的知乎文章地址: https://www.zhihu.com/people/zhao-you-min/posts
我的博客园博客地址: https://www.cnblogs.com/zwdnet/
我的微信个人订阅号:赵瑜敏的口腔医学学习园地

欢迎打赏!感谢支持!