我正在学习一些AI课程,并且已经学习了一些我想要实验的基本算法.通过Kaggle,我可以访问包含大量真实数据的多个数据集,Kaggle主持数据分析竞赛.
我曾尝试参加几个比赛以提高我的机器学习技能,但一直无法找到一种好方法来访问我的代码中的数据.Kaggle为csv格式的每个竞赛提供了一个50-200mb的大型数据文件.
在我的代码中加载和使用这些表的最佳方法是什么?我的第一直觉是使用数据库,所以我尝试将csv加载到sqlite中的单个数据库,但这给我的计算机带来了巨大的负担,在提交期间,我的计算机崩溃是很常见的.接下来,我尝试在共享主机上使用mysql服务器,但对它进行查询需要花费很长时间,这使得我的分析代码非常慢.另外,我恐怕会超出我的带宽.
到目前为止,在我的课程中,我的教师通常会清理数据并为我们提供可以完全加载到RAM中的可管理数据集.显然,这对我目前的兴趣是不可能的.请建议我该怎么做.我目前正在使用4GB的macbook和4gb ram以及一个双核2.1Ghz cpu.
顺便说一句,我希望在Python中进行大量的分析,因为我最了解这种语言.我想要一个允许我用这种语言完成所有或几乎所有编码的解决方案.
在阅读了LightGBM关于交叉验证的文档之后,我希望这个社区能够阐明交叉验证结果并改进我们使用LightGBM的预测.我们如何使用字典输出lightgbm.cv来改进我们的预测?
这是一个例子 - 我们使用下面的代码训练我们的cv模型:
cv_mod = lgb.cv(params,
d_train,
500,
nfold = 10,
early_stopping_rounds = 25,
stratified = True)
Run Code Online (Sandbox Code Playgroud)
我们如何使用从上面代码的最佳迭代中找到的参数来预测输出?在这种情况下,cv_mod没有类似的"预测"方法lightgbm.train,并且字典输出lightgbm.cv在使用时会抛出错误lightgbm.train.predict(..., pred_parameters = cv_mod).
我错过了一个重要的转型步骤吗?
我已经在许多kaggle笔记本电脑中看到,人们在使用K-fold验证进行机器学习时都在谈论oof方法。什么是oof,它与k倍验证有关?您还可以建议一些有用的资源来详细了解概念吗
感谢您的帮助!
我按照kaggle facialkeypoints竞赛从输入图像中提取30个面部关键点(x,y).
我如何设置caffe运行回归并产生30维输出?
Input: 96x96 image
Output: 30 - (30 dimensions).
Run Code Online (Sandbox Code Playgroud)
我如何相应地设置caffe?我正在使用EUCLIDEAN_LOSS(平方和)来获得回归输出.这是一个使用caffe的简单逻辑回归模型,但它不起作用.看起来精度图层无法处理多标签输出.
I0120 17:51:27.039113 4113 net.cpp:394] accuracy <- label_fkp_1_split_1
I0120 17:51:27.039135 4113 net.cpp:356] accuracy -> accuracy
I0120 17:51:27.039158 4113 net.cpp:96] Setting up accuracy
F0120 17:51:27.039201 4113 accuracy_layer.cpp:26] Check failed: bottom[1]->channels() == 1 (30 vs. 1)
*** Check failure stack trace: ***
@ 0x7f7c2711bdaa (unknown)
@ 0x7f7c2711bce4 (unknown)
@ 0x7f7c2711b6e6 (unknown)
Run Code Online (Sandbox Code Playgroud)
这是图层文件:
name: "LogReg"
layers {
name: "fkp"
top: "data"
top: "label"
type: HDF5_DATA
hdf5_data_param {
source: "train.txt"
batch_size: 100
} …Run Code Online (Sandbox Code Playgroud) 我收到以下错误
c50代码名为exit,值为1
我在Kaggle提供的巨大数据上这样做
# Importing datasets
train <- read.csv("train.csv", sep=",")
# this is the structure
str(train)
Run Code Online (Sandbox Code Playgroud)
输出: -
'data.frame': 891 obs. of 12 variables:
$ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ...
$ Survived : int 0 1 1 1 0 0 0 0 1 1 ...
$ Pclass : int 3 1 3 1 3 3 1 3 3 2 ...
$ Name : Factor w/ 891 levels "Abbing, Mr. Anthony",..: 109 191 …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行以下kaggle assignmnet.我使用gensim包来使用word2vec.我能够创建模型并将其存储到磁盘.但是当我尝试加载文件时,我收到以下错误.
-HP-dx2280-MT-GR541AV:~$ python prog_w2v.py
Traceback (most recent call last):
File "prog_w2v.py", line 7, in <module>
models = gensim.models.Word2Vec.load_word2vec_format('300features_40minwords_10context.txt', binary=True)
File "/usr/local/lib/python2.7/dist-packages/gensim/models/word2vec.py", line 579, in load_word2vec_format
header = utils.to_unicode(fin.readline())
File "/usr/local/lib/python2.7/dist-packages/gensim/utils.py", line 190, in any2unicode
return unicode(text, encoding, errors=errors)
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)
我发现了类似的问题.但我无法解决问题.我的prog_w2v.py如下.
import gensim
import time
start = time.time()
models = gensim.models.Word2Vec.load_word2vec_format('300features_40minwords_10context.txt', binary=True)
end = time.time()
print …Run Code Online (Sandbox Code Playgroud) 我正在看这个教程:https://www.dataquest.io/mission/74/getting-started-with-kaggle
我得到第9部分,做出预测.在那里,在一个名为titanic的数据框中有一些数据,然后使用以下方式将其分成折叠:
# Generate cross validation folds for the titanic dataset. It return the row indices corresponding to train and test.
# We set random_state to ensure we get the same splits every time we run this.
kf = KFold(titanic.shape[0], n_folds=3, random_state=1)
Run Code Online (Sandbox Code Playgroud)
我不确定它究竟在做什么以及kf是什么样的对象.我试过阅读文档,但没有多大帮助.此外,有三个折叠(n_folds = 3),为什么以后只能访问火车和测试(我怎么知道它们被称为火车和测试)?
for train, test in kf:
Run Code Online (Sandbox Code Playgroud) 我正在尝试查看可以枚举但不能索引的对象中的一些数据。我对 python 还是新手,但我不明白这是怎么可能的。
如果可以枚举它,为什么不能通过与枚举相同的方式访问索引?如果没有,有没有办法单独访问这些项目?
import tensorflow_datasets as tfds
train_validation_split = tfds.Split.TRAIN.subsplit([6, 4])
(train_data, validation_data), test_data = tfds.load(
name="imdb_reviews",
split=(train_validation_split, tfds.Split.TEST),
as_supervised=True)
Run Code Online (Sandbox Code Playgroud)
选择数据集的一个子集
foo = train_data.take(5)
Run Code Online (Sandbox Code Playgroud)
我可以foo用 enumerate迭代:
[In] for i, x in enumerate(foo):
print(i)
Run Code Online (Sandbox Code Playgroud)
产生预期的输出:
0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试对其进行索引时,出现foo[0]此错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-44-2acbea6d9862> in <module>
----> 1 foo[0]
TypeError: 'TakeDataset' object does not support indexing
Run Code Online (Sandbox Code Playgroud) 在 google colab 中,我可以轻松地安装我的 google 驱动器:
from google.colab import drive
drive.mount('/content/gdrive')
Run Code Online (Sandbox Code Playgroud)
然而,在 kaggle 的笔记本中,它给出了这个错误:
KeyError Traceback (most recent call last)
<ipython-input-14-2b128295b616> in <module>
2 # !pip install google-colab
3 from google.colab import drive
----> 4 drive.mount('/content/gdrive')
5 # Set your own project id here
6 # PROJECT_ID = 'your-google-cloud-project'
/opt/conda/lib/python3.6/site-packages/google/colab/drive.py in mount(mountpoint, force_remount, timeout_ms)
80 return
81
---> 82 env = _env()
83 home = env.home
84 root_dir = env.root_dir
/opt/conda/lib/python3.6/site-packages/google/colab/drive.py in _env()
41 home = _os.environ['HOME']
42 root_dir = …Run Code Online (Sandbox Code Playgroud) python google-drive-api jupyter-notebook kaggle google-colaboratory
这个问题真的很奇怪,因为这件事对其他数据集来说效果很好.
完整代码:
import numpy as np
import pandas as pd
import xgboost as xgb
from sklearn.cross_validation import train_test_split
# # Split the Learning Set
X_fit, X_eval, y_fit, y_eval= train_test_split(
train, target, test_size=0.2, random_state=1
)
clf = xgb.XGBClassifier(missing=np.nan, max_depth=6,
n_estimators=5, learning_rate=0.15,
subsample=1, colsample_bytree=0.9, seed=1400)
# fitting
clf.fit(X_fit, y_fit, early_stopping_rounds=50, eval_metric="logloss", eval_set=[(X_eval, y_eval)])
#print y_pred
y_pred= clf.predict_proba(test)[:,1]
Run Code Online (Sandbox Code Playgroud)
最后一行导致下面的错误(提供完整输出):
Will train until validation_0 error hasn't decreased in 50 rounds.
[0] validation_0-logloss:0.554366
[1] validation_0-logloss:0.451454
[2] validation_0-logloss:0.372142
[3] validation_0-logloss:0.309450
[4] validation_0-logloss:0.259002
Traceback (most recent call …Run Code Online (Sandbox Code Playgroud)