Python KMeans 聚类算法 Titanic 生存预测代码示例
Python KMeans 聚类算法 Titanic 生存预测代码示例
本代码使用 Python 的 KMeans 聚类算法对 Titanic 数据集进行分类,并计算模型的预测准确率。代码中包括数据预处理、特征标准化和聚类分析等步骤。
import numpy as np
from sklearn.cluster import KMeans
from sklearn import preprocessing
import pandas as pd
def test1():
# 加载数据
df = pd.read_excel('/data/workspace/myshixun/step5/titanic.xls')
df.drop(['body', 'name', 'ticket'], 1, inplace=True)
df.fillna(0, inplace=True) # 把NaN替换为0
# 把字符串映射为数字,例如{'female':1, 'male':0}
df_map = {}
cols = df.columns.values
for col in cols:
if df[col].dtype != np.int64 and df[col].dtype != np.float64:
temp = {}
x = 0
for ele in set(df[col].values.tolist()):
if ele not in temp:
temp[ele] = x
x += 1
df_map[df[col].name] = temp
df[col] = list(map(lambda val: temp[val], df[col]))
########## Begin ##########
# 将每一列特征标准化为标准正太分布
x = np.array(df.drop(['survived'], 1).astype(float))
x = preprocessing.scale(x)
# 使用KMeans算法进行聚类
clf = KMeans(n_clusters=2)
clf.fit(x)
########## end ##########
# 计算分组准确率
y = np.array(df['survived'])
correct = 0
for i in range(len(x)):
predict_data = np.array(x[i].astype(float))
predict_data = predict_data.reshape(-1, len(predict_data))
predict = clf.predict(predict_data)
if predict[0] == y[i]:
correct += 1
return (correct * 1.0 / len(x))
代码解析:
- 数据加载: 使用 pandas 读取 Excel 文件,并删除无关列。
- 数据预处理: 将字符串特征映射为数字,并用 0 填充缺失值。
- 特征标准化: 使用
preprocessing.scale()将所有特征标准化为标准正太分布。 - KMeans 聚类: 使用
KMeans(n_clusters=2)创建一个包含 2 个簇的聚类模型,并用clf.fit(x)对标准化后的特征数据进行训练。 - 预测和准确率计算: 使用训练好的模型
clf.predict()对每个样本进行预测,并将预测结果与实际结果进行比较,计算准确率。
注意:
- 该代码使用的是 Titanic 数据集,你需要将代码中的文件路径替换为你实际的数据文件路径。
- 你可以根据实际情况调整
n_clusters参数,即聚类簇的数量。 - 还可以尝试使用其他聚类算法,例如 DBSCAN 或层次聚类,以获得更好的结果。
总结:
该代码展示了使用 Python 的 KMeans 聚类算法对 Titanic 数据集进行分类的示例。通过数据预处理、特征标准化和聚类分析等步骤,可以有效地将数据划分为不同的类别,并评估模型的预测性能。
原文地址: https://www.cveoy.top/t/topic/onQo 著作权归作者所有。请勿转载和采集!