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

神经网络分类器代码无报错但print语句不输出求助

问题分析与解决方案

核心问题定位

你的代码无报错但无输出,核心原因是标签与特征的拆分逻辑错误,导致模型训练或评估环节出现隐性阻塞,而非单纯的网络结构复杂问题:

  • 你先对原始特征和标签做了一次train_test_split,之后又单独对标签和编码后的标签做了第二次train_test_split,两次拆分的样本对应关系完全错位,训练时特征和标签不匹配,模型可能陷入无效训练甚至卡在fit环节无法结束。
  • 重复的编码操作(先fit_transform所有标签,再transform拆分后的训练标签)冗余且进一步加剧了数据不匹配问题。

修正步骤

1. 统一数据拆分流程

先完成所有预处理(编码、标准化),再将特征与标签配对拆分,确保样本对应关系一致:

import pandas as pd
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import LabelEncoder

# 加载数据
data = pd.read_csv("Wpc50.dat", sep='\s+', header=None, dtype=float)
species = pd.read_csv("Names.txt", header=None, names=["species"])

# 标签编码:先统一编码所有物种标签
encoder = LabelEncoder()
species_encoded = encoder.fit_transform(species.values.ravel())
encoder.handle_unknown = 'ignore'

# 特征与标签配对拆分(仅做一次拆分)
data_train, data_test, species_train_encoded, species_test_encoded = train_test_split(
    data, species_encoded, test_size=0.25, random_state=0
)

# 特征标准化
scaler = StandardScaler()
data_train_normalized = scaler.fit_transform(data_train)
data_test_normalized = scaler.transform(data_test)

2. 调整神经网络配置并添加训练日志

  • 先尝试简化网络结构,比如用单隐藏层降低训练复杂度
  • 添加verbose=True参数,实时查看训练迭代过程,确认模型是否在收敛
# 创建并训练神经网络(简化结构+训练日志)
mlp = MLPClassifier(
    hidden_layer_sizes=(10,),  # 先尝试单隐藏层
    max_iter=2000,  # 适当增加迭代次数
    random_state=0,
    verbose=True  # 输出训练过程
)
mlp.fit(data_train_normalized, species_train_encoded)

# 评估并输出结果
score = mlp.score(data_test_normalized, species_test_encoded)
print("Accuracy:", score)

额外排查点

如果调整后仍无输出,检查以下内容:

  • 确认Wpc50.dat和Names.txt文件路径正确,且样本量匹配(特征行数与标签行数一致)
  • 查看终端是否有MLPClassifier的训练迭代日志,如果长时间无日志输出,可能是样本量过大导致训练缓慢,可尝试先取小批量数据测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:30:44