加载sklearn新闻数据集出错 fetch_20newsgroups() HTTPError: HTTP Error 403: Forbidden解决方案

  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。

  本文主要介绍了加载sklearn新闻数据集出错 fetch_20newsgroups() HTTPError: HTTP Error 403: Forbidden解决方案,希望能对使用sklearn的同学们有所帮助。运行个人原创代码(注:不需要变更网络环境) 后,下载速度飞快,并且成功加载数据,如下图所示:

在这里插入图片描述

1. 问题描述

  今天实习生在验证一个基础模型的效果,挑选了sklearn新闻数据集作为benchmark,使用sklearn代码加载20新闻数据集出现了HTTPError: HTTP Error 403,具体报错信息如下图所示:

Traceback (most recent call last): File "F:\xuexixiaozuxunlian\yuanweihua.py", line 36, in <module> knn.fit(X_train, y_train) File "C:\Users\刘书忻\.conda\envs\xuexixiaozuxunlian\Lib\site-packages\sklearn\base.py", line 1389, in wrapper return fit_method(estimator, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\刘书忻\.conda\envs\xuexixiaozuxunlian\Lib\site-packages\sklearn\neighbors\_classification.py", line 239, in fit return self._fit(X, y) ^^^^^^^^^^^^^^^ File "C:\Users\刘书忻\.conda\envs\xuexixiaozuxunlian\Lib\site-packages\sklearn\neighbors\_base.py", line 478, in _fit X, y = validate_data( ^^^^^^^^^^^^^^ File "C:\Users\刘书忻\.conda\envs\xuexixiaozuxunlian\Lib\site-packages\sklearn\utils\validation.py", line 2961, in validate_data X, y = check_X_y(X, y, **check_params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\刘书忻\.conda\envs\xuexixiaozuxunlian\Lib\site-packages\sklearn\utils\validation.py", line 1370, in check_X_y X = check_array( ^^^^^^^^^^^^ File "C:\Users\刘书忻\.conda\envs\xuexixiaozuxunlian\Lib\site-packages\sklearn\utils\validation.py", line 1055, in check_array array = _asarray_with_order(array, order=order, dtype=dtype, xp=xp) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\刘书忻\.conda\envs\xuexixiaozuxunlian\Lib\site-packages\sklearn\utils\_array_api.py", line 839, in _asarray_with_order array = numpy.asarray(array, order=order, dtype=dtype) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\刘书忻\.conda\envs\xuexixiaozuxunlian\Lib\site-packages\pandas\core\generic.py", line 2153, in __array__ arr = np.asarray(values, dtype=dtype) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: could not convert string to float: 'setosa' 给出这些报错提示是为什么
最新发布
03-12
根据您提供的错误信息,问题出在将数据传递给 `KNeighborsClassifier` 进行训练时,出现了字符串和浮点数之间的转换错误。具体来说,`'setosa'` 是一个字符串,而 KNN 分类器期望的是数值类型的输入。 从知识库的内容来看,在 Day 1 中,数据加载部分有如下代码: ```python df['target'] = iris.target # 添加类别标签(0:setosa, 1:versicolor, 2:virginica) ``` 这里正确地使用了 `iris.target`,它是一个整数数组(0, 1, 2 表示不同的类别)。但在后续的数据处理或保存过程中,可能存在某些地方误将类别名称(如 `'setosa'`)直接写入到了目标列中。 要解决这个问题,请检查您的数据处理过程,确保 `X_train` 和 `y_train` 都是正确的格式。以下是几个建议: 1. **确认数据分割前的目标变量是整数**: 在进行 `train_test_split` 前,再次确认 `y` 是整数形式: ```python y = df['target'].astype(int) # 强制转换为整型 ``` 2. **重新生成训练集和测试集**: 如果怀疑数据已经被污染,可以从头开始创建训练集和测试集: ```python X = df.drop('target', axis=1).values # 转换为numpy数组 y = df['target'].values # 同样转换为numpy数组 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 3. **调试输出**: 在调用 `knn.fit()` 之前打印出 `X_train` 和 `y_train` 的部分内容,确认它们确实是数值而不是字符串: ```python print(type(X_train)) # 应该是numpy.ndarray 或 pandas.DataFrame print(X_train[:5]) # 查看前五行 print(y_train[:5]) # 查看前五个标签 ``` 4. **检查数据保存与读取环节**: 如果中途曾经保存过中间结果(例如 CSV 文件),那么需要保证读取回来的数据格式正确无误。特别是要注意不要把类别标签保存成文本格式再读取进来。 按照以上步骤排查后应该能够解决问题。如果还有其他疑问或者问题依旧存在,请提供更多上下文信息以便进一步诊断。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的喵喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值