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)) 

代码解析:

  1. 数据加载: 使用 pandas 读取 Excel 文件,并删除无关列。
  2. 数据预处理: 将字符串特征映射为数字,并用 0 填充缺失值。
  3. 特征标准化: 使用 preprocessing.scale() 将所有特征标准化为标准正太分布。
  4. KMeans 聚类: 使用 KMeans(n_clusters=2) 创建一个包含 2 个簇的聚类模型,并用 clf.fit(x) 对标准化后的特征数据进行训练。
  5. 预测和准确率计算: 使用训练好的模型 clf.predict() 对每个样本进行预测,并将预测结果与实际结果进行比较,计算准确率。

注意:

  • 该代码使用的是 Titanic 数据集,你需要将代码中的文件路径替换为你实际的数据文件路径。
  • 你可以根据实际情况调整 n_clusters 参数,即聚类簇的数量。
  • 还可以尝试使用其他聚类算法,例如 DBSCAN 或层次聚类,以获得更好的结果。

总结:

该代码展示了使用 Python 的 KMeans 聚类算法对 Titanic 数据集进行分类的示例。通过数据预处理、特征标准化和聚类分析等步骤,可以有效地将数据划分为不同的类别,并评估模型的预测性能。

Python KMeans 聚类算法 Titanic 生存预测代码示例

原文地址: https://www.cveoy.top/t/topic/onQo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录