You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Scikit-learn KMeans处理外部生成的相关矩阵

解决Scikit-learn KMeans聚类时的字符串转浮点错误

你的错误是因为KMeans只能处理纯数值数据,而CSV里的ABBV大概率是行/列的标签(比如股票代码),属于非特征的标识信息,必须先和数值特征分离。以下是具体解决步骤:

  • 读取CSV并保留标签:用Pandas读取文件时,把含字符串的列设为索引,避免混入特征数据:

    import pandas as pd
    # 假设第一列是字符串标签,设置为行索引
    df = pd.read_csv('你的相关矩阵文件.csv', index_col=0)
    
  • 分离数值特征与标签:提取纯数值的特征矩阵,同时保存标签用于后续对应结果:

    # 提取数值数据
    feature_data = df.values
    # 保存原始标签(比如ABBV这类标识)
    item_labels = df.index.tolist()
    
  • 运行KMeans聚类:用纯数值数据训练模型:

    from sklearn.cluster import KMeans
    # 根据需求设置聚类数,这里以3为例
    kmeans = KMeans(n_clusters=3, random_state=42)
    cluster_labels = kmeans.fit_predict(feature_data)
    
  • 关联聚类结果与原始标签:把聚类结果和对应的字符串标签整合,方便查看:

    result_df = pd.DataFrame({
        'Item': item_labels,
        'Cluster': cluster_labels
    })
    print(result_df)
    

如果CSV中除了行/列标签外,还有其他字符串列混入特征中,可以用以下方式过滤出纯数值特征:

# 只保留数值类型的列
numeric_df = df.select_dtypes(include=['float64', 'int64'])
# 再提取特征数据
feature_data = numeric_df.values

内容的提问来源于stack exchange,提问作者Stumbling Through Data Science

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:52:07