用两个模型分析Titanic数据集

用Random Forest 和 Logistic Regression 两个模型来分析Titanic数据集

Random Forest

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
# 使用决策树,随机森林模型
from sklearn.ensemble import RandomForestClassifier

# 训练数据
train_data = pd.read_csv("Input/titanic/train.csv")
# print(train_data.head().isnull().sum()) # 检测是否有缺失数据

# 测试数据
test_data = pd.read_csv("Input/titanic/test.csv")
# test_data.head()

# 选出男女的存活人数
women = train_data.loc[train_data.Sex == 'female']["Survived"]
men = train_data.loc[train_data.Sex == 'male']["Survived"]

# print(men)
rate_men = sum(men)/len(men) # 计算男人存活的概率
# print(women)
rate_women = sum(women)/len(women) # 计算女人存活的概率

# print("% of women who survived:", rate_women)
# print("% of men who survived:", rate_men)

y = train_data["Survived"]
# print(y)

# 这里有四个feature
features = ["Pclass", "Sex", "SibSp", "Parch"]

# 使用on hot encode方法,将数据中的文字转化为数字
# print(train_data[features].head(10))
X = pd.get_dummies(train_data[features])
print(X.head(10))

# 获得测试数据中四个feature的数据
X_test = pd.get_dummies(test_data[features])

# 开始训练模型
# 初始化模型的超参数
model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
"""
n_estimators:这个参数指定了随机森林中决策树的数量(默认值为100)。更多的决策树可以提高模型的稳定性和准确性,但同时也会增加计算开销。

max_depth:这个参数指定了每棵决策树的最大深度(默认值为None)。限制决策树的深度可以防止过拟合,但如果设置得太小,模型可能无法捕捉到复杂的关系。

random_state:这个参数控制随机性的种子(默认值为None)。设置random_state可以使得每次运行模型时得到相同的结果,便于结果的复现性。
"""

# 四个features
model.fit(X, y)

# 模型训练完毕,预测测试数据中的结果
predictions = model.predict(X_test)

# 输出结果
output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': predictions})
output.to_csv('submission_randomforest.csv', index=False)
print("Your submission was successfully saved!")


Logic Regression(softmax)

说说softmax Regression和Logic Regression 的区别

逻辑回归是一种二分类模型,而Softmax回归是一种多分类模型。当类别数为2时,Softmax回归就是逻辑回归。

Softmax回归(Softmax Regression)和逻辑回归(Logistic Regression)是在某种程度上相似,但并不完全相同。

逻辑回归是一种用于解决二分类问题的线性模型。它使用sigmoid函数将输入映射到0和1之间的概率值,并根据设定的阈值进行分类。逻辑回归可以看作是一种特殊情况下的Softmax回归,当只有两个类别时,Softmax回归即为逻辑回归。

而Softmax回归是一种用于多分类问题的模型。它通过对输入样本进行线性变换,然后使用Softmax函数将线性变换后的值转换为表示各个类别概率的向量。Softmax函数将每个类别的概率归一化,使其总和为1。然后根据最高概率所对应的类别进行分类。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
# 使用逻辑回归模型
from sklearn.linear_model import LogisticRegression

# 训练数据
train_data = pd.read_csv("Input/titanic/train.csv")
# print(train_data.head().isnull().sum()) # 检测是否有缺失数据

# 测试数据
test_data = pd.read_csv("Input/titanic/test.csv")
# test_data.head()

# 选出男女的存活人数
women = train_data.loc[train_data.Sex == 'female']["Survived"]
men = train_data.loc[train_data.Sex == 'male']["Survived"]

rate_men = sum(men) / len(men) # 计算男人存活的概率
rate_women = sum(women) / len(women) # 计算女人存活的概率

y = train_data["Survived"]
features = ["Pclass", "Sex", "SibSp", "Parch"]

X = pd.get_dummies(train_data[features])
X_test = pd.get_dummies(test_data[features])

# 初始化逻辑回归模型
model = LogisticRegression()

model.fit(X, y)

predictions = model.predict(X_test)

output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': predictions})
output.to_csv('submission_logic.csv', index=False)
print("Your submission was successfully saved!")


用两个模型分析Titanic数据集
https://blog.xsaistudio.cn/Deep-learning/2023/05/14/deep learning/stage/
作者
YWM
发布于
2023年5月14日
许可协议