我想从sklearn
数据集(加利福尼亚州的房屋价格)中加载更大的数据集。由于代理问题(数据集下载已损坏),使用默认命令对我不起作用。
d = datasets.fetch_california_housing()
下载后,我将其放置在datasets.get_data_home()
(/home/username/scikit_learn_data/
)找到的目录中,并将文件放置在该文件夹中以及该目录中的cal_housing文件夹中以及CaliforniaHousing文件夹中,以进行检查所有选项。我还尝试使用data_home参数指定自定义位置。
d = datasets.fetch_california_housing(data_home='/home/username/scikit_learn_data/')
没有任何效果。
如何手动加载数据集?
注意:
要测试手动加载是否有效,请设置download_if_missing=False
答案 0 :(得分:1)
我遇到了同样的问题,因为我的开发环境无法访问Web,因此默认的“ download_if_missing”当然不能工作。
如果遵循该URL,则可以从网络上保存cal_housing.tgz文件。但是fetch_california_housing方法实际上在默认的download_if_missing分支中进行了更多转换,并期望有一个pkz文件(如Vivek上面已经指出的那样)。我在这里找到了创建该.pkz文件的解决方法:(https://github.com/ageron/handson-ml/issues/221)。我在这里重新张贴Auréliens的答案(赞!):
报价: ” 我可以给您一个解决方法:
使用网络浏览器手动下载数据:https://ndownloader.figshare.com/files/5976036 确保下载的文件名为cal_housing.tgz。 执行以下Python代码:
import numpy as np
import os
import tarfile
from sklearn.externals import joblib
from sklearn.datasets.base import _pkl_filepath, get_data_home
archive_path = "cal_housing.tgz" # change the path if it's not in the current directory
data_home = get_data_home(data_home=None) # change data_home if you are not using ~/scikit_learn_data
if not os.path.exists(data_home):
os.makedirs(data_home)
filepath = _pkl_filepath(data_home, 'cal_housing.pkz')
with tarfile.open(mode="r:gz", name=archive_path) as f:
cal_housing = np.loadtxt(
f.extractfile('CaliforniaHousing/cal_housing.data'),
delimiter=',')
# Columns are not in the same order compared to the previous
# URL resource on lib.stat.cmu.edu
columns_index = [8, 7, 2, 3, 4, 5, 6, 1, 0]
cal_housing = cal_housing[:, columns_index]
joblib.dump(cal_housing, filepath, compress=6)
之后,您应该可以使用fetch_california_housing()了,而不会出现任何问题。之所以起作用,是因为上面的代码是fetch_california_housing()在下载数据后首次调用它的方式:它准备数据并将其保存在Scikit-Learn的数据目录(默认为$ HOME / scikit_learn_data)的高速缓存中。下次调用fetch_california_housing()时,它将仅从该目录加载数据,因此无需下载。
希望这会有所帮助, Aurélien
Auréliens报价结束
答案 1 :(得分:0)
另一个选择是:
按上述说明手动下载 cal_housing.tgz 文件,然后将其复制,例如到C:\ Temp。
打开文件[YOUR_PYTHON_PATH] \ Lib \ site-packages \ sklearn \ datasets \ base.py
在函数 _fetch_remote()中,注释掉行 urlretrieve(remote.url,file_path)。然后python不要尝试再次下载文件 cal_housing.tgz 。
开始 d = datasets.fetch_california_housing(data_home ='C:// tmp //'),然后将创建文件 cal_housing_py3.pkz 。< / p>
然后您应该返回步骤3。
我知道这有点丑陋,因为您必须更改内部python软件包文件。但这有效。
答案 2 :(得分:0)
from sklearn.datasets import california_housing
data = california_housing.fetch_california_housing()
calf_hous_df = pd.DataFrame(data= data.data, columns=data.feature_names)
calf_hous_df.head(5)
Out[105]:
MedInc HouseAge AveRooms AveBedrms Population AveOccup Latitude \
0 8.3252 41.0 6.984127 1.023810 322.0 2.555556 37.88
1 8.3014 21.0 6.238137 0.971880 2401.0 2.109842 37.86
2 7.2574 52.0 8.288136 1.073446 496.0 2.802260 37.85
3 5.6431 52.0 5.817352 1.073059 558.0 2.547945 37.85
4 3.8462 52.0 6.281853 1.081081 565.0 2.181467 37.85
Longitude
0 -122.23
1 -122.22
2 -122.24
3 -122.25
4 -122.25