我正在尝试使用SGD对大型数据集进行分类.由于数据太大而无法放入内存,我想使用partial_fit方法来训练分类器.我选择了适合内存的数据集样本(100,000行)来测试拟合与partial_fit:
from sklearn.linear_model import SGDClassifier
def batches(l, n):
for i in xrange(0, len(l), n):
yield l[i:i+n]
clf1 = SGDClassifier(shuffle=True, loss='log')
clf1.fit(X, Y)
clf2 = SGDClassifier(shuffle=True, loss='log')
n_iter = 60
for n in range(n_iter):
for batch in batches(range(len(X)), 10000):
clf2.partial_fit(X[batch[0]:batch[-1]+1], Y[batch[0]:batch[-1]+1], classes=numpy.unique(Y))
Run Code Online (Sandbox Code Playgroud)
然后我用相同的测试集测试两个分类器.在第一种情况下,我得到100%的准确度.据我了解,SGD默认在训练数据上传递5次(n_iter = 5).
在第二种情况下,我必须通过60次数据才能达到相同的准确度.
为什么会出现这种差异(5对60)?或者我做错了什么?
下面的Python代码返回'403':
import requests
url = 'http://bedstardirect.co.uk/star-collection-braemar-double-bedstead.html'
r = requests.get(url)
print r.status_code
Run Code Online (Sandbox Code Playgroud)
但是这个页面是有效的,脚本应该返回'200',下面的perl脚本也是如此:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
my $url = 'http://bedstardirect.co.uk/star-collection-braemar-double-bedstead.html';
$mech->get($url);
print $mech->status,"\n";
Run Code Online (Sandbox Code Playgroud)
我还在Firefox中检查了Firebug,所有请求都有一个'200'状态代码.
我使用Python Requests v1.2.0.
我试图在包含1亿个节点的图形中获取连接组件的列表.对于较小的图形,我通常在Python中使用Networkx模块的connected_components函数,它正是这样做的.但是,使用此模块将具有1亿个节点(及其边缘)的图形加载到内存中将需要大约1.110GB的内存,我没有.另一种方法是使用具有连接组件功能的图形数据库,但我在Python中没有找到任何组件.似乎Dex(API:Java,.NET,C++)具有此功能,但我不是100%肯定.理想情况下,我正在寻找Python的解决方案.非常感谢.