抓住列表的两个不同部分

时间:2014-04-11 13:18:18

标签: python scikit-learn

使用Scikit Learn我在Python中构建了一些基本的情感分类器。我现在正在尝试使用交叉验证技术进行评估。我的数据集包含100,000条正面和负面的推文,名为training_data

每次我需要从整个集合中获取20,000块用于测试,然后使用剩余的180,000进行训练。我遇到的问题是当块不在任何一端时,我如何只获取该块的任何一侧的数据?

我尝试过像

这样的事情
training_data.data[:20000] + training_data.data[40000:]

但它说

  

操作数不能与不同形状一起广播

然而,我认为dataset.data只是一个列表。

这里要求的是training_data.data [1:10]的输出示例:

["@karoliiinem i'm personally following the next 300 people that will follow --& gt; @omgfantasy rt once you're done so i'd know ?\n", '@kristensaywha i know s tupid people\n', 'i might be going shopping tomorrow at the beach ) i hope so\n' , '@_sophieallam cannae wait for a 5 hour train journey \n', 'wifey needs a hug \n', "i'm scared to drive to daytona with this car \n", "@xxiluvdahviexx i'm so sorry\n", "@chooselogoism that sucks i can't see w/o my glasses at all\n", 'x f actor \n']

我想我在列表中寻找某种操作,您可以在其中获取除指定切片之外的所有数据?

2 个答案:

答案 0 :(得分:0)

sklearn.cross_validation.KFold为您生成这些折叠。

from sklearn.cross_validation import KFold
cv = KFold(180000, 9)

返回一个迭代器,它在每一步产生训练和测试索引。如果您的分类符被称为your_classifier,则您的数据(推文)为X而您的目标(情绪)为y,那么您可以使用sklearn.cross_validation.cross_val_score来获取分数所有的折叠:

from sklearn.cross_validation import cross_val_score
scores = cross_val_score(your_classifier, X, y, cv=cv, scoring= ...)

其中scoring是一个非常重要的事情。如果你使用一个天真的得分手,比如精确度,它会计算正确的预测,你的班级必须平衡,或者你必须意识到你的估计师可能只是预测更频繁的班级。如果您想平衡课程,可能还需要查看sklearn.cross_validation.StratifiedKFolddoc)。

答案 1 :(得分:0)

您需要使用cross_validation模块,该模块有许多可以使用的方案,一个是k-fold

我正在从sklearn手册页here复制粘贴:

>>> from sklearn import cross_validation
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([1, 2, 3, 4])
>>> kf = cross_validation.KFold(4, n_folds=2)
>>> len(kf)
2
>>> print(kf)
sklearn.cross_validation.KFold(n=4, n_folds=2)
>>> for train_index, test_index in kf:
...    print("TRAIN:", train_index, "TEST:", test_index)
...    X_train, X_test = X[train_index], X[test_index]
...    y_train, y_test = y[train_index], y[test_index]
TRAIN: [2 3] TEST: [0 1]
TRAIN: [0 1] TEST: [2 3]