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

感知器训练启动时出现错误,请求排查方向指导

问题核心原因

scikit-learn的感知器模型要求输入的特征必须是数值类型,但你的数据集中存在字符串形式的分类特征(比如报错里的Local-gov),这些字符串无法自动转换为浮点数,导致了ValueError。你提到的数据类型里的object类型列,就是存储这些字符串的地方。

排查与解决步骤

1. 定位含字符串的特征列

先找出数据集中所有的object类型列,确认哪些是分类特征:

import pandas as pd

# 假设你的数据集加载后存在df变量中
categorical_cols = df.select_dtypes(include=['object']).columns.tolist()
print("含字符串的特征列:", categorical_cols)

2. 处理分类特征

针对分类特征,有两种常用的数值化方式,根据特征类型选择:

方式一:独热编码(适合无顺序的分类,如职业、行业类型)

对于像Local-gov这种没有内在顺序的名义分类,推荐使用独热编码,避免模型错误地认为分类之间有大小关系:

# 使用pandas的get_dummies进行独热编码
df_encoded = pd.get_dummies(df, columns=categorical_cols, drop_first=True)

# 或者使用scikit-learn的OneHotEncoder(更适合后续构建流水线,避免数据泄露)
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

# 定义转换器:只对分类列进行独热编码
preprocessor = ColumnTransformer(
    transformers=[
        ('cat', OneHotEncoder(sparse_output=False, drop='first'), categorical_cols)
    ],
    remainder='passthrough'  # 保留其他数值列
)

方式二:标签编码(适合有顺序的分类,如学历:小学<中学<大学)

如果分类特征存在明确的顺序关系,可以用标签编码:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
for col in categorical_cols:
    df[col] = le.fit_transform(df[col])

3. 避免数据泄露的关键注意事项

必须先拆分训练集和测试集,再对训练集拟合编码器,用同一编码器转换测试集,不能先对整个数据集编码再拆分:

from sklearn.model_selection import train_test_split

# 先拆分数据集
X = df.drop('目标列名', axis=1)
y = df['目标列名']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=0)

# 再用训练集拟合编码器
preprocessor.fit(X_train)
X_train_encoded = preprocessor.transform(X_train)
X_test_encoded = preprocessor.transform(X_test)

# 此时再训练感知器
ppn = Perceptron(max_iter=40, eta0=0.1, random_state=0)
ppn.fit(X_train_encoded, y_train)

4. 验证处理后的数据

转换完成后,检查所有特征是否都是数值类型:

# 如果用pandas的get_dummies,直接看dtypes
print(df_encoded.dtypes)

# 如果用scikit-learn的转换器,检查数组类型
print(X_train_encoded.dtype)
额外说明
  • 你遇到的“视图与副本”问题和当前报错无关,无需在此处纠结。
  • 每次报错的字符串不同,是因为模型在遍历特征列时,遇到的第一个无法转换的字符串会触发错误,而不同运行可能因为数据顺序(如果没设置random_state)导致第一个遇到的字符串不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:23:12