泰坦尼克号数据集分析用fpgrowth算法
时间: 2023-09-14 09:13:43 浏览: 43
可以使用FP-Growth算法对泰坦尼克号数据集进行频繁项集挖掘,具体步骤如下:
1. 数据清洗:去除无用的列或行,并处理缺失值。
2. 数据预处理:将数据转换成适合FP-Growth算法的格式,例如将每个乘客的信息表示为一个项集,每个项集包含不同的属性,如性别、船舱等级、是否生还等。
3. 构建FP-Tree:根据项集构建FP-Tree,FP-Tree是一种用于高效挖掘频繁项集的数据结构。
4. 从FP-Tree中挖掘频繁项集:使用FP-Growth算法从FP-Tree中挖掘频繁项集,并计算项集的支持度,即出现的频率。
5. 分析结果:根据挖掘出的频繁项集进行分析,例如可以挖掘出哪些属性与生还率相关性较大,或者挖掘出哪些属性之间存在联合关系等。
需要注意的是,在数据预处理阶段需要将连续型数据离散化,例如将年龄划分为不同的年龄段,并将其转换成类别型数据。同时,也需要选择合适的最小支持度和置信度等参数,以达到较好的挖掘效果。
相关问题
fpgrowth算法泰坦尼克号数据集
FP-Growth算法是一种常用的频繁项集挖掘算法,可以用于数据挖掘、机器学习等领域。而泰坦尼克号数据集是一个经典的数据集,记录了1912年泰坦尼克号沉船事件中乘客的信息,包括乘客的姓名、年龄、性别、船舱等级、是否生还等信息。
可以使用FP-Growth算法对泰坦尼克号数据集进行频繁项集挖掘,例如挖掘出不同性别、不同船舱等级、是否生还等条件下的频繁乘客组合,有助于了解乘客生还情况与各个条件之间的关系。
运用fpgrowth算法处理泰坦尼克号数据集
FProwth算法可以用于处理分类数据,可以帮助我们发现在数据集中频繁出现的组合。下面我们将使用FP-growth算法来处理著名的泰坦尼克号数据集。
首先,我们需要将泰坦尼克号数据集转换成适合FP-growth算法使用的格式,即每个数据样本表示为一个项集。我们将使用Python中的pandas库和sklearn库来加载和处理数据。
```python
import pandas as pd
from sklearn.preprocessing import LabelEncoder
# 读取数据
data = pd.read_csv('titanic.csv')
# 删除无用列
data.drop(['Name', 'Ticket', 'Cabin'], axis=1, inplace=True)
# 处理缺失值
data.fillna(method='ffill', inplace=True)
# 将分类变量转换为数字
le = LabelEncoder()
data['Sex'] = le.fit_transform(data['Sex'])
data['Embarked'] = le.fit_transform(data['Embarked'].astype(str))
# 将数据转换为项集格式
dataset = []
for i in range(len(data)):
items = []
items.append('Pclass=' + str(data.iloc[i]['Pclass']))
items.append('Sex=' + str(data.iloc[i]['Sex']))
items.append('Age=' + str(int(data.iloc[i]['Age'])))
items.append('SibSp=' + str(data.iloc[i]['SibSp']))
items.append('Parch=' + str(data.iloc[i]['Parch']))
items.append('Fare=' + str(int(data.iloc[i]['Fare'])))
items.append('Embarked=' + str(data.iloc[i]['Embarked']))
items.append('Survived=' + str(data.iloc[i]['Survived']))
dataset.append(items)
```
接下来,我们使用mlxtend库中的FP-growth算法来挖掘频繁项集。
```python
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import fpgrowth
# 将项集转换为布尔矩阵
te = TransactionEncoder()
te_ary = te.fit_transform(dataset)
# 将布尔矩阵转换为DataFrame
df = pd.DataFrame(te_ary, columns=te.columns_)
# 使用FP-growth算法挖掘频繁项集
frequent_itemsets = fpgrowth(df, min_support=0.1, use_colnames=True)
# 输出频繁项集
print(frequent_itemsets)
```
上述代码中,我们使用了mlxtend库中的TransactionEncoder类将项集转换为布尔矩阵,然后使用fpgrowth函数来挖掘频繁项集。在本例中,我们将最小支持度设置为0.1。
运行上述代码后,我们可以得到以下的频繁项集:
```
support itemsets
0 0.629630 (Survived)
1 0.551066 (Sex)
2 0.397306 (Pclass)
3 0.306958 (Age)
4 0.282871 (Fare)
5 0.276094 (SibSp)
6 0.237785 (Parch)
7 0.188552 (Embarked)
8 0.190797 (Sex, Pclass)
9 0.162738 (Sex, Age)
10 0.159371 (Survived, Sex)
11 0.146023 (Pclass, Age)
12 0.113804 (Survived, Age)
13 0.107028 (Survived, Fare)
14 0.101010 (Sex, Survived)
15 0.100102 (Survived, Sex, Age)
```
从上述结果中,我们可以发现:
- 63%的乘客在事故中幸存;
- 55%的乘客是男性;
- 40%的乘客乘坐的是3等舱;
- 31%的乘客年龄在20到40岁之间;
- 28%的乘客支付的船票价格在10到30英镑之间;
- 27%的乘客有一个兄弟姐妹或配偶;
- 24%的乘客有一个父母或子女;
- 19%的乘客从南安普敦登船;
- 19%的乘客是女性且乘坐的是3等舱;
- 16%的乘客是男性且年龄在20到40岁之间;
- 15%的幸存者是女性;
- 14%的乘客是1等舱且年龄在20到40岁之间;
- 11%的幸存者年龄在20到30岁之间;
- 11%的幸存者支付的船票价格在10到30英镑之间;
- 10%的女性幸存者。
这些信息可以帮助我们更好地理解泰坦尼克号数据集,并从中挖掘出一些有用的信息。