在Jupyter Lab中运行加州住房数据集随机森林回归代码时遭遇SSL证书验证失败错误
解决Scikit-learn获取加州住房数据集时的SSL证书验证失败问题
嘿,我之前也碰到过一模一样的问题!这个错误是因为Scikit-learn在自动下载数据集时,你的本地环境没办法验证SSL证书导致的。下面给你几个实用的解决办法,还有个代码小细节要提醒你:
方法1:临时跳过SSL验证(快速测试用)
在代码最开头加上这几行,让Python暂时忽略SSL证书验证:
import ssl ssl._create_default_https_context = ssl._create_unverified_context
把这段代码放在from sklearn.datasets import fetch_california_housing之前,再运行原代码就能正常下载数据集了。不过这只是临时方案,适合快速验证代码逻辑,不建议在生产环境中使用。
方法2:手动下载数据集并本地加载
如果不想关闭SSL验证,你可以手动下载数据集后从本地加载:
- 找到加州住房数据集的官方下载源,手动下载
california_housing.npz文件到本地。 - 修改代码,替换数据集加载部分:
import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_squared_error # 替换成你保存文件的实际路径 data = np.load('/Users/xxx/Downloads/california_housing.npz') X = data['data'] y = data['target'] # 后续训练代码保持不变 X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) rf_reg = RandomForestRegressor(random_state=42) rf_reg.fit(X_train, y_train) y_pred = rf_reg.predict(X_test) mse = mean_squared_error(y_test, y_pred) rmse = np.sqrt(mse) print(rmse) # 这里要注意!你原代码里写的是print(rms),是笔误,得改成rmse
方法3:更新本地SSL证书(长期解决方案)
如果是因为本地证书过期或缺失导致的问题,更新证书就能彻底解决:
- Windows:更新你的Python版本(新版本Python自带更新后的证书),或者手动安装官方根证书包。
- macOS:打开终端,运行对应Python版本的证书安装脚本,比如
/Applications/Python\ 3.10/Install\ Certificates.command(把3.10换成你实际的Python版本号)。 - Linux:通过包管理器重新安装证书,比如Ubuntu/Debian运行
sudo apt-get install --reinstall ca-certificates,CentOS/RHEL运行sudo yum reinstall ca-certificates。
另外一定要注意,你原代码最后一行的print(rms)是笔误,变量名是rmse,不改的话还会报NameError哦!
内容的提问来源于stack exchange,提问作者omersimsir
相关产品推荐
相关产品推荐

