Jupyter Notebook编译成功无输出:MNIST数据集分类问题求助
问题排查与解决
1. 无输出的核心原因:未调用定义的函数
你编写了mnistDTC()函数,但代码中没有执行该函数的语句。在Jupyter Notebook里,仅定义函数不会自动触发执行,必须显式调用才能运行内部逻辑。在代码末尾添加:
mnistDTC()
重新运行后就能看到输出。
2. 数据读取的明显错误
你的代码两次读取的都是标签文件:
df = pd.read_csv('./data/mnist_target.csv', index_col = 0) target = pd.read_csv('data/mnist_target.csv', index_col = 0)
df应该对应特征数据集,target对应标签数据集,你把两者都读成了标签文件,会导致后续模型训练完全失效。请修正特征文件的路径,比如:
df = pd.read_csv('./data/mnist_features.csv', index_col = 0) # 替换为你的特征文件名 target = pd.read_csv('./data/mnist_target.csv', index_col = 0)
3. 关于数据集规模的疑问
MNIST数据集(70000样本、单样本784特征)对决策树来说确实不算小,但不会直接导致“无输出”,只会延长训练时间。如果调用函数后长时间无响应,可以做以下优化:
- 先取小批量数据测试逻辑,比如
df = df.sample(1000),target = target.loc[df.index] - 限制决策树深度,比如设置
tree_clf = DecisionTreeClassifier(max_depth=10),减少训练耗时
修正后的完整代码示例
import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from joblib import dump def mnistDTC(): # 修正特征文件路径 df = pd.read_csv('./data/mnist_features.csv', index_col = 0) target = pd.read_csv('./data/mnist_target.csv', index_col = 0) # 可选:限制树深度加快训练 tree_clf = DecisionTreeClassifier(max_depth=10) df_train, df_test, target_train, target_test = train_test_split(df, target, test_size=0.2, random_state=0) tree_clf.fit(df_train, target_train) predictions = tree_clf.predict(df_test) print(predictions[:10]) # 调用函数执行 mnistDTC()
内容的提问来源于stack exchange,提问作者SplizZPy
相关产品推荐
相关产品推荐

