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

使用K-means算法报错:Jupyter中scikit-learn出现'NoneType'无split属性错误

问题:自定义scikit-learn Transformer报错 'NoneType' object has no attribute 'split'

在本地Jupyter Notebook运行自定义聚类相似度Transformer时,出现错误:'NoneType' object has no attribute 'split',但相同代码在Google Colab可正常运行。代码如下:

from sklearn.cluster import KMeans

class ClusterSimilarity(BaseEstimator, TransformerMixin):
def __init__(self, n_clusters=10, gamma=1.0, random_state=None):
    self.n_clusters = n_clusters
    self.gamma = gamma
    self.random_state = random_state

def fit(self, X, y=None, sample_weight=None):
    self.kmeans_ = KMeans(self.n_clusters, random_state=self.random_state)
    self.kmeans_.fit(X, sample_weight=sample_weight)
    return self  # always return self!

def transform(self, X):
    return rbf_kernel(X, self.kmeans_.cluster_centers_, gamma=self.gamma)

def get_feature_names_out(self, names=None):
    return [f"Cluster {i} similarity" for i in range(self.n_clusters)]


cluster_simil = ClusterSimilarity(n_clusters=10, gamma=1, random_state=42)
similarities = cluster_simil.fit_transform(housing_tr[["latitude", "longitude"]],
                                       sample_weight=housing_labels)

解决方案

1. 补全缺失的导入语句

代码中未显式导入BaseEstimator、TransformerMixin和rbf_kernel,虽然Colab环境可能隐式依赖,但本地环境可能因缺失导入引发隐式错误。添加以下导入:

from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.metrics.pairwise import rbf_kernel

2. 适配旧版scikit-learn的get_feature_names_out方法

scikit-learn 0.24版本之前,get_feature_names_out的API规范尚未完全统一,当传入names=None时,内部逻辑可能尝试对None调用split方法导致报错。修改方法以显式处理None情况:

def get_feature_names_out(self, names=None):
    # 处理names为None的情况,避免内部调用split报错
    if names is None:
        names = []
    return [f"Cluster {i} similarity" for i in range(self.n_clusters)]

3. 统一scikit-learn版本

Google Colab通常使用较新版本的scikit-learn(1.0+),而本地版本可能过低。先查看本地版本:

import sklearn
print(sklearn.__version__)

若版本低于0.24,执行升级命令:

pip install --upgrade scikit-learn

内容的提问来源于stack exchange,提问作者Harrsion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:06:04